Zware performance issues Simplicate (hours)

Ik kamp al een aantal weken met zwarte performance problemen met mijn simplicate klanten. Koppel via invantive simplicate date aan powerbi voor twee zusterbedrijven die in één omgeving zitten.

Heb middels filters op datum en bedrijfsprofiel in de query editor de dataset zoveel mogelijk proberen te verkleinen, daarnaast schedule ik de 1e klant refresh om 07:00 en de 2e om 09:00. Voor de eerste klant heb ik al een shared dataset ingesteld in de hoop dat dit het oplost. Ik blijf echter met dataloads van 2 tot 3 uur duren die vaak niet eens succesvol zijn. Vandaag was dit het resultaat van ruim 3 uur refreshen voor klant 1 (klant 2 stond uit):

Fout in de gegevensbron: Session cancelled because the session’s current database is going to be converted into ReadOnly state.
URI cluster: WABI-WEST-EUROPE-B-PRIMARY-redirect.analysis.windows.net
Activiteits-id: 00000000-0000-0000-0000-000000000000
Aanvraag-id: 25fa2968-27a7-4ee3-b71f-c857b67fe1b1
Tijd: 2024-04-10 08:52:07Z
Details # Type Starten Beëindigen Duur Status Fout


1 Gegevens 4/10/2024, 7:46:56 AM 4/10/2024, 10:32:41 AM 02:45:44.977 Mislukt (Weergeven)
2 Gegevens 4/10/2024, 10:33:41 AM 4/10/2024, 10:52:07 AM 00:18:26.817 Mislukt (Weergeven)

Dit gaat om de refresh van 1 shared dataset waar twee dashboards aan hangen. Heb het zo ingedeeld in de hoop om de laadtijd te verkleinen maar zoals je ziet heeft dat geen effect.

Heb nu besloten om klant 2 in een aparte database te zetten om te voorkomen dat ze tegelijkertijd refreshen en de performance verminderen. Krijg bij het doorvoeren van de wijzigingen in powerBI desktop echter deze fout:

De gegevensdownload werd meteen na aanvraag geannuleerd. Probeer het opnieuw. Neem contact op met Invantive Support als dit probleem zich blijft voordoen. (/acme/odata4/Simplicate.Sales.Sales@spe).

Heb nu voor zover ik weet alle mogelijke oplossingen die jullie in de artikelen voorstellen geprobeerd en het resultaat is nihil. Het speelt nu al 2 maanden, zou hier heel graag op korte termijn een oplossing voor vinden.

Is er een mogelijkheid om al in de SQL-statement die ik in de Bridge Online monitoring zie filters toe te passen? Dat is voor nu de enige mogelijkheid die ik nog kan bedenken maar hoor het graag als jullie andere suggesties hebben.

Om de prestaties te kunnen beoordelen is het nodig om meer informatie te verkrijgen die herleidbaar is tot Invantive.

Is het mogelijk om (geanonimiseerd) een schermafdruk toe te voegen uit Invantive Bridge Online Monitoring details met daarin zichtbaar het SQL-statement en de request ID (in de titelbalk)?

Is het mogelijk om te vermelden hoeveel rijen verwacht worden uit de download / tabel, en hoe lang het duurt?

Na de filters in de query editor gaat het voor klant 1 om 96.000 urenregels, voor klant 2 om slechts 1000 (net een migratie gehad dus de historie wordt niet geimporteerd).

De daadwerkelijke populatie is wel een stukje groter, zeg 250.000. Om deze reden zou ik de filters graag al in het SQL statement meenemen.

Hierbij de schermafdruk:

Doorvoersnelheid

In het scherm “Sessie I/O’s” op Invantive Cloud is de gemiddelde snelheid terug te vinden van Simplicate voor uren. Die kan momenteel extreem traag zijn: tussen 8 en 12 seconden voor 200 rijen is in deze omgeving niet ongebruikelijk.

Een analyse over alle alle Simplicate-omgevingen die vandaag zijn uitgelezen, toont aan dat de doorvoersnelheid enorm varieert van gemiddeld 21 rijen per seconde tot ruim boven de 300 rijen per seconde.

Alhoewel grotere datasets gemiddeld langzamer zijn (60-140 rijen per seconde) qua doorvoersnelheid dan die met kleine datasets (boven de 300 rijen per seconde) is de getoonde omgeving opvallend extreem traag.

Advies is om sowieso contact te zoeken met Simplicate Support.

Filteren

Daarnaast is het mogelijk om te filteren op bijvoorbeeld datum. Hiervoor is het nodig om te zorgen dat query-folding vanuit Azure Data Factory / Power BI / Power Query gebruikt wordt.

