Totales de informe

Esta información describe las formas de asignar explícitamente la regla de agregación para los totales de informe, lo cual mejora el rendimiento y ha sido diseñado específicamente para los desarrolladores técnicos que escriben informes mediante Oracle Analytics.

En este ejemplo, la definición de informe es el año, el mes y la región del cliente con la métrica 'Count Distinct of Customers with Orders', que se define como un recuento de distintos de clientes con órdenes.

A continuación se muestra la descripción de GUID-4E9DB43C-F827-4BBB-A94D-5A91F3626C72-default.jpg
.jpg

La consulta lógica es la siguiente:

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

La consulta física que se genera es la siguiente:

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

El valor total, 480, es la suma de los valores constituyentes, 182 + 113 + 185. La expresión de consulta lógica que calcula el total es: “REPORT_AGGREGATE("A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" BY ) s_3”.

Si se utiliza “REPORT_AGGREGATE”, el total se calculará con independencia de los valores constituyentes. Sin embargo, para este diseño de informe, hemos determinado que el total correcto se puede calcular a partir de los constituyentes para este informe.

Edite la fórmula de columna para cambiar “Aggregation Rule (Totals Row)” de “Server Complex Aggregate” a “Sum”. Esto cambia el SQL lógico y físico.

Agregación original:

A continuación se muestra la descripción de GUID-96FB697B-24F7-41A9-8678-F99921E5BB19-default.jpg
.jpg

Agregación modificada:

A continuación se muestra la descripción de GUID-ED289D12-C0BD-4588-B288-2069EAB3EB1D-default.jpg
.jpg

El SQL lógico modificado ahora tiene “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

La consulta física que se genera es la siguiente:

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

La misma opción para definir de forma explícita la agregación está disponible en los libros de trabajo:

A continuación se muestra la descripción de GUID-DAE63F66-EF2A-45B0-8657-38301F4DC77E-default.jpg
.jpg

Revise los informes para comprobar que se está agregando la mejor regla de agregación para el informe. Utilice una regla de agregación explícita cuando el diseño del informe lo permita.

Para obtener más información sobre los informes, consulte Creación de análisis.