למה צריך שדה מחושב ולמה צריך מדד?
בעת בניית מודל נתונים ב-Power BI אנחנו לא מסתפקים רק בנתונים שנשלפו ממערכות המקור. ברוב המקרים נדרשת עבודה לוגית נוספת כדי לייצר ערכים חדשים, שמייצגים ידע עסקי: חישובים, סיווגים, תנאים, אחוזים, סכומים, יחסים, דירוגים ועוד.
לצורך כך קיימים שני מנגנונים עיקריים במודל הנתונים:
- שדה מחושב (Calculated Column)
- מדד (Measure)
כל אחד מהם נועד למטרות אחרות, פועל בצורה שונה, ונדרש בסיטואציות שונות.
שדה מחושב
שדה מחושב הוא עמודה חדשה שמתווספת לטבלה ומטרתv להפיק ערך חדש לכל שורה בטבלה, על סמך שדות אחרים בטבלה (או בטבלאות קשורות).
מתי נשתמש בו?
- כשצריך לפלח את הנתונים לפי מאפיין חדש שאינו קיים בטבלה.
- כשצריך ליצור שדה מיון, תיוג או קבוצה לפי ערך מספרי או טקסטואלי.
- כשצריך לבנות היררכיה שבה השדה החדש ישמש כשלב בה.
- כשצריך לבסס קשרים בין טבלאות (שדות מחושבים יכולים לשמש כמפתחות).
- כשצריך להמיר תאריכים, לחשב גיל, ליצור קודים פנימיים וכ'ו.
דוגמאות
- Age = YEAR (TODAY ()) – YEAR (Employees[Birthdate])
- Profit = Sales [Price] – Sales [Cost]
- Segment = IF (Sales [Amount] > 1000, "High", "Regular")
למה זה חשוב?
שדה מחושב מרחיב את המידע הקיים בטבלה – הוא משמש כפילטר, כציר ניתוח, וכאובייקט מבני שניתן להפעיל עליו את כל יכולות .Power BI
הוא הכרחי כאשר נדרש מידע חדש שנצמד לשורות של הנתונים.
שדות מסכמים – מדדים (Measure)
מדד הוא ביטוי דינמי שמחזיר ערך סיכום משתנה – כמו סכום, ממוצע, ספירה, אחוז וכו'. מדד לא מתווסף כעמודה בטבלה, אלא קיים כישות עצמאית שמופיעה רק בעת הצגת הנתונים בדוח.
מתי נשתמש בו?
- כשצריך להפעיל פונקציה סיכומית על שדות בטבלה, כדוגמת סיכום ערך מכירות ללקוח, סיכום כמות תקלות בחודש וכד' (חישוב ערך שמבוסס על סכימת הקשר הסינון בדוח (.
- כשצריך ליצור מדד ביצוע כמותי Total Sales ,Average Profit ,% Growth.
- כשצריך לנתח נתונים בצורה מצטברת או יחסית.
- כשצריך להשוות ערכים בין קבוצות.
- כשצריך להציגKPI במספר, בגרף, בלוח מחוונים.
דוגמאות
- Total Sales = SUM (Sales [Amount])
- Average Discount = AVERAGE (Sales [Discount])
- Profit Margin % = DIVIDE([Profit], [Total Sales])
למה זה חשוב?
המדדים הם לב-ליבה האנליטי של .Power BI הם מספקים תמונה משתנה ודינמית של הביצועים, בהתאם לבחירות המשתמש ומאפשרים להשוות, למדוד, לנתח ולהציג מגמות בצורה חכמה.
מדד מחושב רק כאשר צריך אותו ולכן הוא גם חסכוני יותר בזיכרון.
השוואה מהירה
כיצד כותבים שדות מחושבים ומדדים?
את השדות המחושבים והמדדים ב-Power BI אנו כותבים באמצעות שפה ייעודית בשםDAX – ראשי תיבות של Data Analysis Expressions. זוהי שפת נוסחאות שמאפשרת לבצע חישובים, תנאים, סינונים וניתוחים אנליטיים מתקדמים על גבי מודל הנתונים.
DAX מזכירה במבנה שלה נוסחאות באקסל, אך היא פועלת על טבלאות שלמות או על שדות שלמים ולא על תאים בודדים. בשונה מאקסל, היא מודעת לקשרים בין טבלאות, לסינונים פעילים, ולתצוגה הדינמית של הדוח.
עקרונות התחביר (Syntax) של DAX – רמת מתחילים
כל ביטוי ב-DAX בנוי ממבנה תחבירי פשוט יחסית:
קריאה לשדות קיימים מתבצעת באמצעות סוגריים מרובעים:
אם מזכירים גם את שם הטבלה, יש להשתמש בתחביר:
השפה כוללת:
להבין את צורת החשיבה של DAX – הקשר שורה והקשר סינון
כדי להבין איך DAX באמת "חושבת", חשוב להכיר שני מושגי יסוד שמניעים את כל החישובים: הקשר שורה (Row Context) והקשר סינון(Filter Context) .
הקשר שורה (Row Context)
זהו ההקשר שבו DAX פועלת בתוך שורה אחת בטבלה. כלומר – כאשר מחשבים שדה מחושב, DAX מסתכלת רק על השדה של השורה הנוכחית ומבצעת חישוב עבור אותה שורה בלבד.
דוגמה
Sales value = tblSales[Quantity]*tblSales[Price]
הדוגמה יוצרת שדה בשם Sales value ועוברת שורה שורה וכל שורה מחשבת את מחזור המכירות לפי מכפלת מחיר השורה בכמות השורה.
הקשר סינון (Filter Context)
זה הוא ההקשר שנוצר מהסינונים הפעילים בדוח – כגון בחירה של שנה, קטגוריה, אזור וכו.'
כאשר אנו משתמשים במדד ,DAX תהליך החישוב מזהה עבור כל חישוב את כל הסינונים המופעלים על החישוב, ומחשבת את הערך רק לפי השורות שמעניינות באותו רגע.
הדוגמה סוכמת את השדה tblSales [Sales value] שנוצר בדוגמה הקודמת:
Sum of Sales value=sum (tblSales[Sales value])
החישוב של המדד לא מתבצע עד אשר המדד ממוקם בתצוגת דוח. כאשר המדד ממוקם בתצוגת דוח, עבור כל תא בטבלה מבוצע חישוב בנפרד. עבור כל חישוב מוגדרות השורות המשתתפות בתהליך הסכימה, והליך הסכימה מתייחס רק אליהן:
כל אחד מהתאים המחושבים מבצע את החישוב בשני שלבים:
- זיהוי הקשר הסינון (מה השורות הרלוונטיות לחישוב)
- סכימת שדה Sales value עבור השורות המסוננות
סיכום סוגיית ההקשר:
- שדה מחושב מבוסס על הקשר שורה ומחשב ערך חדש לכל שורה.
- מדד מבוסס על הקשר סינון ומחשב ערך כולל לפי הפילוחים בדוח.
- שפת DAX יודעת להתייחס לשני ההקשרים בהתאם לסוג הביטוי שאתה כותב.
ההבנה של ההקשרים והתחביר היא הבסיס לעבודה נכונה עם שדות מחושבים ומדדים וזה נדרש כדי להבטיח שהתוצאה תהיה נכונה, עקבית ותואמת לציפיות העסקיות.
איך יוצרים בפועל
שדה מחושב:
- עבור ל-Data View
- בחר
- בחר טבלה
- בחר לשונית Table tools בסרגל הכלים > לחץ על New column
5. כתוב ביטוי DAX בשורת הנוסחאות .
מדד:
- בכל תצוגה, לחץ על New measure
2. כתוב נוסחת DAX
3. להקפיד שהביטוי מחושב על קבוצת שורות ולא על שורה בודדת משום שמדד מתייחס להקשר סינון ולא להקשר שורה.
סיכום
שדות מחושבים ומדדים הם כלים הכרחיים להפקת תובנות ממודל הנתונים.
בעוד שדות מחושבים פועלים על שורות בודדות ומוסיפים עמודות חדשות, מדדים מספקים חישובים דינמיים וגמישים תלויי הקשר.
באמצעות שליטה ב-DAX ובתחביר הנכון ניתן לבנות מודלים חזקים, ברורים וניתנים להרחבה – שמובילים לדוחות עשירים ובעלי ערך עסקי ממשי.