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 )
```