Meer hierover is terug te lezen in o.a.:

Merk op dat Simplicate gekozen heeft om datums in tekstformaat te hanteren. Zorg dat in de filterstappen dit tekstformaat gehanteerd wordt.

Zoals gezegd bestaat de urentabel van klant maar uit 1000 regels na het toepassen van datum en profielfilters in de query editor. Toch zie ik in de bridge online monitoring dat er 150k aan uren op worden gehaald. Kan ik ervoor zorgen dat dit kleiner wordt?

Advies is om de stappen in vorige antwoord genoemd uit te voeren na kennis genomen te hebben van hoe filtering in Simplicate werkt.

Yes die stappen heb ik toegepast, alsmede het aanmaken van een shared dataset. zie screenshot, op deze manier filter ik ook de bedrijfsprofielen en het jaar 21 eruit.

Probleem is dat Simplicate end_date teruggeeft als tekst en niet als datum. Daardoor zal filteren moeilijker gaan.

Met het gebruik van Text.StartsWith wordt het filter niet doorgegeven aan Bridge Online. Power BI filtert dan zelf lokaal. De in Power Query opgenomen optimizer herschrijft deze functies niet naar functies die door OData ondersteund worden. Gebruiken daarom een filter dat direct door OData ondersteund wordt, zoals groter dan, gelijk aan of kleiner dan. In dit geval zou Text.StartsWith([end_date], "2019") vervangen kunnen worden door:

[end_date] >= "2019" and [end_date] < "2020"

Daarnaast kan eventueel ook een view gebruikt worden die bij het opstarten van de database aangemaakt wordt. Deze kent dezelfde mogelijkheden. Zie voor het maken van een eigen view: Eigen database-views gebruiken voor SQL en BI-tools.

Heb de filter opgebouwd conform je voorbeeld, dank. Krijg vanochtend nog steeds dezelfde foutmelding maar hij doet er nu nog maar een uur over; toch een vooruitgang.

Fout in de gegevensbron:

DataSource.Error:
OData: Request failed:
The underlying connection was closed:
An unexpected error occurred on a send.
DataSourceKind = OData
DataSourcePath = https://bridge-online.cloud/acme-simplicate-1/odata4
The exception was raised by the IDbCommand interface.
Table: Invantive_hours.
URI cluster: WABI-WEST-EUROPE-B-PRIMARY-redirect.analysis.windows.net
Activiteits-id: 00000000-0000-0000-0000-000000000000
Aanvraag-id: 7c56764f-be45-4bbc-81c8-5d0bc2bcb80d
Tijd: 2024-04-17 06:38:58Z
Details # Type Starten Beëindigen Duur Status Fout

Heb inmiddels ook contact met Simplicate-support en die bevestigen dat het probleem aan hun kant ligt. Hopelijk komt er de komende weken verbetering in.

Een uur is nog steeds erg lang.

Welke SQL-query en parameterwaardes worden gegenereerd voor de download (zichtbaar in Invantive Bridge Online Monitoring details)?

M.b.t. afgebroken download: dit hangt mogelijk samen met een storing die in beeld is: Problemen bij geannuleerde downloads en/of downloads die blijven hangen.

Ik heb dezelfde problemen helaas. Wat voor Query wordt hier gebruikt? Onderstaande heb ik gebruikt:

let
    Bron = OData.Feed("https://bridge-online.cloud/softwarewatcher-simplicate/odata4", null, [Implementation="2.0", Timeout=#duration(0,4,0,0)]),
    #"Simplicate.Hours.Hours@spe_table" = Bron{[Name="Simplicate.Hours.Hours@spe",Signature="table"]}[Data],
    #"Rijen gefilterd" = Table.SelectRows(#"Simplicate.Hours.Hours@spe_table", each [end_date] >= "2023" and [end_date] < "2025")
in
    #"Rijen gefilterd"

Nog tips om dit sneller/beter te maken? Of is dit het?

De gebruikte werkwijze is zoals het snel zou moeten kunnen.

Er is gekeken naar uw omgeving (zie scherm Sessie I/O’s). Deze Simplicate-omgeving is nog trager dan de eerdere.

Een API-call voor 100 rijen duurt tussen enkele milliseconden en 28 seconden (bij offset van 15.800). Circa 70 van de API-verzoeken duren 12 seconden of langer.

Advies is om contact op te nemen met Simplicate Support.

Als mogelijke workaround kunt u overwegen de download te splitsen in een aparte per maand of per jaar, maar het is onbekend of dan de extreem trage reactie op API-verzoeken opgelost zal zijn.