【问题标题】:Export Power BI Report from SharePoint Online从 SharePoint Online 导出 Power BI 报表
【发布时间】:2020-10-16 20:57:07
【问题描述】:

Power BI 报告可以使用内置的导出功能从https://app.powerbi.com/ 页面导出。

我需要从嵌入此报告的 SharePoint Online 页面中提供相同的功能。请告诉我步骤。

【问题讨论】:

    标签: sharepoint powerbi reporting sharepoint-online powerbi-embedded


    【解决方案1】:

    您可以使用Export To File / Export To File In Group API。

    1. 调用 Export-To-File API 时,会触发导出作业。

    2. 触发导出作业后,您可以使用 Polling API (Get Export To File Status / Get Export To File Status In Group) 跟踪作业,直到完成。

    3. 导出作业完成后,轮询 API 调用会返回用于获取文件的 Power BI URL(该 URL 可在 24 小时内使用)。也可以调用Get File Of Export To File/Get File Of Export To File In Group API 下载。

    API 支持并发导出作业请求。您可以同时运行的作业数量取决于您的报告所在的 SKU,详见 this table(即它需要专用容量 - Power BI Premium 或 Power BI Embedded)。

    例如,您可以通过以下方式将 API 与 PowerShell 代码一起使用:

    Import-Module MicrosoftPowerBIMgmt
    $username = "account@example.com" 
    $password = "SuperStrongPassword" | ConvertTo-SecureString -asPlainText -Force
    $groupId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $reportId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $format = "PDF" # or PNG, or PPTX. For paginated reports can be CSV, DOCX, IMAGE (i.e. page definition plus file format - BMP, EMF, etc.), MHTML, XLSX or XML
    $saveToFolder = "D:\"
    
    $credential = New-Object System.Management.Automation.PSCredential($username, $password)
    Connect-PowerBIServiceAccount -Credential $credential
    $settings = @{ includeHiddenPages = $false; locale = "en-us" }
    $powerBIReportConfiguration = @{ settings = $settings }
    $export_body = @{ format = $format; powerBIReportConfiguration = $powerBIReportConfiguration }
    $export_response = Invoke-PowerBIRestMethod -Url "https://api.powerbi.com/v1.0/myorg/groups/$groupId/reports/$reportId/ExportTo" -Method Post -Body ($export_body | ConvertTo-Json)
    $export_response_json = ConvertFrom-Json $export_response
    $exportId = $export_response_json.id
    
    Write-Output "Polling export status..."
    $maxPollCount = 500
    $exportSucceeded = $false
    do
    {
        $maxPollCount = $maxPollCount - 1
        Start-Sleep -Seconds 5
        $status_response = Invoke-PowerBIRestMethod -Url "https://api.powerbi.com/v1.0/myorg/groups/$groupId/reports/$reportId/exports/$exportId" -Method Get
        $status_response_json = ConvertFrom-Json $status_response
        $status = $status_response_json.status
        $percentComplete = $status_response_json.percentComplete
        Write-Output "Status: $status, percent complete: $percentComplete (retries left: $maxPollCount)"
        if ($status -eq "Succeeded")
        {
            $exportSucceeded = $true
            $resourceLocation = $status_response_json.resourceLocation
            $reportName = $status_response_json.reportName
            $resourceFileExtension = $status_response_json.resourceFileExtension
            $outFile = [IO.Path]::Combine($saveToFolder, $reportName + $resourceFileExtension)
        }
    }
    until($exportSucceeded -or $maxPollCount -le 0)
    
    Write-Output "Downloading export..."
    $download_response = Invoke-PowerBIRestMethod -Url $resourceLocation -Method Get -OutFile $outFile
    Write-Output "Download completed."
    Disconnect-PowerBIServiceAccount
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      • 2021-03-16
      • 2021-04-01
      • 2019-09-18
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多