تعيين قاعدة التجميع لإجماليات التقارير

يصف هذا الموضوع الطرق الواضحة لتعيين قاعدة تجميع إجمالي التقارير مما يحسن الأداء، وهو موجه خصيصًا إلى المطورين التقنيين الذين يكتبون التقارير باستخدام Oracle Analytics.

تعرض الأشكال التالية مثالاً حيث يكون تعريف التقرير هو السنة والشهر ومنطقة العميل بالمقياس العدد المميز للعملاء أصحاب طلبات الذي يتم تعريفه كعدد مميز للعملاء الذين لديهم طلبات.

فيما يلي وصف 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، يتم حساب الإجمالي بشكل مستقل عن القيم الأساسية. لكن لتصميم التقرير هذا، يمكن حساب الإجمالي الصحيح من القيم الأساسية لهذا التقرير.

إذا قمت بتحرير دالة العمود لتغيير قاعدة التجميع قاعدة التجميع (صف الإجماليات) من التجميع المركب للخادم إلى المجموع، فسيتم تغيير استعلام SQL الفعلي والمنطقي.

يعرض الشكل التالي التجميع الأصلي.

فيما يلي وصف GUID-96FB697B-24F7-41A9-8678-F99921E5BB19-default.png
.png

يعرض الشكل التالي التجميع المعدل.

فيما يلي وصف GUID-ED289D12-C0BD-4588-B288-2069EAB3EB1D-default.png
.png

يحتوي استعلام 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

يتوفر الخيار نفسه لتعيين التجميع بوضوح في المصنفات. يرجى الاطلاع على صياغة القيم الرقمية في التمثيلات المرئية. بالنسبة لهذا المثال، لعمود العدد المميز للعملاء أصحاب الطلبات، قم بتغيير أسلوب التجميع إلى المجموع.

راجع تقاريرك لمعرفة إذا كانت قاعدة التجميع الأفضل يتم استخدامها للتقرير. استخدم قاعدة التجميع الواضحة عندما يسمح التصميم بهذا.

لمزيد من المعلومات حول التقارير، يرجى الاطلاع على تكوين التحليلات.