보고서 합계

이 정보는 성능 향상에 도움이 되는 보고서 합계에 대한 집계 규칙을 명시적으로 지정하는 방법을 설명하며, 특히 Oracle Analytics를 사용하여 보고서를 작성하는 기술 개발자를 대상으로 합니다.

이 예에서 보고서 정의는 측정항목이 'Count Distinct of Customers with Orders'(주문이 있는 고객의 고유 수로 정의됨)인 연도, 월 및 고객 지역입니다.

GUID-4E9DB43C-F827-4BBB-A94D-5A91F3626C72-default.jpg에 대한 설명이 이어집니다.
.jpg''

논리적 질의:

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

생성되는 물리적 질의:

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

합계 값 480은 구성 항목 값의 합(182 + 113 + 185)입니다. 합계를 계산하는 논리적 질의 표현식은 “REPORT_AGGREGATE("A - Sample Sales"."Counts"."32 # of Cust with Orders (Cnt Distinct)" BY ) s_3”입니다.

“REPORT_AGGREGATE”가 사용되는 경우 합계는 구성 항목 값과 별개로 계산됩니다. 단, 이 보고서 설계를 위해 이 보고서의 구성 항목으로부터 정확한 합계를 계산할 수 있다고 정했습니다.

“Aggregation Rule (Totals Row)”“Server Complex Aggregate”에서 “Sum”으로 변경되도록 열 공식을 편집합니다. 그러면 논리적 및 물리적 SQL이 변경됩니다.

원래 집계:

GUID-96FB697B-24F7-41A9-8678-F99921E5BB19-default.jpg에 대한 설명이 이어집니다.
.jpg''

수정된 집계:

GUID-ED289D12-C0BD-4588-B288-2069EAB3EB1D-default.jpg에 대한 설명이 이어집니다.
.jpg''

이제 수정된 논리적 SQL에 “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

생성되는 물리적 질의:

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

동일한 명시적 집계 설정 옵션을 워크북에서도 사용할 수 있습니다.

GUID-DAE63F66-EF2A-45B0-8657-38301F4DC77E-default.jpg에 대한 설명이 이어집니다.
.jpg''

보고서를 검토하여 보고서에 최적의 집계 규칙이 사용되고 있는지 확인합니다. 보고서 설계에서 허용하는 경우 명시적 집계 규칙을 사용합니다.

보고서에 대한 자세한 내용은 분석 생성을(를) 참조하십시오.