Vermijd time-out fout bij Power BI OData download

Go to English version.

Een van de langstlopende threads is timeout fouten op Power BI bij het downloaden van bedrijfsgegevens met behulp van de OData feed van een Invantive Cloud bron database. De time-outs op de OData-connector gebeuren zowel met Microsoft Power BI Desktop als vanuit Power BI Service. De Azure Data Factory Connector genereert beduidend minder vragen, maar heeft minder gebruikers en een meer technisch georiënteerd publiek.

De volgende video laat zien hoe u snel de time-out kunt verhogen bij time-out fouten met Power BI en OData:

De lengte van de thread rechtvaardigt een wiki waarin de tot december 2022 verzamelde kennis over de fout wordt samengevat over:

OData: Request failed: The operation has timed out

Steun een structurele oplossing

Steun ons idee in de PowerBI community met een upvote om dit probleem structureel op te lossen: https://ideas.powerbi.com/ideas/idea/?ideaid=989055f7-6495-ec11-826d-501ac50aa35e.

An overview of all open Power BI ideas for Invantive Cloud can be found at Power BI verbetersuggesties.

Wat veroorzaakt een OData time-out in Power BI?

De OData time-out geeft aan dat het consumerende programma (Microsoft Power BI Desktop en/of Power BI Service) langer heeft moeten wachten dan een vastgestelde maximale time-out op de volledige gegevensset om te downloaden.

Een OData-time-out kan zich voordoen in Power BI Desktop en Power BI Service, zelfs wanneer de gegevensdownload gestaag vorderde, maar niet snel genoeg om binnen de tijdslimiet te voltooien.

Wat is de standaard time-out van een OData query in Power BI?

De standaardwaarde voor time-out van een OData-query is 10 minuten bij gebruik van de standaard Microsoft OData-feedconnector in Power BI.

Hoe verander ik de OData query time-out?

Er is geen gecentraliseerde of rapport-centrale oplossing om de standaardwaarde voor timeout van 10 minuten te verhogen naar een hogere waarde. In de Geavanceerde Editor van Power BI kan de time-out waarde per OData query gewijzigd worden door , Timeout=#duration(days,hours,minutes,seconds) toe te voegen aan het OData.Feed statement.

Bijvoorbeeld, om de time-out te verhogen naar 4 uur moet de volgende query:

    Bron = OData.Feed("https://bridge-online.cloud/3279/odata4/", null, [Implementation="2.0"]),

