可以使用内置的导出功能从https://app.powerbi.com/页导出Power BI报告。
我需要在嵌入此报告的SharePoint Online页面中提供相同的功能。请让我知道步骤。
答案 0 :(得分:1)
您可以使用Export To File / Export To File In Group API。
调用Export-To-File API时,它会触发导出作业。
触发导出作业后,您可以使用轮询API(Get Export To File Status / Get Export To File Status In Group)跟踪作业,直到完成。
导出作业完成后,轮询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