Este tópico descreve formas de designar explicitamente a regra de agregação para totais de relatório, o que ajuda a melhorar o desempenho, e destina-se especificamente a desenvolvedores da área técnica que escrevem relatórios com o Oracle Analytics.
A figura a seguir mostra um exemplo em que a definição do relatório é ano, mês e região do cliente, com uma métrica Count Distinct of Customers with Orders que é definida como uma contagem distinta de clientes com pedidos.
Veja uma consulta lógica abaixo:
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 ONLYVeja uma consulta física gerada abaixo:
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
O valor total, 480, é a soma dos valores constituintes, 182 + 113 + 185. A expressão da consulta lógica que calcula o total é a seguinte: “REPORT_AGGREGATE("A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" BY ) s_3”.
Quando REPORT_AGGREGATE é usado, o total é calculado independentemente dos valores constituintes. No entanto, para o design deste relatório, o total correto pode ser calculado com base nos constituintes deste relatório.
Se você editar a fórmula da coluna para alterar Aggregation Rule (Totals Row) de Complex Aggregate para Sum, a consulta SQL lógica e física será alterada.
A figura a seguir mostra a agregação original.
A figura a seguir mostra a agregação modificada.
A consulta SQL lógica modificada agora tem 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 ONLYEsta é a consulta física que é gerada:
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
A mesma opção para definir explicitamente a agregação está disponível nas pastas de trabalho. Consulte Formatar Valores Numéricos de Visualizações. Neste exemplo, para a coluna Contar Clientes Distintos com Pedidos, altere o Método de Agregação para Soma.
Analise seus relatórios para verificar se a melhor regra de agregação está sendo usada para o relatório. Use uma regra de agregação explícita quando o design de relatório permitir.
Para obter mais Informações sobre relatórios, consulte Crie Análises.