Export stránkované sestavy do souboru
Rozhraní exportToFile
API umožňuje exportovat stránkovanou sestavu Power BI pomocí volání REST. Podporují se následující formáty souborů:
.pptx (PowerPoint)
.pdf (a přístupné PDF nebo PDF/UA)
.xlsx (Excel)
.docx (Word)
.Csv
.Xml
.Mhtml
Obrázek
Při exportu do obrázku nastavte formát obrázkuOutputFormat
pomocí nastavení formátu. PodporovanéOutputFormat
hodnoty jsou:- .tiff (výchozí)
- .Bmp
- .Emf
- .gif
- .jpeg
- .png
Příklady použití
Funkci exportu můžete použít různými způsoby. Tady je několik příkladů:
Tlačítko Odeslat k tisku – V aplikaci vytvořte tlačítko, které po kliknutí na aktivuje úlohu exportu. Úloha může exportovat zobrazenou sestavu jako soubor .pdf nebo .pptx. Po dokončení může uživatel soubor přijmout jako stažení. Pomocí parametrů sestavy a nastavení formátu můžete sestavu exportovat do určitého stavu, včetně filtrovaných dat, vlastních velikostí stránek a dalších nastavení specifických pro formát. Vzhledem k tomu, že je rozhraní API asynchronní, může být soubor k dispozici až po určité době.
Příloha e-mailu – v nastavených intervalech pošlete automatizovaný e-mail s připojenou sestavou .pdf. Tento scénář může být užitečný, pokud chcete automatizovat odesílání týdenních sestav vedoucím pracovníkům.
Použití rozhraní API
Požadavky na licenci
- Sestava, kterou exportujete, se musí nacházet v pracovním prostoru s podporou kapacity Premium, Embedded nebo Fabric.
- Rozhraní
exportToFile
API má omezenou podporu v premium na uživatele (PPU).
Vykreslování událostí
Abyste měli jistotu, že export nezačne před dokončením vykreslování vizuálu, použijte rozhraní API událostí vykreslování a export zahajte pouze po dokončení vykreslování.
cyklické dotazování
Rozhraní API je asynchronní. Při volání rozhraní API exportToFile aktivuje úlohu exportu. Po aktivaci úlohy exportu můžete pomocí dotazování sledovat úlohu, dokud se nedokončí.
Po dokončení exportu volání rozhraní API pro dotazování vrátí adresu URL Power BI pro získání souboru. Adresa URL je k dispozici po dobu 24 hodin.
Podporované funkce
Nastavení formátu
Zadejte různá nastavení formátu pro každý formát souboru. Podporované vlastnosti a hodnoty jsou ekvivalentní parametrům informace o zařízení pro parametry adresy URL stránkované sestavy.
Tady jsou dva příklady: Prvním je export prvních čtyř stránek sestavy pomocí velikosti stránky sestavy do souboru .pptx. Druhým příkladem je export třetí stránky sestavy do souboru .jpeg.
Export prvních čtyř stránek do souboru .pptx
{
"format": "PPTX",
"paginatedReportConfiguration":{
"formatSettings":{
"UseReportPageSize": "true",
"StartPage": "1",
"EndPage": "4"
}
}
}
Export třetí stránky do souboru .jpeg
{
"format": "IMAGE",
"paginatedReportConfiguration":{
"formatSettings":{
"OutputFormat": "JPEG",
"StartPage": "3",
"EndPage": "3"
}
}
}
Parametry sestavy
Rozhraní API můžete použít exportToFile
k programovému exportu sestavy se sadou parametrů sestavy. To se provádí pomocí funkcí parametru sestavy.
Tady je příklad nastavení hodnot parametrů sestavy.
{
"format": "PDF",
"paginatedReportConfiguration":{
"parameterValues":[
{"name": "State", "value": "WA"},
{"name": "City", "value": "Seattle"},
{"name": "City", "value": "Bellevue"},
{"name": "City", "value": "Redmond"}
]
}
}
Ověřování
Můžete se ověřit pomocí uživatele (nebo hlavního uživatele) nebo instančního objektu.
Zabezpečení na úrovni řádků (RLS)
Při použití sémantického modelu Power BI, který má definované zabezpečení na úrovni řádků (RLS) jako zdroj dat, můžete exportovat sestavu zobrazující data, která jsou viditelná jenom určitým uživatelům. Pokud například exportujete sestavu prodeje definovanou s regionálními rolemi, můžete sestavu programově filtrovat tak, aby se zobrazila jenom určitá oblast.
Pokud chcete exportovat pomocí zabezpečení na úrovni řádků, musíte mít oprávnění ke čtení pro sémantický model Power BI, který sestava používá jako zdroj dat.
Tady je příklad zadání efektivního uživatelského jména pro zabezpečení na úrovni řádků.
{
"format": "PDF",
"paginatedReportConfiguration":{
"identities": [
{"username": "john@contoso.com"}
]
}
}
Jednotné přihlašování SQL a Dataverse (SSO)
V Power BI máte možnost nastavit OAuth s jednotným přihlašováním. Když to uděláte, přihlašovací údaje pro uživatele, který sestavu zobrazuje, se použijí k načtení dat. Přístupový token v hlavičce požadavku se nepoužívá pro přístup k datům. Token musí být předán s efektivní identitou v těle příspěvku.
Získání správného přístupového tokenu pro prostředek, ke kterému chcete získat přístup, může být někdy složité.
- V případě Azure SQL je
https://database.windows.net
prostředek . - Pro Dataverse je
https://
prostředek adresou vašeho prostředí. Napříkladhttps://contoso.crm.dynamics.com
.
Přístup k rozhraní API tokenu pomocí metody AuthenticationContext.AcquireTokenAsync .
Tady je příklad pro zadání efektivní identity (uživatelského jména) pomocí přístupového tokenu.
{
"format":"PDF",
"paginatedReportConfiguration":{
"formatSettings":{
"AccessiblePDF":"true",
"PageHeight":"11in",
"PageWidth":"8.5in",
"MarginBottom":"2in"
},
"identities":[
{
"username":"john@contoso.com",
"identityBlob": {
"value": "eyJ0eX....full access token"
}
}
]
}
}
Souběžné požadavky
Podporuje exportToFile
omezený počet souběžných požadavků. Maximální počet souběžných žádostí o vykreslení stránkované sestavy je 500. Pokud se chcete vyhnout překročení limitu a získání chyby Příliš mnoho požadavků (429), distribuujte zatížení v průběhu času nebo napříč kapacitami.
V případě premium na uživatele (PPU) exportToFile
rozhraní API umožňuje v pětiminutovém intervalu jenom jeden požadavek. Více požadavků v pětiminutovém okně způsobí chybu Příliš mnoho požadavků (429).
Příklady kódu
Sadu API Power BI SDK použitou v příkladech kódu si můžete stáhnout zde.
Při vytváření úlohy exportu je potřeba provést tři kroky:
- Odeslání žádosti o export
- Dotazování.
- Načítá se soubor.
Tato část obsahuje příklady pro každý krok.
Krok 1 – odeslání žádosti o export
Prvním krokem je odeslání žádosti o export. V tomto příkladu se odešle požadavek na export pro konkrétní rozsah stránek, velikost a hodnoty parametrů sestavy.
private async Task<string> PostExportRequest(
Guid reportId,
Guid groupId)
{
// For documentation purposes the export configuration is created in this method
// Ordinarily, it would be created outside and passed in
var paginatedReportExportConfiguration = new PaginatedReportExportConfiguration()
{
FormatSettings = new Dictionary<string, string>()
{
{"PageHeight", "14in"},
{"PageWidth", "8.5in" },
{"StartPage", "1"},
{"EndPage", "4"},
},
ParameterValues = new List<ParameterValue>()
{
{ new ParameterValue() {Name = "State", Value = "WA"} },
{ new ParameterValue() {Name = "City", Value = "Redmond"} },
},
};
var exportRequest = new ExportReportRequest
{
Format = FileFormat.PDF,
PaginatedReportExportConfiguration = paginatedReportExportConfiguration,
};
var export = await Client.Reports.ExportToFileInGroupAsync(groupId, reportId, exportRequest);
// Save the export ID, you'll need it for polling and getting the exported file
return export.Id;
}
Krok 2 – dotazování
Po odeslání žádosti o export použijte dotazování, abyste zjistili, kdy je soubor exportu, na který čekáte, připravený.
private async Task<Export> PollExportRequest(
Guid reportId,
Guid groupId,
string exportId /* Get from the ExportToAsync response */,
int timeOutInMinutes,
CancellationToken token)
{
Export exportStatus = null;
DateTime startTime = DateTime.UtcNow;
const int secToMillisec = 1000;
do
{
if (DateTime.UtcNow.Subtract(startTime).TotalMinutes > timeOutInMinutes || token.IsCancellationRequested)
{
// Error handling for timeout and cancellations
return null;
}
var httpMessage =
await Client.Reports.GetExportToFileStatusInGroupWithHttpMessagesAsync(groupId, reportId, exportId);
exportStatus = httpMessage.Body;
if (exportStatus.Status == ExportState.Running || exportStatus.Status == ExportState.NotStarted)
{
// The recommended waiting time between polling requests can be found in the RetryAfter header
// Note that this header is only populated when the status is either Running or NotStarted
var retryAfter = httpMessage.Response.Headers.RetryAfter;
var retryAfterInSec = retryAfter.Delta.Value.Seconds;
await Task.Delay(retryAfterInSec * secToMillisec);
}
}
// While not in a terminal state, keep polling
while (exportStatus.Status != ExportState.Succeeded && exportStatus.Status != ExportState.Failed);
return exportStatus;
}
Krok 3 – získání souboru
Jakmile dotazování vrátí adresu URL, použijte tento příklad k získání přijatého souboru.
private async Task<ExportedFile> GetExportedFile(
Guid reportId,
Guid groupId,
Export export /* Get from the GetExportStatusAsync response */)
{
if (export.Status == ExportState.Succeeded)
{
var httpMessage =
await Client.Reports.GetFileOfExportToFileInGroupWithHttpMessagesAsync(groupId, reportId, export.Id);
return new ExportedFile
{
FileStream = httpMessage.Body,
ReportName = export.ReportName,
FileExtension = export.ResourceFileExtension,
};
}
return null;
}
public class ExportedFile
{
public Stream FileStream;
public string ReportName;
public string FileExtension;
}
Kompletní příklad
Toto je kompletní příklad pro export sestavy. Tento příklad zahrnuje následující fáze:
- Odeslání žádosti o export
- Dotazování.
- Načítá se soubor.
private async Task<ExportedFile> ExportPaginatedReport(
Guid reportId,
Guid groupId,
int pollingtimeOutInMinutes,
CancellationToken token)
{
try
{
var exportId = await PostExportRequest(reportId, groupId);
var export = await PollExportRequest(reportId, groupId, exportId, pollingtimeOutInMinutes, token);
if (export == null || export.Status != ExportState.Succeeded)
{
// Error, failure in exporting the report
return null;
}
return await GetExportedFile(reportId, groupId, export);
}
catch
{
// Error handling
throw;
}
}
Úvahy a omezení
Export stránkované sestavy, která má jako zdroj dat sémantický model Power BI, se nepodporuje v následujících případech:
- Volající je profil instančního objektu.
- Jeden ze zdrojů dat sémantického modelu je nakonfigurovaný s povoleným jednotným přihlašováním (SSO) a byla zadána efektivní identita.
- Sémantický model Power BI má DirectQuery do služby Azure Analysis Services nebo do jiného sémantického modelu Power BI a byla poskytována efektivní identita.
Export stránkované sestavy, která má zdroj dat služby Azure Analysis Services nakonfigurovaný s povoleným jednotným přihlašováním, se nepodporuje v následujících případech:
- Volající je profil instančního objektu.
- Volající je hlavní uživatel a byla poskytována efektivní identita.
Pokud chcete exportovat stránkovanou sestavu s efektivní identitou, musí být uživatelské jméno existujícím uživatelem z ID Microsoft Entra vašeho tenanta.
Export sestavy je omezený na 60 minut, což odpovídá životnosti přístupového tokenu uživatele. Pokud při exportu velkých objemů dat dojde k chybě časového limitu za 60minutovou značku, zvažte snížení množství dat pomocí vhodných filtrů.
Hypertextový odkaz URL sdílené složky (cesta /UNC) nefunguje při exportu publikované stránkované sestavy na služba Power BI online.
Související obsah
Přečtěte si, jak vložit obsah pro vaše zákazníky a vaši organizaci: