Dette emnet beskriver metoder for eksplisitt tilordning av aggregeringsregelen for rapportsummer, noe som bidrar til å bedre ytelsen. Det er ment spesifikt for tekniske utviklere som skriver rapporter med Oracle Analytics.
Figuren nedenfor viser et eksempel der rapportdefinisjonen er år, måned og kunderegion, med målingen Count Distinct of Customers with Orders'
, som er definert som en telling av unike kunder med ordrer.
Den logiske spørringen ser slik ut:
SELECT 0 s_0, "A - Sample Sales"."Cust Regions"."C50 Region" s_1, "A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" s_2, REPORT_AGGREGATE("A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" BY ) s_3 FROM "A - Sample Sales" WHERE ("Time"."T02 Per Name Month" = '2011 / 11') ORDER BY 2 ASC NULLS LAST FETCH FIRST 500001 ROWS ONLY
Den fysiske spørringen som genereres, ser slik ut:
WITH SAWITH0 AS (select count(distinct T42433.Cust_Key) as c1, T42430.Region as c2 from BISAMPLE.SAMP_CUSTOMERS_D T42428 /* D60 Customers */ , BISAMPLE.SAMP_ADDRESSES_D T42430 /* D62 Customers Addresses */ , BISAMPLE.SAMP_TIME_MTH_D T42405 /* D02 Time Month Grain */ , BISAMPLE.SAMP_REVENUE_F T42433 /* F10 Billed Rev */ where ( T42405.Mth_Key = T42433.Bill_Mth_Key and T42405.Per_Name_Month = '2011 / 11' and T42428.Cust_Key = T42433.Cust_Key and T42428.Address_Key = T42430.Address_Key ) group by T42430.Region), SAWITH1 AS (select count(distinct T42433.Cust_Key) as c1 from BISAMPLE.SAMP_TIME_MTH_D T42405 /* D02 Time Month Grain */ , BISAMPLE.SAMP_REVENUE_F T42433 /* F10 Billed Rev */ where ( T42405.Per_Name_Month = '2011 / 11' and T42405.Mth_Key = T42433.Bill_Mth_Key ) ) select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from (select 0 as c1, D1.c2 as c2, D1.c1 as c3, D2.c1 as c4, ROW_NUMBER() OVER (PARTITION BY D1.c2 ORDER BY D1.c2 ASC) as c5 from SAWITH0 D1, SAWITH1 D2 ) D1 where ( D1.c5 = 1 ) order by c2 ) D1 where rownum <= 500001
Totalverdien, 480, er summen av verdiene som inngår, 182 + 113 + 185. Det logiske spørringsuttrykket som beregner summen, er som følger: “REPORT_AGGREGATE("A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" BY ) s_3”.
Når REPORT_AGGREGATE
brukes, beregnes summen uavhengig av verdiene som inngår. I denne rapportutformingen kan den korrekte summen imidlertid beregnes fra verdiene som inngår for denne rapporten.
Hvis du redigerer kolonneformelen til å endre Aggregeringsregel (raden Summer) fra Sammensatt tjeneraggregering til Sum, endres den logiske og fysiske SQL-spørringen.
Figuren nedenfor viser den opprinnelige aggregeringen.
Figuren nedenfor viser den endrede aggregeringen.
Den endrede logiske SQL-spørringen har nå REPORT_SUM
:
SELECT 0 s_0, "A - Sample Sales"."Cust Regions"."C50 Region" s_1,"A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" s_2, REPORT_SUM("A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" BY ) s_3 FROM "A - Sample Sales" WHERE ("Time"."T02 Per Name Month" = '2011 / 11') ORDER BY 2 ASC NULLS LAST FETCH FIRST 500001 ROWS ONLY
Dette er den fysiske spørringen som genereres:
WITH SAWITH0 AS (select count(distinct T42433.Cust_Key) as c1, T42430.Region as c2 from BISAMPLE.SAMP_CUSTOMERS_D T42428 /* D60 Customers */ , BISAMPLE.SAMP_ADDRESSES_D T42430 /* D62 Customers Addresses */ , BISAMPLE.SAMP_TIME_MTH_D T42405 /* D02 Time Month Grain */ , BISAMPLE.SAMP_REVENUE_F T42433 /* F10 Billed Rev */ where ( T42405.Mth_Key = T42433.Bill_Mth_Key and T42405.Per_Name_Month = '2011 / 11' and T42428.Cust_Key = T42433.Cust_Key and T42428.Address_Key = T42430.Address_Key ) group by T42430.Region), SAWITH1 AS (select 0 as c1, D1.c2 as c2, D1.c1 as c3 from SAWITH0 D1) select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, sum(D1.c3) over () as c4 from SAWITH1 D1 order by c2 ) D1 where rownum <= 500001
Det samme valget for eksplisitt angivelse av aggregeringen er tilgjengelig i arbeidsbøker. Se Formatere numeriske verdier i visualiseringer. I dette eksemplet må du endre Aggregeringsmetode til Sum i kolonnen Count Distinct Customers with Orders.
Se gjennom rapportene for å sjekke at den beste aggregeringsregelen brukes for rapporten. Bruk en eksplisitt aggregeringsregel når rapportuformingen tillater det.
Hvis du vil ha flere opplysninger om rapporter, kan du se Opprette analyser.