Oproepen van Extra Velden in de Power BI connector

Ik wil graag de waardes van de extra velden van artikelen uit Exact Online kunnen oproepen binnen de PowerBI connector.

Ik kan echter de endpoint ItemExtraField nergens vinden in de OData feed.

Hoe kan ik de extra velden benaderen?

Op Exact Online artikelen kun je extra artikelvelden definiëren.

Gebruik de nieuwe view ItemExtraFieldValues om de waardes van de extra artikelvelden op te vragen, maar hou hierbij wel rekening met de volgende toelichting.

Historie

Historisch was dit een tabelfunctie waarbij elke SQL query verplicht de waarde van de administratie en het artikel moest meegeven als respectievelijk division en itemId.

Daardoor was het een beetje een ongelukkige tabelfunctie: vooral gebruikers met tienduizenden of honderdduizenden artikelen voelden de noodzaak, terwijl het aanroepen voor elk artikel telde als 1 API call en er geen slimmere API’s beschikbaar waren.

Verbeterde Artikelvelden

Exact Online heeft het commentaar ter harte genomen en sinds enige tijd is er ook een stabiele versie van de ItemExtraField API waarmee de waardes van de extra artikelvelden van meerdere artikelen in 1x opgehaald worden. Als geen artikel meegegeven wordt, dan zullen alle extra artikelvelden teruggegeven worden; dit is niet terug te lezen in de API documentatie maar wel feitelijk. Deze verbetering maakt gemakkelijk om voor alle artikelen de extra veldwaardes op te halen of voor een artikel. Andere dwarsdoorsnedes worden niet ondersteund.

Het meegeven van de wijzigingsdatum blijft wel verplicht. Ook de stabiliteit van deze API en de leesbaarheid van foutmeldingen blijft een aandachtspunt en hopelijk wordt die in de toekomst verder verbeterd.

Bijvoorbeeld het opvragen van extra artikelvelden in administraties waar er wel extra velden gedefinieerd zijn, maar geen artikel de waardes gebruiken geeft de foutmelding:

itgenoda061: Invalid: ItemID or Modified.
The remote server returned an error: (400) Bad Request.

Controleer daarom vooraf of alle administraties tenminste een artikel bevatten met concrete waardes voor de extra artikelvelden.

Als verdere kwaliteitsslagen gemaakt zijn, kan ook meer gewerkt worden met de wijzigingsdatum om gegevenmutaties incrementeel beschikbaar te stellen. Voor echt grotere artikelassortimenten vanaf 10.000 artikelen zal enige ondersteuning voor de optimalisatie nodig blijven.

SQL Query

Met een query zoals de volgende kun je voor alle geselecteerde Exact Online administraties de extra artikelvelden opvragen:

--
-- Kies een paar administraties die juist geconfigureerd zijn.
--
use 868035, 868057

--
-- Vraag waardes van extra artikelvelden op.
--
select sdn.code
,      sdn.created
,      ief.*
from   SYSTEMPARTITIONS@DataDictionary spn
join   systemdivisions sdn
on     sdn.code = to_number(spn.code)
join   itemextrafields(sdn.code, null, sdn.created) ief
where  spn.is_selected = true

Power BI

Power BI ondersteunt op dit moment geen OData queries met parameters. Om die reden is een view ItemExtraFieldValues toegevoegd in de volgende release die de waardes van de artikelvelden uit alle geselecteerde Exact Online administraties ophaalt.

De meeste Invantive SQL views gebruiken alleen tabellen die bekend zijn binnen de driver. Het is daarom niet mogelijk om het bovenstaande SQL statement te gebruiken om alleen de geselecteerde divisies op te halen. In plaats daarvan gebruikt de view ExactOnlineREST.System.Settings waar precies 1 rij uit terugkomt voor elke geselecteerde Exact divisie. Vervolgens wordt die gerelateerde aan SystemDivisions om de aanmaakdatum van de administratie te bepalen en zo alle artikelvelden gewijzigd sinds de start van de administratie op te vragen:

select ief.*
from   ExactOnlineREST.System.settings stg
join   systemdivisions sdn
on     sdn.code = stg.division
join   itemextrafields(sdn.code, null, sdn.created) ief
where  sdn.status = 1 /* Active. */

Alternatieven voor Artikelvelden

Het is ook mogelijk om waardes van de artikelvelden via de XML API’s op te halen zoals ExtraFieldDefinitionsEx en Items. Meer informatie vind je door te zoeken op “extra fields” in de Exact Online driver documentatie.

Het inlezen van waardes voor extra velden is momenteel uitsluitend mogelijk via de XML API’s zoals beschreven bij Inlezen extra velden van Exact Online artikelen.

Begrijp ik het nu goed dat ik de Extra velden nog niet kan benaderen in PowerBI en moet wachten op de nieuwe release?

Wanneer komt de nieuwe release?

Dat is correct: standaard zit het in de volgende release. Je kunt eventueel er om heen werken met On Open SQL op de database en daar al met SQL een in-memory tabel materialiseren, maar dat raad ik gezien de setting niet aan.

De verwachting is in de loop van deze week.

Gezien de zware belasting van het Exact Online API ecosysteem verwerken we een aantal wijzigingen in de volgende release zodat gebruikers gemakkelijker trickle loading op grote omgevingen kunnen managen met honderden administraties of meer. De release komt kort nadat die wijzigingen voldoende stabiel zijn om praktische waarde te leveren voor de gebruikers van Data Replicator, OEM en Premium Finance abonnementen.

De vandag beschikbaar gekomen release 20.1.356 biedt ook de extra artikelvelden op Exact Online.