Экспорт отчета Power BI из SharePoint Online

#sharepoint #powerbi #reporting #sharepoint-online #powerbi-embedded

#sharepoint #powerbi #отчетность #sharepoint-online #powerbi-встроенный

Вопрос:

Отчет Power BI можно экспортировать из https://app.powerbi.com / страница с использованием встроенной функции экспорта.

У меня есть требование предоставить ту же функциональность на странице SharePoint Online, где встроен этот отчет. Пожалуйста, дайте мне знать шаги.

Ответ №1:

Вы можете использовать Экспорт в файл / Экспорт в файл в Group API.

  1. При вызове API экспорта в файл запускается задание экспорта.

  2. После запуска задания экспорта вы можете использовать API опроса (получить статус экспорта в файл / Получить статус экспорта в файл в группе), чтобы отслеживать задание до его завершения.

  3. По завершении задания экспорта вызов API опроса возвращает URL-адрес Power BI для получения файла (URL-адрес доступен в течение 24 часов). Вы также можете загрузить его, вызвав Get File экспорта в файл / Get File экспорта в файл в Group API.

API поддерживает одновременные запросы на экспорт заданий. Количество заданий, которые вы можете запускать одновременно, зависит от артикула, в котором находится ваш отчет, как подробно описано в этой таблице (т. Е. Для этого требуется выделенная емкость — 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