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

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

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

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

כדי להגיע למצב זה, נבצע את השלבים הבאים:
- נגדיר מה לא הולך עם מה. כלומר, איזה מידע לא ניתן להוציא מאיזה טבלה. לדוגמא, אובייקט "חודש" וטבלת סיכום שנתי (agg_sales_yearly), הרי מטבלת הסיכום השנתי לא ניתן להוציא מידע ברמת חודש.
- ראשית נשרטט על דף ניר מטריציה המראה את כל הצירופים האפשרים:
|
שנה |
חודש |
תאריך |
אובייקט\טבלה |
|
|
|
|
Sales Yearly |
|
|
|
|
Sales Monthly |
|
|
|
|
Sales |
-
- שנית, נסמן במטריצה את כל האובייקטים שלא הולכים ביחד עם טבלה.
|
שנה |
חודש |
תאריך |
אובייקט\טבלה |
|
|
X |
X |
Sales Yearly |
|
|
|
X |
Sales Monthly |
|
|
|
|
Sales |
האובייקטים המסומנים בX נקראים incompatibles ביחס לטבלה.
-
- נסמן באפליקציה את המטריצה\ incompatibles.
- ניגש לTools-àAggregate Navigation ונסמן את כל ה incompatibles:

כפי שאתם רואים, מצד שמאל נמצאת רשימת הטבלאות בעולם ומצד ימין רשימת האובייקטים. אנו מסמנים טבלה מצד שמאל ובוחרים את האובייקטים אשר הם incompatibles כלפיה. - בסיום אני מקישים
. - בסיום שלב זה הגדרנו מה לא הולך עם מה.
- בשלב האחרון, אנו צריכים לומר לBO איזה טבלה לקחת בכל אובייקט, זאת אנו נבצע באמצעות הפונקציה: @aggregate_aware . הרעיון העמוד מאחורי הפונקציה הוא: ניתן רשימת של שדות, הBO עובר שדה שדה (משמאל לימין) ובוחר את השדה הראשון שהטבלה שלו ניתנת להצגה , כלומר שאינה incompatible. לדוגמא , הSQL של אובייקט הנחה יראה כך:
@Aggregate_Aware(Agg_Sales_Yearly.Discount,Agg_Sales_Monthly.Discount,Sales.Discount)
הערה חשובה: יש לנו אינטרס שהBO ייקח טבלה מסוכמת ככל שניתן. זאת הסיבה שהטבלה המסוכמת ביותר נמצאת בצד שמאל ומימינה טבלה מסוכמת פחות וכך הלאה.
- בדיקה. כדי לוודא שאכן בצענו את המשימה בצורה נכונה, עלינו לערוך בדיקה.
תרחיש 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
הבדיקה עברה בהצלחה
