Binnenhalen artikelvoorraden in Excel Power Query

Ik gebruik de PowerBI connector binnen Excel Power Query.

Ik wil de tabel ExactOnlineREST.Sync.SyncStockPositions@eol benaderen voor de artikelvoorraden.

Ik heb al een aantal tabellen die ik op deze manier binnenhaal, maar de bovenstaande loopt elke keer vast.

Kan dit te maken hebben met de hoeveelheid data? Oorspronkelijk liep hij vast bij ongeveer 75.000 records, dus heb ik een filter gelegd op voorraad groter dan 0. Dit had geen effect.

Of moet ik een andere tabel oppakken hiervoor?

Onderstaand ook de code:

let
    Bron = OData.Feed("https://bridge-online.cloud/acme-exact-online/odata4", null, [Implementation="2.0"]),
    #"ExactOnlineREST.Sync.SyncStockPositions@eol_table" = Bron{[Name="ExactOnlineREST.Sync.SyncStockPositions@eol",Signature="table"]}[Data],
    #"Rijen gefilterd" = Table.SelectRows(#"ExactOnlineREST.Sync.SyncStockPositions@eol_table", each [DivisionName] = "ACME B.V."),
    #"Andere kolommen verwijderd" = Table.SelectColumns(#"Rijen gefilterd",{"CurrentStock", "FreeStock", "ItemId", "PlanningIn", "PlanningOut", "Warehouse", "DivisionName"}),
    #"Aangepaste kolom toegevoegd" = Table.AddColumn(#"Andere kolommen verwijderd", "Teller", each [CurrentStock]+[FreeStock]+[PlanningIn]+[PlanningOut]),
    #"Rijen gefilterd1" = Table.SelectRows(#"Aangepaste kolom toegevoegd", each [Teller] <> 0)
in
    #"Rijen gefilterd1"

Foutmelding

In de Monitoring is zichtbaar dat een foutmelding optreedt:

Door een rode regel te selecteren wordt zichtbaar dat er een dataprobleem is:

Deze foutmelding is ook terug te vinden in het scherm “Systeemberichten” op Invantive Cloud.

De download lukt niet omdat het veld Warehouse leeg is bij een voorraadpositie.

Ik begrijp dat niet goed; ik had verwacht dat een voorraadpositie altijd bij een magazijn hoort. Het kan zijn dat dit een bug in de Exact software is.

Is het mogelijk om ExactOnlineXML.XML.StockPositions@eol te downloaden met access-odata.com en de Excel hiervan op te sturen naar support@invantive.com?

Paar optimalisatietips

Het ophalen via de SyncStockPositions is mogelijk, maar inefficient. Beter is om de StockPositionsIncremental te gebruiken. Die is vanaf de tweede keer vele malen sneller en toch actueel zoals beschreven op Snel en met minder API-calls Exact Online uitlezen met de incrementele "sync API"-tabellen.

Daarnaast is de tweede filterstap op Teller geplaatst na het verwijderen van de kolommen. Power BI en Power Query kunnen dat filter dan niet doorgeven aan Invantive Cloud (Power BI’s query-folding is niet meer mogelijk). Advies is om eerst alle filterstappen te maken en daarna pas kolommen te hernoemen en/of te verwijderen. Zie ook OData-filters optimaliseren om de prestaties te verbeteren.

Mocht nog niet snel genoeg zijn, dan kun je binnen het abonnement gratis het Power BI rapport laten analyseren door ons voor performance zoals beschreven op How do I get a free Power BI performance audit?.

Het lukt helaas ook niet om de stock positions binnen te halen via Acces-odata.com
Zowel XML als REST.
Hij blijft hangen in het binnenhalen.
Kunnen we er achter komen welke voorraad positie geen Warehouse heeft?
Een artikelnummer?

Ik kom er nu achter dat een export van Stock Positions via Exact online ook niet mogelijk is.
Deze fout zal dus door Exact moeten worden opgelost.

Alvast bedankt voor de informatie

Op een Belgische omgeving blijken er ook StockPositions te zijn waarbij Warehouse leeg kan zijn. Het is onduidelijk of dit een nieuwe feature is van Exact Online of een bug in Exact Online. Het probleem treedt op sinds 2 september 2021.

In de release van 13 september 2021 zal het veld Warehouse optioneel gemaakt zijn in voorraadposities. Hierdoor komen in deze Nederlandse en Belgische administratie rijen terug zonder Warehouse. De opsteller van de rapportage heeft dan kans om de oorzaak te analyseren en eventueel cijfers te corrigeren.

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.