למדנו קצת על הכלי הנפוץ Power bi שתוכנן על מנת להיות תחלופה לתוכנת ה- Excel, המשמשת מזה כ- 20 שנה כסכין ומזלג של אנליסטים ושל אנשי כספים, שנחשפה במגבלותיה ככל שמסדי הנתונים גדלו והצורך לנתח פרמטרים מגוונים יותר עלה.
סיימנו את המאמר האחרון לאחר פירוט התכונות העיקריות כמו גם יתרונות בולטים בו, אך אי אפשר לכתוב על Power bi ללא התייחסות לשפת הDAX
Data Analysis Expressions
אז היום אסקור את התכונות הבסיסיות של השפה אגדיר מה הייעוד שלה ואדגים מעט מיכולותיה. השפה פותחה לשם ביצוע אינטראקציה עם נתונים במגוון הפלטפורמות שלהם כמו מודלים טבלאיים של Power BI, PowerPivot ו- SSAS. היא נועדה להיות פשוטה וקלה ללימוד תוך חשיפת העוצמה והגמישות של מודלים טבלאיים. באופן מסוים, תוכלו להשוות אותה לנוסחאות אקסל משופרות.
אז בואו נתחיל עם היסודות של DAX,
מי שכבר התנסה עם הכלי יודע שדי קל ליצור דוחות באמצעות Power BI, שיציגו תובנות בעלות ערך ישר מהנתונים הגולמיים שלנו. אבל, מה אם אנו צריכים לנתח את אחוזי הצמיחה בכל קטגוריות המוצרים ולכל טווחי התאריכים השונים? או לחלופין, עלינו לחשב את הצמיחה השנתית של החברה באחוזים בהשוואה לחברות מתחרות ?
לימוד DAX יעזור לנו להפיק את המקסימום מהנתונים שלנו כך נוכל לפתור בעיות עסקיות אמיתיות. שפת DAX כוללת פונקציות, אופרטורים ומשתנים,
אם נהיה מדויקים ישנן למעלה מ- 200 פונקציות בהן נוכל להשתמש, ה"ספרייה" של השפה מספקת גמישות עצומה ביצירת אמצעים לחישוב התוצאות הרצויות כמעט לכל צורך בניתוח נתונים.
לפני שאתחיל להציג את השפה אני רוצה להסביר למה לכל אדם בתחום האנליזה והנתונים כדאי להכיר וללמוד את השפה.
למה כדאי ללמוד DAX
זה פותח עולם חדש לגמרי!
משתמש ב- Power BI שלא משתמש בDAX הוא כמו משתמש ב- Excel בלי להכיר נוסחאות כלל ולפתע הוא מגלה את האפשרות של השימוש בהן, סבבה – הצלחת עד כה לבנות את הטבלאות שלך, להוסיף כמה תרשימים וללחוץ על כפתור הסכום / הממוצע / … אבל פתאום אתה מגלה את העולם של פונקציות VLOOKUP, IF ומה לא. למרות שהשוואה זו אינה לחלוטין נכונה לפחות לדעתי, שהרי Power BI הוא כבר כלי חזק להפליא גם ללא DAX, ולעומת זאת, כל דבר מעבר לשימוש קל באקסל כבר דורש נוסחאות. עם זאת, לימוד DAX יפתח בפניכם עולם חדש של Power BI.
אתם בטח יודעים שלא צריך הרבה בכדי להגיע לנקודה בה אתה מקלל את המסך שלך, כי הדשבורד שבנית לא נותן לך את התוצאות שאותן ציפית לקבל. ברגע שתדעו להשתמש ב- DAX תופתעו מכמה מכאבי הראש הללו תוכלו להימנע, או לעקוף לחלוטין (בצורה פרועה כלשהי).
ככל שתשתפרו ב- DAX, כך תוכלו להפוך את לוח המחוונים שלכם לחכם יותר. באמצעות DAX תוכלו ליצור עמודות מחושבות מורכבות ומשמעותיות יותר ו / או מדדים שבאמצעותם תוכלו להגביל ולסנן את הנתונים שעל לוח המחוונים. למרות שיש סינטקס שעשוי להכביד על המנוע של הכלי בעת עריכת החישובים
ניתן ללמוד איך לכתוב בצורה אופטימאלית מבחינת שימוש במשאבי זיכרון ובכך להגביל את השימוש במשאבים, לדוגמה :
חשוב להשתמש במספרים שלמים ככל האפשר חיפוש בשורות של נתונים מספריים הוא הרבה יותר מהיר מאשר חיפוש במחרוזות. לכן במידת האפשר, תשתמש במספרים שלמים. לדוגמא, עדיף להשתמש בערכי 0/1 במקום "כן / לא". או 1/2/3 במקום "נמוך / בינוני / גבוה". ושים לב, שספרה אינה בהכרח מספר שלם. יכול להיות שיש לך 1/2/3 כערכים, אך הם עדיין יכולים להיחשב מחרוזות. אז בדוק תמיד את פורמט הנתונים בעורך השאילתות.
דבר אחרון DAX הוא השקעה בטוחה
המיומנות שתרכשו לא להיות מוגבלת לסביבת Power BI. ניתן להשתמש ב- DAX במוצרי מיקרוסופט בטבלה כמו:
Power BI
Microsoft Analysis Services
Microsoft Power Pivot for Excel
שלא לדבר על תחביר ה- DAX שדומה מאוד גם לנוסחאות Excel, מה שהופך את הידע שגבר יש לכם להיות מקפצה לעבר DAX.
לשפה יש שלושה מושגים בסיסיים:
1. תחביר – Syntax
2. הקשר – Context
3. פונקציות – Functions
כמובן שיש מושגים חשובים אחרים, אך הבנת שלושת אלו תספק את הבסיס הטוב ביותר שעליו אתם הולכים לבנות את היכולות שלכם.
1. תחביר – Syntax
התחביר כולל מרכיבים שונים המרכיבים נוסחה ואת
אופן כתיבתה. תסתכלו על נוסחת פשוטה זו.
כשמנסים להבין נוסחת DAX, לעתים קרובות יעזור לכם לפרק כל אחד מהאלמנטים לשפה שאנו חושבים ומדברים בה מדי יום. למשל: אנו יכולים לקרוא זאת כך "עבור המדד בשם סך המכירות, נחשב את סכום הערכים בעמודה [SalesAmount] בטבלת המכירות."
נוסחה זו כוללת את רכיבי התחביר הבאים:
A. שם המדד.
B. אופרטור = שמציין את תחילת הנוסחה.
C.פונקציית SUM, שמסכמת את כל המספרים בעמודה SalesAmount בטבלת Sales.
.D סוגריים עגולים (), שמקיפים כל ביטוי המכיל ארגומנט אחד או יותר. כל הפונקציות דורשות ארגומנט אחד לפחות. ארגומנט מעביר ערך לפונקציה.
E. הטבלה הרלוונטית Sales.
F. העמודה הרלוונטית אותה נדרש לסכום SalesAmount
2. הקשר – Context
הקשר הוא נושא חשוב וקריטי בהבנה של השפה ומתחלק
לשניים
Row context
בפשטות זה ביצוע האיטרציה (חזרתיות)
לדוגמה אם יש לי טבלת מכירות שכל שורה בה היא מכירה ויש לי בה רק 3 עמודות, עמודת מספר הזמנה עמודת מחיר ועמודת כמות שנרכשה,
ואנו רוצים לדעת כמה הטוטאל של המכירות שלי
אם אעשה SUM על עמודת המחירים ואת התוצאה אכפיל בSUM של עמודת הכמויות אקבל תוצאה שגויה לכן נצטרך לבצע איטרציה,
נצטרך להגיד : DAX יקירי לך בבקשה ולכל שורה ושורה בטבלה שלי תכפיל את המחיר בכמות
ותשמור בצד את הערך שאתה מקבל, כשאתה מסיים תן לי בבקשה את הSUM של כל הערכים ששמרת בצד
וזה ייראה כך:
כמובן שנוכל גם להוסיף עמודה מחושבת חדשה ועליה לבצע SUM רגיל
Filter context
בפשטות זה פילטר
כשאתם רוצים להציג טבלה בדו"ח, FILTER CONTEXT הוא קבוצת המסננים שמופעלים לפני שהטבלה מוצגת, למשל מכירות רק של סניף תל אביב לקטגוריית פריטים "נעלי ספורט"
ואם תרצו לראות דוגמה פשוטה בקוד
שימו לב שאני משתמש בתוצאת החישוב מהפסקה הקודמת [Total Sales] כמדד בסיס ועליו מוסיף פילטר.
על פונקציית Calculate נלמד בהמשך אך חשוב לדעת שהפונקציה CALCULATE שימושית מאוד מכיוון שהיא יכולה לשנות את ה Filter Context של הביטוי כמו שראינו בדוגמה.
חשוב להבין את השורה התחתונה🎯
Filter context מפלטר לא מבצע איטראציה.
Row context : מבצע איטראציה, לא פילטר.
3. פונקציות – Functions
פונקציות הן נוסחאות מוגדרות מראש, מובנות ומסודרות. הן מבצעות חישובים באמצעות ארגומנטים שהועברו אליהם. ארגומנטים אלו יכולים להיות מספר, טקסט, ערכים לוגיים או פונקציות אחרות כמו שהקדמנו ישנן מעל 200 פונקציות לDAX והן מתחלקות למשפחות,
לדוגמה פונקציות תאריך ושעה, פונקציות סינון, פונקציות פיננסיות, פונקציות מידע, פונקציות לוגיות, פונקציות מתמטיות, פונקציות סטטיסטיות, פונקציות טקסט….
לפני הסיום אני רוצה לתת כמה שאלות בסיסיות ששואלים בראיונות עבודה בנושא DAX שימו לב לצורה בה אני כותב את התשובה לשאלה ונסו ליישם על שאלות ששאלו אתכם…
1) ציין את היתרונות של שימוש במשתנים (Variable) ב- DAX.
משתנים הם מאפיין מרכזי שמקל על כתיבת קוד DAX. שימוש במשתנים מגביר מאוד את הקריאה והשימוש החוזר של הקוד. על ידי הכרזה והערכה של משתנה, ניתן לעשות שימוש חוזר במשתנה מספר פעמים בביטוי DAX, מה שעוזר לנו להימנע משאילתות נוספות ממקור מסד הנתונים ומייעל את הביצועים של הדוחות, חשוב לזכור שניתן להשתמש ולקרוא לערכי המשתנים רק בתוך הScope של הנוסחה הספציפית ולא מנוסחאות אחרות.
2) ציין את ההבדלים העיקריים בין פונקציות MAX ו- MAXA
אם ברצונך לחשב ערכים מספריים, השתמש ב- MAX. עם זאת, אם מדובר בערכים שאינם מספריים, עליך להשתמש ב- MAXA.
3) למה פונקציות מקוננות של Dax שוות ערך ב SQL? שאילתות משנה בSQL.