Tabel openstaande posten Exact Online per peildatum

Is er op de vraag " Tabel openstaande posten Exact Online per ultimo periode een oplossing gevonden om deze tabel sneller te laden in Power BI?

Ik zou per laatste dag van de maand voor 2022 en 2023 het openstaand bedrag per relatie moeten bekomen. Dit voor verschillende entiteiten.

De tabel ExactOnlineREST Views AROutstandingItemsPerFinancialPeriodUltimo laadt namelijk niet.

Hoeveel administraties zitten in de selectie?

Na hoeveel tijd is de laadactie beëindigd?

72 administraties waarvan we deze enkel voor een 5-tal entiteiten willen weergeven.

Laadactie wordt niet automatisch gestopt, loopt nu al 45 minuten.

image

Dank!

Welke SQL-query staat er precies bij het request in Invantive Bridge Online Monitoring in de rechterkolom?

Bedoel je dit:

let
    Bron = OData.Feed("https://bridge-online.cloud/acme/odata4", null, [Implementation="2.0"]),
    #"ExactOnlineREST.Views.AROutstandingItemsPerFinancialPeriodUltimo@eol_table" = Bron{[Name="ExactOnlineREST.Views.AROutstandingItemsPerFinancialPeriodUltimo@eol",Signature="table"]}[Data]
in
    #"ExactOnlineREST.Views.AROutstandingItemsPerFinancialPeriodUltimo@eol_table"

image

Het gaat om de Bridge Online Monitoring, zoek de request op en klik daarop. In de rechterkolom van de langlopende download staat “SQL-instructie”. Zie ook Meer inzicht met nieuwe Bridge Online Monitoring.

De tabelnaam is ExactOnlineREST.Views.AROutstandingItemsPerFinancialPeriodUltimo.

Het SQL-statement is:

select t.*
from   ExactOnlineREST.Views.AROutstandingItemsPerFinancialPeriodUltimo@eol t
where  ((FINYEAR in (:w1, :w2)) and (DIVISION in (:w3, :w4, :w5, :w6)))

Tijdens het laden van deze tabel (met filters) blijft de melding 'wachten op bridge-online.cloud

image

Is er een mogelijkheid om deze tabel in ‘Bridge Online Monitoring’ te filteren zodat deze wel ingelezen kan worden in Power BI?

image

Een korte test is uitgevoerd.

1 administratie

Openstaande posten

In de random gekozen testadministratie zijn er grote aantallen openstaande posten, zeg bijvoorbeeld 10.000.

Twee boekjaren

De volgende query zal naar verwachting bij stabiel aantal openstaande posten voor deze ene administratie 240.000 openstaande posten opleveren.

use DIVISIECODE

select t.*
from   ExactOnlineREST.Views.AROutstandingItemsPerFinancialPeriodUltimo@eol t
where  FINYEAR in (2022, 2023)
limit 10000

Duurt 6 seconden voor 10.000 openstaande posten. Met 100.000 rijen duurt het meer dan een minuut en is afgebroken.

1 boekjaar, 1 periode

Het ophalen voor 1 periode en 1 boekjaar zal naar verwachting circa 10.000 rijen ophalen.

use DIVISIECODE

select t.*
from   ExactOnlineREST.Views.AROutstandingItemsPerFinancialPeriodUltimo@eol t
where  FINYEAR in (2022, 2023)
limit 1000

Duurt 32 seconden voor 1.000 openstaande posten. Grotere aantallen zijn niet geprobeerd.

Handmatig

Het ophalen zonder view duurt circa 10 seconden voor 1 periode met:

select *
from   aroutstandingitemsex@eol(DIVISIECODE, to_date('20221231', 'YYYYMMDD'))

Advies

Het betreft bijzonder veel gegevens voor deze API. Advies is om hetzij via een consulting inspanning een passende maatwerkoplossing te laten realiseren, hetzij via SQL-statement zoals getoond onder “Handmatig” elke periode te exporteren. Dit zou dan gaan om 4 administraties x 24 periodes x zeg 10.000 = 960.000 openstaande posten.

Het ging om per periode orde van grootte honderdduizenden of meer aan posten verspreid over veel vennootschappen.

Complicerende factor is dat de view AROutstandingItemsPerFinancialPeriodUltimo niet parallel verwerkt wordt, maar per vennootschap. De reguliere 8-voudige verwerkingscapaciteit wordt hierdoor niet benut. Om toch parallel Exact Online te kunnen uitlezen wordt rechtstreeks gebruik gemaakt van de tabel AROutstandingItemsEx. Hiervoor is een peildatum nodig.

Niet alle vennootschappen hebben dezelfde periodekalender, maar voor de relevante is dat wel het geval: boekjaar van 1-1 t/m 31-12, met elke kalendermaand een periode.

De volgende view maakt een overzicht van alle administraties die deze periodekalender voeren:

create or replace view FinPeriodsStandardBase
as
select *
from   finperiods@eol
where  finyear_number_attr = year(trunc(sysdateutc))
and    number_attr=1
and    day(datestart) = 1
and    month(datestart) = 1
and    day(dateend) = 31
and    month(dateend) = 1

De volgende view selecteert de reguliere periodekalender, en laat alles wat gaat over de vennootschap achterwege. Er zullen dus 12 rijen voor elk kalenderjaar in zitten:

create or replace view FinPeriodsStandard
as
select finyear_number_attr
,      number_attr
,      datestart
,      dateend
from   FinPeriods@eol
where  division_code = ( select /*+ low_cost */ min(division_code) from   FinPeriodsStandardBase )
and    finyear_number_attr >= 2021
and    finyear_number_attr <= year(trunc(sysdateutc))

De volgende view beschrijft van welke vennootschapen de gegevens achterwege mogen blijven:

create or replace view CompaniesToIgnore
as
select code
,      name
from   SystemPartitions@DataDictionary
where  is_selected = true
and    code not in ( select /*+ low_cost */ distinct division_code from FinPeriodsStandardBase )

Tenslotte kan met de volgende query met parallelle uitvoering de lijst van openstaande posten opgevraagd worden:

create or replace view OpenstaandePostenRegulierSchema
as
select aom.*
from   ( select * from FinPeriodsStandard limit 12 ) fpd
join   AROutstandingItemsEx(Params_RefDate => fpd.dateend) aom
on     aom.division_code not in ( select /*+ low_cost */ code from CompaniesToIgnore )
```