"updated_at" filter toevoegen in Simplicate aanroep Simplicate.Hours.Hours@spe

Ik wil het in te lezen datagebruik flink reduceren door in Simplicate in de aanroep een filter toe te voegen in

Source{[Name="Simplicate.Hours.Hours@spe",Signature="table"]}[Data]  

Hoe moet dat?

let
    Source = OData.Feed("https://bridge-online.cloud/YYYYY-simplicate-1/odata4", null, [Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls, Headers=[Referer = "Hours" ], Timeout=#duration(0,4,0,0)]),
    #"Simplicate Hours Hours@spe_table" = Source{[Name="Simplicate.Hours.Hours@spe",Signature="table"]}[Data]
in
    #"Simplicate Hours Hours@spe_table"

Het gemakkelijkste is om te filteren via de gebruiksinterface van Power BI. Filters die in de tabel worden vastgelegd worden over het algemeen doorgegeven aan Bridge Online dankzij query folding.

Met de hand is het ook mogelijk door een filter toe te voegen na Source. De syntax zou ongeveer zo moeten zijn:

    #"Filtered Rows" = Table.SelectRows(#“Simplicate Hours Hours@spe_table”, each ([updated_at] > "2024-01-01"))

Merk op dat Simplicate als standaard hanteert dat datum/tijdvelden tekst zijn in plaats van een van de door Power BI ondersteunde datumformaten. Gelukkig is het formaat wel “most significant digit first” zoals in ISO 2014.

Meer performancetips zijn te vinden in:

HELAAS, de voorgestelde methode eerst alle records in en gaat vervolgens filteren. Het datagebruik vermindert niet !!!
Dus dit is géén query-folding .

Wanneer ik direct naar Simplicate ga via hun api dan werkt query folding wel goed zoals met het volgende:

= Json.Document(Web.Contents("https://XXXXX.simplicate.nl/api/v2/crm/organization**?q[updated_at][ge]=2024-04-15 00:00:00** ", [Headers=[#"Authentication-Key"=#"API key", #"Authentication-Secret"= #"API secret"]]))

Ik heb daartoe ?q[updated_at][ge]=2024-04-15 00:00:00 toegevoegd

Dus de vraag blijft: Hoe kan ik bij de Invantive-Odata-methodiek ook effectief filteren om het datagebruik terug te dringen?

https://XXXXX.simplicate.nl/api/v2/crm/organization**?q[updated_at][ge]=2024-04-15 00:00:00**

Advies is om zorgvuldig de bovengetoonde stappen te volgen om zo het filter door te geven.

Binnen de SQL-editor is te zien dat het doorgeven werkt. Eerst een poging zonder er rekening mee te houden dat op Simplicate datum/tijdvelden tekst zijn:

select count(*)
from   organizations
where  updated_at > trunc(sysdateutc)

En volgens:

select url
from   sessionios@datadictionary
where  data_container_alias = 'spe'

is de gebruikte URL:

https://acme.simplicate.com/api/v2/crm/organization?offset=0&limit=100&q[updated_at][gt]=05/13/2024+00:00:00

De gebruikte datum is nonsens, aangezien er een implicatie conversie plaatsvonden naar een datum/tijdformaat waar Simplicate niks mee kan. Op zich is de logica correct, maar het levert niet de gewenste uitkomst.

Vervolgens een voorbeeld dat er rekening mee houdt dat updated_at een tekst is:

select count(*)
from   organizations
where  updated_at > to_char(trunc(sysdateutc), 'YYYY-MM-DD HH24:MI:SS')

Deze gebruikt de URL volgens de query op SessionIOs@DataDictionary:

https://acme.simplicate.com/api/v2/crm/organization?offset=0&limit=100&q[updated_at][gt]=2024-05-13+00:00:00

Controleer bij het doorgeven vanuit Power BI dat het filter op updated_at aan beide zijden een tekst heeft. Op Details van Invantive Bridge Online Monitoring is dit het doorgeven (“query folding”) te zien in het gegenereerde SQL-statement.

Ik begrijp niets van het antwoord.

Wat moet ik waar toevoegen in de query volgens het plaatje waarbij query folding werkt voor [updated_at] zodat alleen groter of gelijk aan 2024-05-01 00:00:00 wordt opgehaald?

Advies is om een filterstap toe te voegen in Power BI waarbij updated_at ingesteld is als tekst datatype en de filterwaarde zelf ook een tekst is.

Wat moet ik precies op welke regel in Power Query invullen?

Ik heb het textfilter zo snel als mogelijk toegevoegd in de query.
Maar zoals in de afbeelding te zien is worden nog steeds alle records ingelezen: 1251 stuks, terwijl er met het textfilter op [created] slechts 29 ingelezen zouden moeten worden.

Advies is om een filterstap toe te voegen in Power BI waarbij updated_at ingesteld is als tekst datatype en de filterwaarde zelf ook een tekst is. Het doorkomen van het filter dankzij query folding kunt u controleren via Invantive Bridge Online Monitoring.

Mocht u ondersteuning nodig hebben bij het gebruik hiervan, dan raden we de inzet van een onze van partnerconsultants aan of een kort consult.