De gegevensdownload werd geannuleerd na 5 minuten, 59 seconden, waarschijnlijk door de gebruiker

Nu krijg ik volgende foutboodschap. Het rapport werkte een aantal maanden geleden nog wel, plots krijg ik onderstaande boodschap via de monitor. Ik heb alle stappen doorlopen in de Power BI tuning link, dus geen enkel idee wat dit juist veroorzaakt.

De gegevensdownload werd geannuleerd na 5 minuten, 59 seconden, waarschijnlijk door de gebruiker.
Optimaliseer uw query zoals beschreven op Overzicht van Power BI-technieken om prestaties en downloadtijd te verbeteren - invantive.
Voer de query vervolgens opnieuw uit.
(/acme-teamleader-focus/odata4/Teamleader.V2Flat.ProjectsAll@tlr?$select=id%2Creference%2Ccustomer_id).

Deze melding kan meerdere terechte maar ook vermijdbare oorzaken hebben.

Kunt u aangeven welke meldingscode er bij staat (itgenxxx999)?

Kunt u het probleem opwekken en dan het verzoek ID (lang getal met letters en cijfers) uit de titel van het request in de Bridge Online Monitoring toevoegen?

Foutcode is itgenboe161
Verzoek id:80000170-0002-e600-b63f-84710c7967bb

Deze specifieke download heeft de melding:

De gegevensdownload werd geannuleerd na 10 minuten, 36 seconden, waarschijnlijk door de gebruiker.
Optimaliseer uw query zoals beschreven op Overzicht van Power BI-technieken om prestaties en downloadtijd te verbeteren - invantive.
Voer de query vervolgens opnieuw uit.
(itgenboe161, cc48e8fc-a650-4a0e-8141-3d26224a1ee6)

Advies is om de aanbevolen stappen uit te voeren, inclusief verhogen van de standaard time-out van 10 minuten.

Deze zaken heb ik reeds uitgevoerd. De timeout in Power BI staat als volgt ingesteld:

[Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls,Headers=[Referer = "Projecten" ],Timeout=#duration(0,4,0,0)]

Dit lijkt me dus niet het issue. Graag verder naar kijken. Het zou niet mogen dat Power BI vastloopt vanwege het laden van 3000 (!) project lijnen.

De instelling lijkt niet door Power BI overgenomen te worden.

Kunt u de gebruikte M-code uit de Geavanceerde Editor toevoegen als antwoord?

let
    Bron = OData.Feed("https://bridge-online.cloud/acme-teamleader-focus/odata4", null,[Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls,Headers=[Referer = "Projecten" ],Timeout=#duration(0,4,0,0)]),
    #"Teamleader V2Flat ProjectsAll@tlr_table" = Bron{[Name="Teamleader.V2Flat.ProjectsAll@tlr",Signature="table"]}[Data],
    #"Andere kolommen verwijderd" = Table.SelectColumns(#"Teamleader V2Flat ProjectsAll@tlr_table",{"id", "reference", "customer_id"}),
     #"Query's samengevoegd" = Table.NestedJoin(#"Andere kolommen verwijderd", {"customer_id"}, #"Klanten&Contacten", {"KlantNummerTL"}, "Klanten", JoinKind.LeftOuter),
    #"Klanten uitgevouwen" = Table.ExpandTableColumn(#"Query's samengevoegd", "Klanten", {"KlantNaam"}, {"KlantNaam"}),
    #"Namen van kolommen gewijzigd" = Table.RenameColumns(#"Klanten uitgevouwen",{{"reference", "ProjectNummer"}})
in
    #"Namen van kolommen gewijzigd"

En deze is voor tijdsregistratie (die faalt ook)

let
    Bron = OData.Feed("https://bridge-online.cloud/acme-teamleader-focus/odata4", null, [Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls,Headers=[Referer = "Tijdsregistratie" ],Timeout=#duration(0,4,0,0)]),
    #"Teamleader V2 TimeTracking@tlr_table" = Bron{[Name="Teamleader.V2.TimeTracking@tlr",Signature="table"]}[Data],
    #"Andere kolommen verwijderd" = Table.SelectColumns(#"Teamleader V2 TimeTracking@tlr_table",{"user_id", "work_type_id", "started_on", "duration", "description", "subject_type", "subject_id", "invoiceable"}),
    #"Query's samengevoegd" = Table.NestedJoin(#"Andere kolommen verwijderd", {"work_type_id"}, WorkType, {"id"}, "WorkType", JoinKind.LeftOuter),
    #"WorkType uitgevouwen" = Table.ExpandTableColumn(#"Query's samengevoegd", "WorkType", {"name"}, {"name"}),
    #"Query's samengevoegd1" = Table.NestedJoin(#"WorkType uitgevouwen", {"subject_id"}, #"Milestones - fases", {"id"}, "Milestones - fases", JoinKind.LeftOuter),
    #"Milestones - fases uitgevouwen" = Table.ExpandTableColumn(#"Query's samengevoegd1", "Milestones - fases", {"name", "ProjectNummer"}, {"Fase", "ProjectNummer"}),
    #"Query's samengevoegd6" = Table.NestedJoin(#"Milestones - fases uitgevouwen", {"user_id"}, Users_V1, {"id_v2"}, "Users_V1", JoinKind.LeftOuter),
    #"Users_V1 uitgevouwen" = Table.ExpandTableColumn(#"Query's samengevoegd6", "Users_V1", {"name", "title"}, {"UserNaam", "function"}),
    #"Kolommen verwijderd" = Table.RemoveColumns(#"Users_V1 uitgevouwen",{"user_id", "work_type_id", "subject_type", "subject_id"}),
    #"Kolom gedupliceerd" = Table.DuplicateColumn(#"Kolommen verwijderd", "started_on", "started_on - Kopie"),
    #"Geëxtraheerd jaar" = Table.TransformColumns(#"Kolom gedupliceerd",{{"started_on - Kopie", Date.Year, Int64.Type}}),
    #"Query's samengevoegd3" = Table.NestedJoin(#"Geëxtraheerd jaar", {"started_on - Kopie", "function"}, Uurkost, {"Jaar", "Rol"}, "Uurkost", JoinKind.LeftOuter),
    #"Uurkost uitgevouwen" = Table.ExpandTableColumn(#"Query's samengevoegd3", "Uurkost", {"Uurkost"}, {"Uurkost.Uurkost"}),
    #"Deling ingevoegd" = Table.AddColumn(#"Uurkost uitgevouwen", "Delen", each [duration] / 3600, type number),
    #"Aangepaste kolom toegevoegd" = Table.AddColumn(#"Deling ingevoegd", "Aangepast", each [Delen]*[Uurkost.Uurkost]),
    #"Namen van kolommen gewijzigd" = Table.RenameColumns(#"Aangepaste kolom toegevoegd",{{"Delen", "#Uur"}, {"duration", "#Seconden"}, {"Uurkost.Uurkost", "Kost/U"}, {"Aangepast", "Bedrag"}}),
    #"Type gewijzigd" = Table.TransformColumnTypes(#"Namen van kolommen gewijzigd",{{"Bedrag", type number},{"started_on", type date}}),
    #"Namen van kolommen gewijzigd1" = Table.RenameColumns(#"Type gewijzigd",{{"UserNaam", "Werknemer"}, {"function", "Rol"}, {"invoiceable", "Factureerbaar"}, {"name", "UurType"}, {"description", "Omschrijving"}, {"started_on", "Datum"}}),
    #"Kolommen verwijderd1" = Table.RemoveColumns(#"Namen van kolommen gewijzigd1",{"started_on - Kopie"}),
    #"Aangepaste kolom toegevoegd1" = Table.AddColumn(#"Kolommen verwijderd1", "Type", each "Tijdsregistratie"),
    #"Query's samengevoegd4" = Table.NestedJoin(#"Aangepaste kolom toegevoegd1", {"ProjectNummer"}, #"Project-Klanten", {"ProjectNummer"}, "Project-Klanten", JoinKind.LeftOuter),
    #"Project-Klanten uitgevouwen" = Table.ExpandTableColumn(#"Query's samengevoegd4", "Project-Klanten", {"KlantNaam"}, {"KlantNaam"}),
    #"Query's samengevoegd5" = Table.NestedJoin(#"Project-Klanten uitgevouwen", {"UurType"}, MappingUurtypes, {"Uurtypes Teamleader"}, "MappingUurtypes", JoinKind.LeftOuter),
    #"MappingUurtypes uitgevouwen" = Table.ExpandTableColumn(#"Query's samengevoegd5", "MappingUurtypes", {"Categorie"}, {"Categorie"}),
    #"Namen van kolommen gewijzigd2" = Table.RenameColumns(#"MappingUurtypes uitgevouwen",{{"Categorie", "UurCategorie"}})
in
    #"Namen van kolommen gewijzigd2"

Het request 80000170-0002-e600-b63f-84710c7967bb is begonnen op 17 april 18:09:25 (UTC) afgerond op 17 april om 18:20 (UTC) (636571 ms later) en eindigde met:

De gegevensdownload werd geannuleerd na 10 minuten, 36 seconden, waarschijnlijk door de gebruiker.
Optimaliseer uw query zoals beschreven op Overzicht van Power BI-technieken om prestaties en downloadtijd te verbeteren - invantive.
Voer de query vervolgens opnieuw uit.
(/acme-teamleader-focus/odata4/Teamleader.V2Flat.ProjectsAll@tlr?$select=id%2Creference%2Ccustomer_id).

Het bijbehorende SQL-statement is:

select t.[id], t.[reference], t.[customer_id]
from   Teamleader.V2Flat.ProjectsAll@tlr t

De aanvraagheaders bevatten ook “Projecten”:

Accept: application/json;odata.metadata=minimal
Accept-Encoding: gzip, deflate
Authorization: (header aanwezig)
Host: bridge-online.cloud
Referer: Projecten
User-Agent: Microsoft.Data.Mashup (Power Query documentation - Power Query | Microsoft Learn)
OData-MaxVersion: 4.0
Prefer: omit-values=nulls

Dit sluit aan bij het bovenstaande verzoek vanuit Power BI Desktop of Power BI web.

Het aantal rijen opgehaald zover was 1438. In een andere download werden meer dan dit aantal rijen opgehaald, dus het werk was nog niet volledig.

In hetzelfde tijdsvenster was er daarnaast een verzoek voor Teamleader.V2.Companies van dezelfde gebruiker. Buiten dit verzoek en de Monitoring was er geen activiteit.

Tot 18:20:00.909 werden - langzaam maar betrouwbaar - rijen met custom fields waarden opgehaald uit Teamleader voor projecten.

Om 18:20:02.395 werd een gebeurtenis geregistreerd waarbij de download werd gecancelled vanuit het gebruikte ASP.NET Core-platform, zonder relatie met de sessie. De onderliggende melding is itgenclr150. Dit wijst naar een HTTP/2 RST_STREAM-bericht, waarbij de HTTP-client via een bericht te kennen geeft dat de download afgebroken mag worden.

Een diepere analyse zal uitgevoerd worden om een bug in de Invantive Cloud uit te sluiten.

Bedankt. Zijn jullie hier momenteel mee bezig om te kijken wat het issue juist is?

Nee, de analyse is vanochtend afgesloten.

Uit de verschillende audit- en technische logs blijkt dat de netwerkverbinding wegviel.

Advies is om de download te herhalen na plaatsing patches waar nog niet toegepast op:

  • Microsoft Windows,
  • Microsoft .NET (wordt ook door Power BI gebruikt),
  • Power BI Desktop

Gebruik indien nodig een bedrade verbinding in plaats van WiFi.

Voor betere controleerbaarheid zal binnen 5 werkdagen een nieuwe versie van Invantive Bridge Online ook de HTTP protocolversie laten zien als er doorgeklikt wordt naar een downloadverzoek, zoals:

image

Het bleek namelijk dat niet alle Power BI-verbinding HTTP/2 gebruiken. Hiermee wordt het eenvoudiger te beoordelen of er sprake was van een RST_STREAM (dus met bevestiging “ik ga nu weg”) of een afgebroken download zonder bevestiging.

Dit lijkt me nog niet de oplossing. Na het controleren van de patches (en eventuele update) lukt het herladen op de desktop nog steeds niet. Als ik jullie bovenstaande opmerking lees, zou het herladen via de Power BI service wel moeten gaan, aangezien deze niet loopt via de pc verbinding.
Toch merk ik op dat het herladen via Power BI service ook niet lukt (Time out error). In de logs zie ik bv. volgende verzoek dat na 1min30 al wordt afgebroken:

  • 8000071d-0006-e500-b63f-84710c7967bb

Graag onderzoek zodat dit issue opgelost wordt.

Volgens de registratie treedt bij dit verzoek na 84 seconden een afbreuk van het downloaden door de client op (itgenpmr004). Zekerheidshalve zijn de caches leeggehaald voor deze gebruiker (zelfde als “Cache resetten” op Invantive Bridge Online).

Advies is nogmaals te proberen.

Lost niets op.
Nog steeds een time out: 80000c12-0000-f300-b63f-84710c7967bb
en 80000f1c-0002-f900-b63f-84710c7967bb

Graag met spoed hier naar kijken en met een effectieve oplossing komen

In het geval van request “80000c12-0000-f300-b63f-84710c7967bb” is deze na 138 seconden afgebroken met HTTP-statuscode 200 bij het downloaden van Contacts uit Teamleader met de melding itgenclr150 via /acme-teamleader-focus/odata4/Teamleader.V2.Contacts@tlr.

De bijbehorende SQL-query is:

select t.[id], t.[first_name], t.[last_name]
from   Teamleader.V2.Contacts@tlr t

en het afbreken gebeurde na het ophalen van 2000 rijen met code itgenboe241. De download was 75 seconden vertraagd omdat het maximum aantal bruikbare slots opgevuld waren door andere downloads.

Deze exacte download is viermaal uitgevoerd, en voor het eerst terug te vinden op 25 april 2023 om 09:44 UTC, alleen zonder succes. Algemene downloads van de V2.Contact@tlr zijn er niet de afgelopen 7 dagen.

Op deze Teamleader-=omgeving zijn 46 downloads terug te vinden in de laatste week, verspreid over een reeks tabellen. Alleen de downloads van ProjectsAll@tlr en Contacts@tlr eindigen consistent met een afgebroken download.

Bij ProjectsAll@tlr gebeurt dit na lange tijd voor de eerste 1000 rijen, bijvoorbeeld 18 minuten. Dit komt waarschijnlijk doordat de All-variant gebruikt wordt. Deze is - zeker bij parallel downloaden - extreem traag (1 rij per second) en dit is een bekende zwakte van de Teamleader API’s. In het geval van 18 minuten waren er na 18 minuten circa 738 rijen pas opgehaald. Advies is hier Projects@tlr te gebruiken waar het kan. Mogelijk dat de snelheid omhoog komt met een factor 2; Teamleader heeft gedocumenteerd hogere API-limieten te (gaan) hanteren.

Bij Contact@tlr wisselt de duur waarna de download afgebroken wordt tussen 18 en 140 seconden in de afgelopen week, maar is telkens na tussen de 2000 en 2100 rijen. Het betreft:

  • 800007de-0002-dd00-b63f-84710c7967bb
  • 80000c12-0000-f300-b63f-84710c7967bb
  • 80001169-0002-f500-b63f-84710c7967bb
  • 8000071d-0006-e500-b63f-84710c7967bb

In het geval van 800007de-0002-dd00-b63f-84710c7967bb verdween de client al na 3 seconden; de data kwam toen volledig uit caches.

Mogelijk crasht Power BI op een deel van de data.

Advies

Om Power BI als factor te verwijderen is advies om de hyperlink van de OData4-download uit Bridge Online Monitoring te kopiëren en deze in een browser te plakken (of Postman). Controleer of na authenticatie met de Invantive Cloud-gebruiker en wachtwoord de download lukt. Dit is te zien doordat de omvang significant is, bijvoorbeeld honderd KB of meer, en doordat het een geldige JSON-payload is. Dit valt te controleren met een JSON-validator zoals https://jsonformatter.curiousconcept.com/ (betrouwbaarheid partij die dit aanbiedt onbekend).

Mocht het via de browser wel lukken, maak het probleem dan reproduceerbaar op Power BI/Power Query bijvoorbeeld doordat de JSON uit een file te halen en meld een bug bij Microsoft, of probeer een workaround zoals V1.Contacts of anderszins om het probleem heen te werken.

Mocht het via de browser niet lukken en treedt er eveneens een foutmelding op (HTTP-statuscode of maar incorrecte JSON), gelieve dan een antwoord toe te voegen. Indien nodig zal om delegatie gevraagd worden om het probleem intern bij Invantive te reproduceren.

Deze vraag is automatisch gesloten na 2 weken inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.