dmr
27 maart 2021 om 19:50
1
Om het dataverkeer zo laag mogelijk te houden bij het ophalen van data via de OData verbinding voor Exact Online probeer ik te filteren op Division
en een selectie te maken van de benodigde kolommen.
Volgens onderstaande link worden de filter en select statements ondersteund:
OData4 query options of Invantive Bridge Online - Wiki (en) - invantive
Filteren op een Division
lukt wel, alleen een selectie van kolommen lukt niet met bijvoorbeeld onderstaande statement in Power Query.
Ik zou verwachten met behulp van onderstaand request data terug te krijgen gefilterd op de specifieke Division
en alleen kolom ID
als voorbeeld
= OData.Feed("https://bridge-online.cloud/bedrijfsnaam/odata4/ExactOnlineREST.Incremental.GLAccountsIncremental@eol?$filter= Division eq 000000&select=ID", null, [Implementation="2.0"])
Ik krijg nu een dataset met wel een filter op Division
maar met alle kolommen van de tabel.
forums
27 maart 2021 om 20:13
2
Voor zekerheid: er staat een dollarteken voor select
?
dmr
27 maart 2021 om 20:32
3
Ik zie dat ik inderdaad een typefout heb gemaakt.
Voor de zekerheid een nieuw voorbeeld toegevoegd.
= OData.Feed("https://bridge-online.cloud/bedrijfsnaam/odata4/ExactOnlineREST.Incremental.GLAccountsIncremental@eol?$filter= Division eq 0000&$select=Code", null, [Implementation="2.0"])
Hierop krijg ik een set terug gefilterd op Division
maar nog steeds alle kolommen in de tabel.
forums
27 maart 2021 om 21:30
4
Als het goed is, dan zijn de waardes van de niet-geselecteerde kolommen overal null.
Een beperking in de Microsoft OData bibliotheek verhindert het weglaten: How to support $select on non-CLR types? · Issue #2338 · OData/WebApi · GitHub
Het datavolume zou echter significant kleiner moeten zijn door het teruggeven van de standaardwaarde.
Update: de pagina OData4 query options of Invantive Bridge Online is bijgewerkt om deze beperking te beschrijven.
Zijn er niet-standaardwaarden zichtbaar voor niet-geselecteerde kolommen?
dmr
28 maart 2021 om 06:09
5
Inderdaad lege records!
Ik vergeleek het met een testomgeving (onderstaand) en daar kwam bijboorbeeld wel alleen de kolom Gender
retour.
Bij het testen op een openbare bron kreeg ik wel alleen de geselecteerde kolom retour:
= OData.Feed("https://services.odata.org/TripPinRESTierService/People?$select=Gender", null, [Implementation="2.0"])
Ik snap het verschil niet maar dan weet ik dat de output nu is zoals ik deze zou moeten verwachten.
Bedankt.