(כמובן שיש הרבה יותר מ 2 פעולות - קרוב ל 30)
האופציה הראשונה יותר פשוטה לבניה, ויותר ג'נרית (ככה זה יושב במערכת)
האופציה השניה יותר פשוטה לתשאול בקוביה ולהוספת מדדים (אחוזי הפקדות ממשיכות, הפקדות - משיכות וכדומה). יותר פשוטה למשתמש (יש לו measure לכל פעולה)
מתי כדאי לממש ב fact ומתי ב dimension ? אני נתקל עם עצמי רבות בשאלה (לאו דווקא ב accounting)
יש לך כללים מאוד ברורים בנושא מה להכניס ב FACT בלי שום קשר לכלי הקצה, שהרי מחסן הנתונים שלך לא תלוי בכלי הקצה.
סכימים, חצי סכימים ולא סכימים (סליחה על התרגום מאנגלית)
סכימים - הפקדות למשל, שאפשר לעשות גם סה"כ וגם ממוצע
חצי סכימים - יתרות, שאז רק ממוצע הוא הנכון והסה"כ בציר זמן אחד
לא סכים תאריכים.
כך שנראה ברור שהמדדים שאתה רוצה להכניס הם FACT
רק אם לא מעניין אותך לעשות חישובים למשל דוגמה שלא מעניין אותך בכלל היתרה, אלא רק האחרונה בלבד (ואז היא הופכת לנתון ללא צורך בחישוב) אז היא יכולה לעבור למימד.
למעשה הנתונים יושבים בפקט בכל מקרה, אך תהיתי מתי כדאי להוסיף גרנולציה נפרדת לסוג הרשומה - ואז הפקט תכיל 2 שדות:
1 שדה - מפתח למימד - סוג רשומה (למשל הפקדה או משיכה)
1 שדה - סכום
שליפה:
@d = select amount from fact where type = 'deposit'
@w = select amount from fact where type = 'withdrawal'
select @d , @w, @w/@d
או לפצל לשדות סכום נפרדים:
1 שדה - סכום הפקדה
1 שדה - סכום משיכה
שליפה:
select DepositAmount ,WithdrawalAmount ,WithdrawalAmount/DepositAmount from fact
האופציה השניה מרחיבה את הפקט (נניח שיש לי 30 סוגי פעולות, או אם אני רוצה לשמור עוד ערך - עמלה וכדומה),
אך מקילה על השליפות - בשליפה אחת מקבלים את כל השדות, מופרדים, ואפשר באותה מכה גם ללכת על חישובים.
נראה שאם יש לך 30 סוגי פעולות בעלי אותה גרנולריות, אפשרות ראשונה רלוונטית יותר עבורה, הרי לא תפתח 30 עמודות נוספות בטבלת ה FACT (בעוד שבאורקל תגיע מהר מאוד למגבלת כמות העמודות). אך אולי תצרף להוסיף עמודות מחושבות מראש (כדי להימנע מ MDXים מורכבים אח"כ או שליפות מיוחדות) של יחסים בין הפעולות למשל אחוז העמלה מתוך הפעולה . נסה להימנע ממימדים רבים של קוד ותאור בלבד, בדוק קונסולידציה של המימד הזה עם מימד בעל אותה הגרנולריות