gewijzigd worden in:

    Bron = OData.Feed("https://bridge-online.cloud/3279/odata4/", null, [Implementation="2.0", Timeout=#duration(0,4,0,0)]),

Het is ook verstandig om direct opties op te nemen om null-waarden over te slaan om de downloadprestaties te verbeteren (zoals beschreven in Snellere OData downloads met kleinere omvang met kleine aanpassing in Power BI), wat leidt tot:

    Bron = OData.Feed("https://bridge-online.cloud/3279/odata4/", null, [Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls, Headers=[Referer = "enter-your-chosen-id-for-the-source" ], Timeout=#duration(0,4,0,0)]),

De syntax van #duration wordt gegeven in #duration - PowerQuery M | Microsoft Learn. M is de programmeertaal die gebruikt wordt door Power Query, de motor die de gegevens transformeert voor weergave in Power BI. Power Query is ook beschikbaar als een extensie voor Excel, die vertrouwt op Excel voor het weergeven en grafisch weergeven van de waarden.

Het wordt aanbevolen om de nieuwe time-out waarde met #duration toe te voegen aan alle OData feeds in alle datasets en Power BI rapporten.

De waarde voor enter-your-chosen-id-for-the-source kan vrij worden gekozen. Het wordt aanbevolen om een waarde te kiezen die u in staat stelt om individuele rapporten of data sets te relateren aan een download die zichtbaar is in Invantive Bridge Online Monitoring. De Power BI-bestandsnaam is vaak een goede keuze als die de betekenis van het dashboard goed weergeeft. Binnen Invantive Bridge Online Monitoring is de waarde van de Referer-header zichtbaar zowel bij de details van het verzoek als in de lijst van verzoeken.

Merk op dat ook andere koppen kunnen worden gewijzigd:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Cache-Control
  • Content-Type
  • If-Modified-Since
  • Prefer
  • Range
  • Referer

Wat zijn de maximale time-out waarden voor de OData download?

De maximale time-outwaarde voor een OData download die kan worden ingesteld varieert met het product en (voor Power BI) met het abonnementstype. Voor Power BI Pro is de maximale OData time-out 120 minuten. Voor Power BI Premium per gebruiker (PPU) en Power BI Premium is dit 300 minuten (bron).

Voor dataflows en andere OData-consumenten kunnen andere maximumwaarden gelden. Voor dataflows is dat 2 uur voor een tabel, 3 uur voor een dataflow en 24 uur met Premium.

Hoe kan ik zien welke Power BI queries zijn mislukt als gevolg van een OData timeout?

De Invantive Bridge Online Monitoring geeft per OData verzoek weer of de download is geannuleerd als gevolg van een time-out. De typische fouten zijn:

itgenpmr003:
The data download was cancelled by the user.
Query the data again to retrieve the data when deemed necessary. Optimize your query first in case of a time-out.

en

A task was canceled.

Een OData time-out deed zich typisch voor wanneer de kolom “Duur” een waarde weergaf die dicht bij 600 seconden lag, zeg plus/minus 10 seconden.

In een toekomstige versie zou de foutcode kunnen gedifferentieerd worden wanneer de timing aangeeft dat niet de gebruiker de download annuleerde, maar dat het Power BI-programma dit deed op basis van de time-out die gespecificeerd werd in de OData-query in de Geavanceerd Editor.

Waarom duurt het downloaden van OData zo lang?

Met Invantive Cloud downloaden gebruikers vaak data van honderden of duizenden bedrijven als één grote stroom, of een enkel zeer groot bedrijf in één stroom. We hebben downloads gezien van een ongecomprimeerde grootte van meer dan 100 GB. Het verzamelen van deze hoeveelheden data uit cloudbronnen zoals Twinfield of Exact Online kan aanzienlijk veel tijd in beslag nemen, zelfs als de clouddatabron snel is (wat zeker niet altijd het geval is).

Bovendien is Invantive Cloud real-time: pas als een vraag gesteld wordt, wordt de data verzameld. Alleen als exact dezelfde vraag meerdere keren gesteld wordt zal die beantwoord worden uit de cache. Bij de database-instellingen staat de tijd (in seconden) gedurende welke het oorspronkelijke antwoord teruggegeven wordt. Meestal is dat 16 uur, maar afhankelijk van het abonnement, zijn veel lagere waarden tot enkele minuten geen uitzondering. Technisch is er zelfs geen enkele reden om geen cache te gebruiken, maar dit vertraagt de werking wel. Zie Differentieer OData4 cachegedrag met Power BI voor meer informatie over de caches.

De Invantive Cloud is gebaseerd op een pull-principe om bijna real-time data op te halen: zodra een bedrijfsgebeurtenis is geregistreerd in uw cloud applicatie kan het beschikbaar zijn in uw Power BI rapporten. Om te voorkomen dat cloudapplicaties worden overbelast met continue verzoeken zijn veel technieken ingebouwd, waaronder uitgebreide caching.

Een van de methoden om de downloadprestaties drastisch te verbeteren is het pull-principe los te laten, evenals het bijna real-time karakter van bedrijfsrapportages. Met hulpmiddelen zoals pre-loading kunt u de gegevens op netwerksnelheid downloaden. Als alternatief kunt u, door de rapporten te optimaliseren zoals hieronder beschreven, toch bijna real-time rapportage verkrijgen in combinatie met betrouwbare rapportage.

Waar kan ik deze “Geavanceerde Editor” vinden in Power BI?

De “Geavanceerde Editor” is te vinden in Power BI via het venster dat verschijnt wanneer u “Gegevens transformeren” selecteert in het lint:

Gegevens transformeren in Power BI Desktop

De geselecteerde “Advanced Editor” op een query:

Hoe stel ik de time-out al in bij de eerste download?

De “Gevanaceerde Editor” is ook bereikbaar vanaf de Navigator voordat de tabel de eerste keer volledig geladen wordt. Hiermee kan meteen het datavolume sterk beperkt worden dankzij PowerBI’s query-folding door een filterstap toe te voegen direct na de download (zodat PowerBI’s query-folding het filter kan doorsturen naar de server), en de time-out zoals boven beschreven in te stellen:

Kan de gegevens nog steeds niet downloaden, zelfs niet bij de maximale OData-feed time-out

Wanneer de data niet volledig gedownload kan worden bij de maximale OData feed timeout, zijn er verschillende alternatieven beschikbaar om de limieten te verlengen en/of de download sneller te laten voltooien:

OData download voltooid, maar nog steeds timeout in Power BI Service

Zo nu en dan geeft de Bridge Online Monitoring aan dat een download succesvol en soms zelfs zeer snel is voltooid. Maar de Power BI Service (of soms de Power BI Desktop) meldt een time-out of een fout.

Dit probleem treedt op wanneer het gedownloade gegevensvolume de interne expliciete of impliciete limieten voor het gegevensvolume overschrijdt. Het is niet ongewoon dat de Power BI Service de grote OData-download enkele seconden later opnieuw en opnieuw uitvoert.

In de toekomst zouden continu herhalende downloads kunnen worden geannuleerd en geblokkeerd, maar momenteel worden ze handmatig gedetecteerd en wordt in dat geval een handmatige blokkering op de account toegepast.

De eerste stap om dit probleem op te lossen is het optimaliseren van de rapporten. Upgrade a.u.b. naar een uitgebreider Power BI abonnementsplan wanneer alleen optimalisatie niet voldoende helpt om de OData feed de dataset correct te laten laden.

Voor de nabije toekomst werken wij aan een idee om de databases dagelijks op de achtergrond te verversen. Voor meer informatie zie Daily open and query databases to check consistency and rotate refresh tokens.

Waar vind ik “change-to-your-unique-id-for-the-source”?

Voor change-to-your-unique-id-for-the-source kan een willekeurige tekst voor gekozen worden die helpt om de relatie te leggen tussen de informatie op Invantive Bridge Online Monitoring en het rapport. Daarmee wordt het zoeken naar oorzaak-gevolgverbanden veel eenvoudiger in complexe omgevingen.

Tekst is aangepast.