ספירה ללא ערכים ריקים – Nulls

By | 24 באוגוסט 2011

אחד הדברים הטובים בקוביות של מיקרוסופט היה תמיד האפשרות להגדיר Distinct count אשר לא הייתה קיימת בחלק גדול מהקוביות האחרות.

אני משתמש הרבה ב- Distinct Count. ברם, למערכת יש ליקוי אחד משמעותי לדעתי: היא סופרת ערכים ריקים. לדוגמא טבלת עובדות ( Fact Table) המתארת הזמנות של רכב ליסינג כוללת בתוכה את מספר הרישוי של הרכב. להזמנות חדשות אין בשלב ההזמנה מספר רישוי ורק מאוחר יותר, כאשר מסופק הרכב ללקוח בפועל, ההזמנה מקבלת מספר רישוי.  כאשר הזמנה מקבלת רכב היא הופכת לודאית וביטולה כרוך בקנס כבד. אנו מעוניינים ליצור מדד אשר ימנה את הרכבים בצי הליסינג שלנו. אבוי, בטבלת העובדות, מספר הרישוי להזמנות ללא רכב הינו NULL והוא נמנה פעם אחת. מדובר על Distinct count ולכן כל ה- Nulls נמנים פעם אחת. ישנם המקלים ואומרים שסטיה של רכב אחד אינה נוראית. ברם, מה קורה עם מסתכלים על לקוח בודד שיש לו רכב אחד והזמנה חדשה ללא רכב? במקרה כזה הסטיה הכפילה את "שווי" הלקוח. רע.

ניתן לעקוף מגבלה זו של Microsoft OLAP באופן הבא. בתוך ה- DSV  נגדיר שאילתא נוספת על אותו פקט הזמנות עליו נמצאת הקוביה. השאילתא תכיל את התנאי: Where MisparRehev is not null . כלומר, הזמנות בהן אין מספר רכב כלל, רשומותיהן לא יהיו בתוך השאילתא החדשה. עתה נגדיר את המדד שסופר רכבים על השאילתא במקום על הפקט המקורי. זה מסתדר היטב עם המבנה של הקוביה הדורש שמדדים מסוג Distinct count יהיו ממילא בקבוצת מדדים (Measures group) נפרדת.

יש לזכור להגדיר את הקישור בין המימדים הקיימים לטבלת העובדות החדשה (השאילתא). כמובן שהקשר בין כל המימדים לטבלה החדשה יהיו זהים לאלו שהיו למימדים אל הטבלה הקיימת.

Distinct count without null measure

Share

כתיבת תגובה

האימייל לא יוצג באתר.