הצטרפו לקבוצות שלנו לקבלת עדכונים מרוכזים פעם בשבוע:

ווטסאפ:
http://wa.dwh.co.il
טלגרם:
http://telegram.dwh.co.il

footage_miniהAggregate awareness הוא מנגנון חכם שהחל בטבלאות מסוכמות והמאפשר לDesigner לקבוע שהטבלה שעליה אובייקט או אובייקטים בנויים תהיה תלויה באובייקטים האחרים בשאילתא.

דוגמא:

נסתכל על עולם התוכן הפשוט:

מכיוון שטבלת הSales מכילה מליוני רשומות, אנו רוצים לגזור טבלה פיזית שתכיל סיכום של הנתונים. לצורך העניין שתי טבלאות: סיכום חודשי וסיכום שנתי. נחבר את הטבלאות לעולם ונקבל:

ניצור אובייקטים על סמך הטבלאות:

לאחר שסיימנו , נוכחנו לדעת שיש לנו בעיה : יש לנו כפילות של אובייקטים. כלומר אובייקט לכל טבלה. לדוגמא: סיכום, סיכום חודשי וסיכום שנתי. כמובן שנרצה להמנע מזה ולייצג את שלושת האובייקטים באמצעות אובייקט אחד. נרצה להגיע למצב הזה:

כדי להגיע למצב זה, נבצע את השלבים הבאים:

  1. נגדיר מה לא הולך עם מה. כלומר, איזה מידע לא ניתן להוציא מאיזה טבלה. לדוגמא,  אובייקט "חודש" וטבלת סיכום שנתי (agg_sales_yearly), הרי מטבלת הסיכום השנתי לא ניתן להוציא מידע ברמת חודש.
    1. ראשית נשרטט על דף ניר מטריציה המראה את כל הצירופים האפשרים:

שנה

חודש

תאריך

אובייקט\טבלה

 

 

 

Sales Yearly

 

 

 

Sales Monthly

 

 

 

Sales

 

 

 

 

  1.  
    1. שנית, נסמן במטריצה את כל האובייקטים שלא הולכים ביחד עם טבלה.

שנה

חודש

תאריך

אובייקט\טבלה

 

X

X

Sales Yearly

 

 

X

Sales Monthly

 

 

 

Sales

 

האובייקטים המסומנים בX נקראים incompatibles ביחס לטבלה.

  1.  
    1. נסמן באפליקציה את המטריצה\ incompatibles.
    2. ניגש לTools-àAggregate Navigation ונסמן את כל ה incompatibles:

      כפי שאתם רואים, מצד שמאל נמצאת רשימת הטבלאות בעולם ומצד ימין רשימת האובייקטים. אנו מסמנים טבלה מצד שמאל ובוחרים את האובייקטים אשר הם
      incompatibles כלפיה.
    3. בסיום אני מקישים .
    4. בסיום שלב זה הגדרנו מה לא הולך עם מה.
  2. בשלב האחרון, אנו צריכים לומר לBO איזה טבלה לקחת בכל אובייקט, זאת אנו נבצע באמצעות הפונקציה: @aggregate_aware . הרעיון העמוד מאחורי הפונקציה הוא: ניתן רשימת של שדות, הBO עובר שדה שדה (משמאל לימין) ובוחר את השדה הראשון שהטבלה שלו ניתנת להצגה , כלומר שאינה incompatible. לדוגמא , הSQL של אובייקט הנחה יראה כך:


@Aggregate_Aware(Agg_Sales_Yearly.Discount,Agg_Sales_Monthly.Discount,Sales.Discount)

 

הערה חשובה: יש לנו אינטרס שהBO ייקח טבלה מסוכמת ככל שניתן. זאת הסיבה שהטבלה המסוכמת ביותר נמצאת בצד שמאל ומימינה טבלה מסוכמת פחות וכך הלאה.

  1. בדיקה. כדי לוודא שאכן בצענו את המשימה בצורה נכונה, עלינו לערוך בדיקה.

 

תרחיש 1

הSQL שנוצר

Select dim_time.time, Sales.Discount

from dim_time,sales

where dim_time.time=sales.sales_date

 

תרחיש 2

הSQL שנוצר

Select dim_time.month, agg_sales_monthly.Discount

 from dim_time, agg_sales_monthly

 where dim_time.time= agg_sales_monthly.sales_month

 

תרחיש 3

הSQL שנוצר

Select dim_time.year, agg_sales_yearly.Discount

 from dim_time, agg_sales_yearly

 where dim_time.time= agg_sales_yearly.sales_month

 

הבדיקה עברה בהצלחה

footage