View Twinfield.Views.GeneralLedgerAccountMappingAccounts@tfd laadt alle records die vallen onder licentie

Een tweetal views op Twinfield zijn benodigd om de rapportagestructuur te kunnen ontsluiten en te koppelen aan de grootboekrekeningen. Het gaat om:

  • Twinfield.Views.GeneralLedgerAccountMappingAccounts@tfd
  • Twinfield.Views.GeneralLedgerAccountMappings@tfd

De performance van deze views zijn zeer traag binnen onze omgeving en dat komt waarschijnlijk doordat de view alle informatie ophaald ongeacht de rechten van gebruiker. Bij een andere klant is dat geen issue, omdat de administratie daar zeer beperkt is.

Het kan inderdaad zijn dat op grote omgevingen er veel data opgehaald wordt. Voor de snelheid zijn we afhankelijk van de achterliggende API.

Advies is daarom in Power BI te filteren op de relevante data. Bij het ophalen zal dan als het goed is slechts een gedeelte van de data opgehaald worden. Is dat mogelijk?

Er wordt inderdaad gebruik gemaakt van filters, maar de view bevat informatie van alle administraties ongeacht of de gebruiker toegang heeft tot deze administratie. In ons geval worden daardoor honderdduizenden rijen geladen terwijl het slechts enkele duizenden moeten zijn.

In het screenshot in de monitoring is bij Path en SQL-statement geen filter te zien. Daardoor wordt alle data opgehaald.

Zou u nogmaals Power BI kunnen controleren of de data al zo vroeg mogelijk gefilterd wordt? Dat zal waarschijnlijk het probleem oplossen.

Dat klopt helemaal, alhoewel op basis van de gebruiker zou toch niet alle informatie getoond moeten worden. Het account dat gebruikt is heeft slechts toegang tot 1 administratie, maar krijgt alles te zien.

Dat klinkt als een fout in de Twinfield API of instellingen van de rechten. Invantive kan alleen de data ophalen die de API beschikbaar stelt.

Dat probeer ik te achterhalen want daardoor is de verversing zeer traag. Of komt het doordat het een view is en niet een specifieke tabel?

Views kunnen ook gefilterd worden door Invantive Universal SQL. Daarvoor zijn dan wel filters nodig die doorgegeven worden. Ik kan zo niet vaststellen waarom de filters niet doorkomen vanuit Power BI.

Het is ook altijd mogelijk zelf aan de hand van SQL een view te maken bij het opstarten van de database waarbij al ‘voorgekookt’ de data beschikbaar wordt gemaakt.

Zie bijvoorbeeld:

Het is vastgesteld dat de volgende tabellen NIET-partitiespecifiek zijn en Twinfield-abonnementbrede data bevatten:

  • tabel Hierarchies,
  • tabelfunctie GeneralLedgerAccountMappingByHierarchyCode,
  • tabelfunctie GeneralLedgerAccountMappingAccountsByHierarchyCode,
  • view GeneralLedgerAccountMappings,
  • view GeneralLedgerAccountMappingAccounts.

Dit is vergelijkbaar met algemene tabellen zoals “landen” en “munteenheden”, waar iedere gebruiker dezelfde lijst van landen of munteenheden ziet en gebruikt.

De tabeleigenschappen zijn aangepast. De prestaties zullen hierdoor in omgevingen met bijvoorbeeld 10 hierarchien en 1000 bedrijven stijgen met een factor maximaal 1 miljoen.

Dit is een “breaking change” omdat de kolommen company_code en company_name verdwijnen uit de kolommenlijst. Daarom is ook meteen een typo gecorrigeerd, namelijk de prefix hierachy is gecorrigeerd naar hierarchy in de twee bovengenoemde views.

De wijzigingen zullen effectief worden in release 24.0.98 en worden naar verwachting voor 25 maart 2024 in productie genomen op Invantive Cloud.

De responsetijden zijn sterk verbeterd, in een testopstelling bijvoorbeeld:

  • Hierarchies: 569 ms,
  • GeneralLedgerAccountMappings met filter op hierarchy_CODE: 293 ms,
  • GeneralLedgerAccountMappingAccounts met filter op hierarchy_CODE: 332 ms.

Een nieuwe release 24.0.101 is in productie genomen op Invantive Cloud die de snelheid significant zou moeten verhogen.

Merk op dat een aantal velden vervallen zijn, zoals velden die beginnen met company_ omdat de gegevens abonnementsbreed zijn en niet administratief-specifiek.

Ik krijg nu onderstaande foutmelding als ik de view opvraag. In de lijst met tabellen en views kom ik geen alternatieven tegen. Is de nieuwe view nog niet beschikbaar?

DataSource.Error:
OData:
Aanvraag mislukt:
The remote server returned an error: (500) Internal Server Error.
(Onbekende tabel ‘GENERALLEDGERACCOUNTMAPPINGACCOUNTSBYHIERARCHYCODETEST1’.
Mogelijke geldige alternatieven:
GeneralLedgerAccountMappingAccountsByHierarchyCode, GeneralLedgerAccountMappingAccounts
(itgengpr015, 27db3e9d-7d1d-4598-af9b-ca34ae790976))

Deze foutmelding treedt alleen op bij de view GeneralLedgerAccountMappingAccounts.

Een correctie is doorgevoerd en die zal naar verwachting voor het einde van de dag in productie genomen zijn op Invantive Cloud.

De correctie voor GeneralLedgerAccountMappingAccounts is in productie genomen.