Eksporter Power BI-rapport til fil
exportToFile
API-en aktiverer eksport av en Power BI-rapport ved hjelp av en REST-samtale. Følgende filformater støttes:
- .pptx (PowerPoint)
- .png
- Når du eksporterer til en .png, komprimeres en rapport med flere sider til en .zip fil
- Hver fil i .zip representerer en rapportside
- Sidenavnene er de samme som returverdiene for Hent sider eller Hent sider i gruppe-API-er
Merk
Eksport av en Power BI-rapport til en fil ved hjelp av exportToFile API-en støttes ikke for Premium per bruker (PPU).
Eksempler på bruk
Du kan bruke eksportfunksjonen på flere måter. Her er et par eksempler:
Send for å skrive ut-knappen – Opprett en knapp i programmet når du klikker på utløser en eksportjobb. Jobben kan eksportere den viste rapporten som en .pdf eller en .pptx. Når den er fullført, kan brukeren motta filen som en nedlasting. Ved hjelp av bokmerker kan du eksportere rapporten i en bestemt tilstand, inkludert konfigurerte filtre, slicere og andre innstillinger. Da API-en er asynkron, kan det ta litt tid før filen blir tilgjengelig.
E-postvedlegg – Send en automatisert e-postmelding med angitte intervaller, med en vedlagt .pdf rapport. Dette scenarioet kan være nyttig hvis du vil automatisere sending av en ukentlig rapport til ledere. Hvis du vil ha mer informasjon, kan du se Eksportere og sende en Power BI-rapport via e-post med Power Automate
Bruke API-en
Lisenskrav
- Rapporten du eksporterer, må ligge i et arbeidsområde støttet av en Premium-, Embedded- eller Fabric-kapasitet.
exportToFile
API-en støttes ikke for Premium per bruker (PPU).
Administratorinnstillinger
Før du bruker API-en, må du kontrollere at følgende leierinnstillinger for administratorer er aktivert:
- Eksporter rapporter som PowerPoint-presentasjoner eller PDF-dokumenter – aktivert som standard.
- Eksporter rapporter som bildefiler – kreves bare for .png og deaktivert som standard.
«Gjengivelse»-hendelser
Hvis du vil forsikre deg om at eksporten ikke begynner før gjengivelsen av visualobjektet er ferdig, bruker du API-en for gjengivelseshendelser og starter bare eksporten når gjengivelsen er fullført.
Avspørring
API-en er asynkron. Når exportToFile-API-en kalles, utløses en eksportjobb. Når du har utløst en eksportjobb, kan du bruke avspørring til å spore jobben til den er fullført.
Under avspørring returnerer API-en et tall som representerer mengden arbeid som er fullført. Arbeidet i hver eksportjobb beregnes basert på summen av eksporten i jobben. En eksport inkluderer eksport av ett enkelt visualobjekt eller en side med eller uten bokmerker. Alle eksporter har samme vekt. Hvis eksportjobben for eksempel omfatter eksport av en rapport med 10 sider, og avspørringen returnerer 70, betyr det at API-en behandlet syv av de ti sidene i eksportjobben.
Når eksporten er fullført, returnerer API-kallet for avspørring en Nettadresse for Power BI for å hente filen. URL-adressen er tilgjengelig i 24 timer.
Støttede funksjoner
Denne delen beskriver hvordan du bruker følgende støttede funksjoner:
- Velge hvilke sider som skal skrives ut
- Eksportere en side eller ett enkelt visualobjekt
- Bokmerker
- Filtre
- Godkjenning
- Sikkerhet på radnivå (RLS)
- Databeskyttelse
- Lokalisering
- Dynamisk binding
Velge hvilke sider som skal skrives ut
Angi sidene du vil skrive ut i henhold til hent sider eller Hent sider i gruppeavkastningsverdien . Du kan også angi rekkefølgen på sidene du eksporterer.
Eksportere en side eller ett enkelt visualobjekt
Du kan angi en side eller ett enkelt visualobjekt som skal eksporteres. Sider kan eksporteres med eller uten bokmerker.
Avhengig av eksporttypen må du sende forskjellige attributter til ExportReportPage-objektet . Tabellen nedenfor angir hvilke attributter som kreves for hver eksportjobb.
Merk
Eksport av ett enkelt visualobjekt har samme vekt som å eksportere en side (med eller uten bokmerker). Dette betyr at når det gjelder systemberegninger, har begge operasjonene samme verdi.
Attributt | Side | Enkelt visualobjekt | Kommentarer |
---|---|---|---|
bookmark |
Valgfritt | Bruk denne til å eksportere en side i en bestemt tilstand | |
pageName |
Bruk GetPages REST-API-en eller klient-API-engetPages . |
||
visualName |
Det finnes to måter å få navnet på visualobjektet på:getVisuals . |
Bokmerker
Bokmerker kan brukes til å lagre en rapport i en bestemt konfigurasjon, inkludert brukte filtre og tilstanden til rapportens visualobjekter. Du kan bruke exportToFile-API-en til programmatisk å eksportere bokmerket for en rapport på to måter:
Eksportere et eksisterende bokmerke
Hvis du vil eksportere et eksisterende rapportbokmerke, bruker
name
du egenskapen, en unik identifikator (skiller mellom store og små bokstaver) som du kan få ved hjelp av javascript-API-ene for bokmerkene.Eksporter rapportens tilstand
Hvis du vil eksportere gjeldende status for rapporten, bruker du
state
egenskapen. Du kan for eksempel bruke bokmerketsbookmarksManager.capture
metode til å registrere endringene en bestemt bruker har gjort i en rapport, og deretter eksportere den i gjeldende tilstand ved hjelp avcapturedBookmark.state
.
Merk
Personlige bokmerker og faste filtre støttes ikke.
Filtre
Ved hjelp av reportLevelFilters
PowerBIReportExportConfiguration kan du eksportere en rapport i en filtrert betingelse.
Hvis du vil eksportere en filtrert rapport, setter du inn parameterne for nettadressespørringsstrengen du vil bruke som filter, til ExportFilter. Når du skriver inn strengen, må du fjerne ?filter=
delen av nettadressespørringsparameteren.
Tabellen inneholder noen syntakseksempler på strenger du kan sende til ExportFilter
.
Filtrer | Syntaks | Eksempel |
---|---|---|
En verdi i et felt | Tabell/felt eq 'verdi' | Store/Distrikt eq 'NC' |
Flere verdier i et felt | Tabell/felt i ('verdi1', 'verdi2') | Store/Distrikt i ('NC', 'TN') |
En distinkt verdi i ett felt, og en annen distinkt verdi i et annet felt | Tabell/felt1 eq 'verdi1' og tabell/felt2 eq 'verdi2' | Store/Territory eq 'NC' og Store/Chain eq 'Fashions Direct' |
Autentisering
Du kan godkjenne ved hjelp av en bruker (eller hovedbruker) eller en tjenestekontohaver.
Sikkerhet på radnivå (RLS)
Med Sikkerhet på radnivå (RLS) kan du eksportere en rapport som viser data som bare er synlige for bestemte brukere. Hvis du for eksempel eksporterer en salgsrapport definert med regionale roller, kan du programmatisk filtrere rapporten slik at bare et bestemt område vises.
Hvis du vil eksportere ved hjelp av RLS, må du ha følgende tillatelser:
- Skrivetillatelser for den semantiske modellen rapporten er koblet til
- Bidragsyter eller administrator for arbeidsområdet der rapporten befinner seg
Databeskyttelse
Formatene .pdf og .pptx støtter følsomhetsetiketter. Hvis du eksporterer en rapport med en følsomhetsetikett til en .pdf eller en .pptx, viser den eksporterte filen rapporten med følsomhetsetiketten.
En rapport med en følsomhetsetikett kan ikke eksporteres til en .pdf eller en .pptx ved hjelp av en tjenestekontohaver.
Lokalisering
Når du bruker exportToFile
API-en, kan du sende ønsket nasjonal innstilling. Lokaliseringsinnstillingene påvirker måten rapporten vises på, for eksempel ved å endre formateringen i henhold til den valgte lokale.
Dynamisk binding
Hvis du vil eksportere en rapport mens den er koblet til en annen semantisk modell enn standard semantisk modell, angir du den nødvendige datasett-ID-en i parameteren datasetToBind
når du kaller API-en.
Les mer om dynamisk binding.
Samtidige forespørsler
exportToFile
API-en støtter et begrenset antall samtidige forespørsler. Maksimalt antall samtidige forespørsler som støttes, er 500 per kapasitet. Hvis du vil unngå å overskride grensen og få en for mange forespørsler (429)-feil, kan du enten distribuere belastningen over tid eller på tvers av kapasiteter.
Bare fem sider i en rapport behandles samtidig. Hvis du for eksempel eksporterer en rapport med 50 sider, behandles eksportjobben i 10 sekvensielle intervaller. Når du optimaliserer eksportjobben, bør du vurdere å utføre noen få jobber parallelt.
Kodeeksempler
Når du oppretter en eksportjobb, er det fire trinn å følge:
Denne inndelingen inneholder eksempler for hvert trinn.
Trinn 1 – sende en eksportforespørsel
Det første trinnet er å sende en eksportforespørsel. I dette eksemplet sendes en eksportforespørsel for en bestemt side.
private async Task<string> PostExportRequest(
Guid reportId,
Guid groupId,
FileFormat format,
IList<string> pageNames = null, /* Get the page names from the GetPages REST API */
string urlFilter = null)
{
var powerBIReportExportConfiguration = new PowerBIReportExportConfiguration
{
Settings = new ExportReportSettings
{
Locale = "en-us",
},
// Note that page names differ from the page display names
// To get the page names use the GetPages REST API
Pages = pageNames?.Select(pn => new ExportReportPage(Name = pn)).ToList(),
// ReportLevelFilters collection needs to be instantiated explicitly
ReportLevelFilters = !string.IsNullOrEmpty(urlFilter) ? new List<ExportFilter>() { new ExportFilter(urlFilter) } : null,
};
var exportRequest = new ExportReportRequest
{
Format = format,
PowerBIReportConfiguration = powerBIReportExportConfiguration,
};
// The 'Client' object is an instance of the Power BI .NET SDK
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;
}
Trinn 2 – avstemning
Når du har sendt en eksportforespørsel, kan du bruke avspørring til å identifisere når eksportfilen du venter på, er klar.
private async Task<HttpOperationResponse<Export>> PollExportRequest(
Guid reportId,
Guid groupId,
string exportId /* Get from the PostExportRequest response */,
int timeOutInMinutes,
CancellationToken token)
{
HttpOperationResponse<Export> httpMessage = null;
Export exportStatus = null;
DateTime startTime = DateTime.UtcNow;
const int c_secToMillisec = 1000;
do
{
if (DateTime.UtcNow.Subtract(startTime).TotalMinutes > timeOutInMinutes || token.IsCancellationRequested)
{
// Error handling for timeout and cancellations
return null;
}
// The 'Client' object is an instance of the Power BI .NET SDK
httpMessage = await Client.Reports.GetExportToFileStatusInGroupWithHttpMessagesAsync(groupId, reportId, exportId);
exportStatus = httpMessage.Body;
// You can track the export progress using the PercentComplete that's part of the response
SomeTextBox.Text = string.Format("{0} (Percent Complete : {1}%)", exportStatus.Status.ToString(), exportStatus.PercentComplete);
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 not always populated
var retryAfter = httpMessage.Response.Headers.RetryAfter;
var retryAfterInSec = retryAfter.Delta.Value.Seconds;
await Task.Delay(retryAfterInSec * c_secToMillisec);
}
}
// While not in a terminal state, keep polling
while (exportStatus.Status != ExportState.Succeeded && exportStatus.Status != ExportState.Failed);
return httpMessage;
}
Trinn 3 – hente filen
Når avspørring returnerer en URL-adresse, kan du bruke dette eksemplet til å hente den mottatte filen.
private async Task<ExportedFile> GetExportedFile(
Guid reportId,
Guid groupId,
Export export /* Get from the PollExportRequest response */)
{
if (export.Status == ExportState.Succeeded)
{
// The 'Client' object is an instance of the Power BI .NET SDK
var fileStream = await Client.Reports.GetFileOfExportToFileAsync(groupId, reportId, export.Id);
return new ExportedFile
{
FileStream = fileStream,
FileSuffix = export.ResourceFileExtension,
};
}
return null;
}
public class ExportedFile
{
public Stream FileStream;
public string FileSuffix;
}
Trinn 4 – Bruke filstrømmen
Når du har filstrømmen, kan du håndtere den på den måten som passer best til dine behov. Du kan for eksempel sende den via e-post eller bruke den til å laste ned de eksporterte rapportene.
Eksempel på ende-til-ende
Dette er et eksempel fra ende til ende for eksport av en rapport. Dette eksemplet inneholder følgende faser:
private async Task<ExportedFile> ExportPowerBIReport(
Guid reportId,
Guid groupId,
FileFormat format,
int pollingtimeOutInMinutes,
CancellationToken token,
IList<string> pageNames = null, /* Get the page names from the GetPages REST API */
string urlFilter = null)
{
const int c_maxNumberOfRetries = 3; /* Can be set to any desired number */
const int c_secToMillisec = 1000;
try
{
Export export = null;
int retryAttempt = 1;
do
{
var exportId = await PostExportRequest(reportId, groupId, format, pageNames, urlFilter);
var httpMessage = await PollExportRequest(reportId, groupId, exportId, pollingtimeOutInMinutes, token);
export = httpMessage.Body;
if (export == null)
{
// Error, failure in exporting the report
return null;
}
if (export.Status == ExportState.Failed)
{
// Some failure cases indicate that the system is currently busy. The entire export operation can be retried after a certain delay
// In such cases the recommended waiting time before retrying the entire export operation can be found in the RetryAfter header
var retryAfter = httpMessage.Response.Headers.RetryAfter;
if(retryAfter == null)
{
// Failed state with no RetryAfter header indicates that the export failed permanently
return null;
}
var retryAfterInSec = retryAfter.Delta.Value.Seconds;
await Task.Delay(retryAfterInSec * c_secToMillisec);
}
}
while (export.Status != ExportState.Succeeded && retryAttempt++ < c_maxNumberOfRetries);
if (export.Status != ExportState.Succeeded)
{
// Error, failure in exporting the report
return null;
}
var exportedFile = await GetExportedFile(reportId, groupId, export);
// Now you have the exported file stream ready to be used according to your specific needs
// For example, saving the file can be done as follows:
/*
var pathOnDisk = @"C:\temp\" + export.ReportName + exportedFile.FileSuffix;
using (var fileStream = File.Create(pathOnDisk))
{
exportedFile.FileStream.CopyTo(fileStream);
}
*/
return exportedFile;
}
catch
{
// Error handling
throw;
}
}
Hensyn og begrensninger
- En eksport-API-operasjonsbelastning evalueres som en langsom bakgrunnsoperasjon, som beskrevet i premium kapasitetsbelastningsevaluering.
- Alle relaterte semantiske modeller i rapporten du eksporterer, må ligge på en Premium- eller Embedded-kapasitet, inkludert semantiske modeller med en Direct Query-tilkobling.
- Eksporterte rapporter kan ikke overskride en filstørrelse på 250 MB.
- Når du eksporterer til .png, støttes ikke følsomhetsetiketter.
- Antall eksporter (enkeltvisualobjekter eller rapportsider) som kan inkluderes i én enkelt eksportert rapport, er 50 (ikke inkludert eksport av paginerte rapporter). Hvis forespørselen inneholder flere eksporter, returnerer API-en feil, og eksportjobben avbrytes.
- Personlige bokmerker og faste filtre støttes ikke for eksport av Power BI-rapporter til fil.
exportToFile
API-en eksporterer rapporten med standardverdi hvis den brukes uten bokmerker eller reportLevelFilters.- Eksport av en Power BI-rapport som er koblet til én eller flere sammensatt semantiske modeller, som har minst én ekstern datakilde med enkel pålogging (SSO) aktivert, støttes ikke. Når du eksporterer, kan det hende at visualobjekter ikke gjengis på riktig måte.
- Power BI-visualobjektene som er oppført her, støttes ikke. Når du eksporterer en rapport som inneholder disse visualobjektene, gjengis ikke de delene av rapporten som inneholder disse visualobjektene, og viser et feilsymbol.
- Uncertified Power BI egendefinerte visualobjekter
- R-visualobjekter
- PowerApps
- Python-visualobjekter
- Power Automate
- Visualobjekt for paginert rapport
- Visio
- ArcGIS-visualobjekter
Relatert innhold
Se gjennom hvordan du bygger inn innhold for kundene og organisasjonen:
- Eksporter paginert rapport til fil
- Bygg inn for kundene dine
- Bygg inn for organisasjonen
- Eksportere og sende en Power BI-rapport via e-post med Power Automate
Flere spørsmål? Prøv Power BI-fellesskap