Menu
CoddyTech

Power BI Cheat Sheet: דף עזר ל־DAX

עודכן לאחרונה

ללמוד Power BI בחינם

מידות, עמודות וטבלאות

מידה מחושבת לכל תא בפריט חזותי; עמודה מחושבת מחושבת פעם אחת לכל שורה ונשמרת.

מה זה עושהDAX
יצירת מידהTotal Sales = SUM ( Sales[Amount] )
יצירת עמודה מחושבת (ערך אחד לכל שורה)Line Total = Sales[Quantity] * Sales[Unit Price]
יצירת טבלה מחושבתTop Customers = TOPN ( 10, Customer, [Total Sales] )
הפניה לעמודה: שם הטבלה, ואחריו שם העמודה בסוגריים מרובעיםSales[Amount]
עטיפה במירכאות של שם טבלה שיש בו רווח או שהוא מילה שמורה'Date'[Date]
הפניה למידה: סוגריים מרובעים בלבד[Total Sales]
שימוש במידה בתוך מידה אחרתAverage Price = DIVIDE ( [Total Sales], [Total Units] )

פונקציות צבירה

כל אחת מהן מסכמת עמודה בהקשר הסינון הנוכחי.

מה זה עושהDAX
סכום של עמודהSUM ( Sales[Amount] )
ממוצע של עמודהAVERAGE ( Sales[Amount] )
הערך הקטן ביותרMIN ( Sales[Order Date] )
הערך הגדול ביותרMAX ( Sales[Order Date] )
ספירת השורות בטבלהCOUNTROWS ( Sales )
ספירת הערכים שאינם ריקים בעמודהCOUNT ( Sales[Amount] )
ספירת ערכים ייחודייםDISTINCTCOUNT ( Sales[Customer Key] )
חלוקה בטוחה: ריק במקום שגיאה כשהמכנה 0DIVIDE ( [Total Sales], [Total Units] )
חלוקה עם ערך שיוצג כשהמכנה 0DIVIDE ( [Profit], [Total Sales], 0 )

איטרטורים (פונקציות X)

הן עוברות על טבלה שורה אחר שורה, מחשבות ביטוי לכל שורה ואז צוברות את התוצאות.

מה זה עושהDAX
הכפלה בכל שורה ואז סכוםSUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
ממוצע של תוצאה לכל שורהAVERAGEX ( Sales, Sales[Quantity] * Sales[Unit Price] )
התוצאה הגדולה ביותר מבין השורותMAXX ( Sales, Sales[Quantity] * Sales[Unit Price] )
ממוצע של מידה לכל לקוחAVERAGEX ( VALUES ( Customer[Customer Key] ), [Total Sales] )
שימוש בעמודה מטבלה קשורה בתוך הביטויSUMX ( Sales, Sales[Quantity] * RELATED ( Product[Unit Cost] ) )
ספירת השורות שעומדות בתנאיCOUNTROWS ( FILTER ( Sales, Sales[Quantity] >= 3 ) )
דירוג כל המוצרים לפי מידהRANKX ( ALL ( Product[Product] ), [Total Sales] )
דירוג בלי פערים אחרי תיקו (1, 1, 2)RANKX ( ALL ( Product[Product] ), [Total Sales], , DESC, DENSE )
חיבור ערכים לטקסט אחדCONCATENATEX ( VALUES ( Product[Category] ), Product[Category], ", " )

CALCULATE ופונקציות סינון

CALCULATE מחשבת ביטוי עם מסננים ששונו. מסנן על אותה עמודה מחליף את הקודם; מסננים על עמודות שונות מצטרפים ב־AND.

מה זה עושהDAX
סינון לפי ערך אחדCALCULATE ( [Total Sales], Product[Category] = "Bikes" )
סינון לפי רשימת ערכיםCALCULATE ( [Total Sales], Product[Color] IN { "Red", "Blue" } )
שני מסננים (AND)CALCULATE ( [Total Sales], Product[Color] = "Red", Store[Country] = "Spain" )
OR על פני שתי עמודותCALCULATE ( [Total Sales], FILTER ( ALL ( Product[Color], Product[Brand] ), Product[Color] = "Red" || Product[Brand] = "Contoso" ) )
סינון לפי מידהCALCULATE ( [Total Sales], FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
שמירה על המסנן הקיים וחיתוך איתוCALCULATE ( [Total Sales], KEEPFILTERS ( Product[Color] IN { "Red", "Blue" } ) )
הסרת המסננים מעמודהCALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) )
הסרת כל המסננים מטבלהCALCULATE ( [Total Sales], ALL ( Product ) )
הסרת כל המסננים מטבלה חוץ מכמה עמודותCALCULATE ( [Total Sales], ALLEXCEPT ( Store, Store[Country] ) )
שמירה על הבחירה בכלי הפריסה, בלי השורות של הפריט החזותי עצמוCALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) )
שימוש בקשר לא פעילCALCULATE ( [Total Sales], USERELATIONSHIP ( Sales[Ship Date], 'Date'[Date] ) )
סינון בשני הכיוונים במידה אחת בלבדCALCULATE ( COUNTROWS ( Customer ), CROSSFILTER ( Sales[Customer Key], Customer[Customer Key], BOTH ) )
סינון לפי טבלה שאין איתה קשרCALCULATE ( [Total Sales], TREATAS ( VALUES ( Budget[Category] ), Product[Category] ) )

בינת זמן

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

מה זה עושהDAX
מתחילת השנהTOTALYTD ( [Total Sales], 'Date'[Date] )
מתחילת השנה, בשנת כספים שמסתיימת ב־30 ביוניTOTALYTD ( [Total Sales], 'Date'[Date], "6/30" )
מתחילת השנה בתוך CALCULATECALCULATE ( [Total Sales], DATESYTD ( 'Date'[Date] ) )
מתחילת הרבעוןTOTALQTD ( [Total Sales], 'Date'[Date] )
מתחילת החודשTOTALMTD ( [Total Sales], 'Date'[Date] )
אותה תקופה בשנה שעברהCALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
הזזת התאריכים במרווח (כאן חודש אחד אחורה)CALCULATE ( [Total Sales], DATEADD ( 'Date'[Date], -1, MONTH ) )
החודש הקודם כולוCALCULATE ( [Total Sales], PREVIOUSMONTH ( 'Date'[Date] ) )
התקופה כולה, שנה אחורהCALCULATE ( [Total Sales], PARALLELPERIOD ( 'Date'[Date], -1, YEAR ) )
12 החודשים האחרונים עד התאריך הגלוי האחרוןCALCULATE ( [Total Sales], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -12, MONTH ) )
טווח תאריכים קבועCALCULATE ( [Total Sales], DATESBETWEEN ( 'Date'[Date], DATE ( 2025, 1, 1 ), DATE ( 2025, 3, 31 ) ) )

תבניות נפוצות של מידות

העתיקו, ואז שנו את שמות הטבלאות והעמודות כך שיתאימו למודל שלכם.

מה זה עושהDAX
אחוז מכל הקטגוריותCategory % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) ) )
אחוז ממה שכלי הפריסה משאיריםVisible % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) ) )
צמיחה משנה לשנהYoY % = VAR LastYear = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN DIVIDE ( [Total Sales] - LastYear, LastYear )
סכום מצטבר על פני כל הזמןRunning Total = CALCULATE ( [Total Sales], FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) )
ממוצע נע של 7 ימים (לכל יום עם מכירות)Sales 7 Day Avg = AVERAGEX ( DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -7, DAY ), [Total Sales] )
הצגת ערך רק ל־5 המוביליםTop 5 Sales = IF ( RANKX ( ALLSELECTED ( Product[Product] ), [Total Sales] ) <= 5, [Total Sales] )
ספירת לקוחות מעל סףBig Customers = COUNTROWS ( FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
סך כולל ששווה לסכום השורות שלוBonus Total = SUMX ( VALUES ( Product[Category] ), [Bonus] )
הצגת ערך רק ברמה אחת של מטריצהCategory Rank = IF ( ISINSCOPE ( Product[Category] ), RANKX ( ALL ( Product[Category] ), [Total Sales] ) )
יתרת סגירה: התאריך האחרון שיש בו ערךClosing Units = CALCULATE ( SUM ( Inventory[Units] ), LASTNONBLANK ( 'Date'[Date], CALCULATE ( SUM ( Inventory[Units] ) ) ) )

פונקציות לוגיות ופונקציות מידע

לתנאים, ולבדיקה של מה שנמצא בהקשר הסינון.

מה זה עושהDAX
תנאי אחדIF ( [Total Sales] > 1000, "High", "Low" )
כמה ערכים של ביטוי אחדSWITCH ( Store[Country], "Spain", "ES", "Portugal", "PT", "Other" )
טווחים, נבדקים מלמעלה למטהSWITCH ( TRUE (), [Total Sales] >= 10000, "A", [Total Sales] >= 1000, "B", "C" )
AND ו־ORIF ( Sales[Quantity] > 2 && Sales[Amount] > 50, "Big", "Small" )
האם הערך ריק?ISBLANK ( [Total Sales] )
הערך הראשון שאינו ריקCOALESCE ( [Total Sales], 0 )
האם המסנן משאיר בדיוק ערך אחד?HASONEVALUE ( Product[Category] )
הערך היחיד הזה, או ברירת מחדלSELECTEDVALUE ( Product[Category], "All categories" )
האם השורה הזו בפריט החזותי מקובצת לפי העמודה?ISINSCOPE ( Product[Category] )
החזרת ערך ריקBLANK ()

פונקציות טקסט

האופרטור & מחבר טקסט; FORMAT הופכת מספר או תאריך לטקסט.

מה זה עושהDAX
חיבור טקסטCustomer[First Name] & " " & Customer[Last Name]
עיצוב מספרFORMAT ( [Total Sales], "#,0.00" )
עיצוב תאריךFORMAT ( 'Date'[Date], "mmm yyyy" )
התווים הראשוניםLEFT ( Product[Code], 3 )
תווים ממיקום מסויםMID ( Product[Code], 4, 2 )
אורךLEN ( Product[Name] )
אותיות גדולותUPPER ( Store[City] )
הסרת רווחים מיותריםTRIM ( Customer[Name] )
החלפת טקסטSUBSTITUTE ( Customer[Phone], " ", "" )
המיקום של טקסט, בלי הבחנה בין אותיות גדולות לקטנות (0 כשהוא לא נמצא)SEARCH ( "pro", Product[Name], 1, 0 )

פונקציות תאריך

מאחורי הקלעים תאריכים הם מספרים, ולכן אפשר לחסר אותם ולקבל ימים.

מה זה עושהDAX
התאריך של היוםTODAY ()
בניית תאריךDATE ( 2025, 12, 31 )
השנה של תאריךYEAR ( 'Date'[Date] )
מספר החודשMONTH ( 'Date'[Date] )
היום בשבוע, כשיום שני הוא 1WEEKDAY ( 'Date'[Date], 2 )
מספר השבוע, כשהשבוע מתחיל ביום שניWEEKNUM ( 'Date'[Date], 2 )
היום האחרון בחודשEOMONTH ( 'Date'[Date], 0 )
אותו יום, חודש קודםEDATE ( 'Date'[Date], -1 )
מספר הימים בין שני תאריכיםDATEDIFF ( Sales[Order Date], Sales[Ship Date], DAY )
טבלת תאריכים מתאריכים קבועיםCALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2025, 12, 31 ) )
טבלת תאריכים מהתאריכים שבמודלCALENDARAUTO ()

קשרים וחיפושים

RELATED עוקבת אחרי קשר מהצד של הרבים אל הצד של האחד.

מה זה עושהDAX
ערך מהצד של האחד (בעמודה בטבלה Sales)RELATED ( Product[Category] )
השורות בצד של הרבים ששייכות לשורה הנוכחית (בעמודה בטבלה Customer)COUNTROWS ( RELATEDTABLE ( Sales ) )
חיפוש ערך בלי קשרLOOKUPVALUE ( Product[Price], Product[SKU], Sales[SKU] )
נתיב הורה וילד (להיררכיות ולאבטחה ברמת השורה)PATH ( Employee[Employee ID], Employee[Manager ID] )
המשתמש המחובר, לאבטחה דינמית ברמת השורהUSERPRINCIPALNAME ()

פונקציות טבלה

הן מחזירות טבלאות: השתמשו בהן בטבלה מחושבת, בתוך CALCULATE או באיטרטור.

מה זה עושהDAX
ערכים ייחודיים במסנן הנוכחיVALUES ( Product[Category] )
שורות שעומדות בתנאיFILTER ( Product, Product[Price] > 100 )
N השורות המובילות לפי מידהTOPN ( 5, ALL ( Product[Product] ), [Total Sales] )
קיבוץ לפי עמודות והוספת מידותSUMMARIZECOLUMNS ( Product[Category], "Sales", [Total Sales] )
הוספת עמודה לטבלהADDCOLUMNS ( VALUES ( Product[Category] ), "Sales", [Total Sales] )
בחירת עמודות ושינוי השמות שלהןSELECTCOLUMNS ( Customer, "Name", Customer[Name], "City", Customer[City] )
רשימת מספריםGENERATESERIES ( 1, 10, 1 )
כל הצירופים של שתי טבלאותCROSSJOIN ( VALUES ( 'Date'[Year] ), VALUES ( Product[Category] ) )
הערמת שתי טבלאות עם אותן עמודותUNION ( 'Sales 2024', 'Sales 2025' )

משתנים

VAR נותן שם לשלב ומחשב אותו פעם אחת; RETURN מחזיר את התוצאה.

מה זה עושהDAX
משתנה אחדMargin % = VAR Revenue = [Total Sales] RETURN DIVIDE ( Revenue - [Total Cost], Revenue )
כמה משתניםSales vs LY = VAR CY = [Total Sales] VAR PY = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN CY - PY
טבלה בתוך משתנהTop 5 Total = VAR Top5 = TOPN ( 5, ALL ( Product[Product] ), [Total Sales] ) RETURN CALCULATE ( [Total Sales], Top5 )

צעדים ב־Power Query (M)

Power Query מעצב את הנתונים לפני הטעינה. אלה נוסחאות ה־M שמאחורי הלחצנים הנפוצים.

מה זה עושהM
שמירה על השורות המתאימותTable.SelectRows(Source, each [Status] = "Paid")
הסרת עמודותTable.RemoveColumns(Source, {"Notes", "Temp"})
הגדרת סוגי עמודותTable.TransformColumnTypes(Source, {{"Amount", type number}, {"Date", type date}})
שינוי שם של עמודהTable.RenameColumns(Source, {{"amt", "Amount"}})
הוספת עמודהTable.AddColumn(Source, "Total", each [Quantity] * [Price], type number)
מיזוג (צירוף) של שתי שאילתותTable.NestedJoin(Sales, {"ProductID"}, Products, {"ProductID"}, "Product", JoinKind.LeftOuter)
הוספה (הערמה) של שאילתותTable.Combine({Sales2024, Sales2025})
ביטול ציר של עמודות לשורותTable.UnpivotOtherColumns(Source, {"Product"}, "Month", "Amount")
קיבוץ וצבירהTable.Group(Source, {"Category"}, {{"Sales", each List.Sum([Amount]), type number}})
החלפת שגיאות בערךTable.ReplaceErrorValues(Source, {{"Amount", 0}})

דף העזר הזה ל־Power BI מרכז בעמוד אחד את ה־DAX שכותבים הכי הרבה: צבירות, איטרטורי X, CALCULATE והפונקציות שמשנות מסננים, בינת זמן, פונקציות טקסט ותאריך, ותבניות של מידות שאפשר להעתיק, כמו אחוז מהסך הכול, צמיחה משנה לשנה וסכום מצטבר.

הדוגמאות משתמשות במודל מכירות עם הטבלאות Sales, Product, Customer ו־'Date'; שנו את השמות כך שיתאימו למודל שלכם. כל ה־DAX כאן נותח במנוע של קורס Power BI של Coddy, שבו כותבים אותו בסביבת עבודה של Power BI בדפדפן ומקבלים עליו בדיקה.

שאלות נפוצות על דף העזר של Power BI

האם דף העזר הזה ל־Power BI בחינם?

כן. קראו אותו כאן או שמרו אותו במועדפים; אין צורך בהרשמה.

מה ההבדל בין מידה לעמודה מחושבת?

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

מה CALCULATE עושה?

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

למה להשתמש ב־DIVIDE ולא באופרטור /?
DIVIDE מחזירה ערך ריק (או ערך שתבחרו) כשהמכנה אפס או ריק. האופרטור / מחזיר במקום זה אינסוף או ערך שגיאה, וזה מופיע בפריטים החזותיים.
צריך טבלת תאריכים בשביל בינת זמן?
כן. פונקציות כמו TOTALYTD ו־SAMEPERIODLASTYEAR צריכות טבלה עם שורה לכל יום, בלי פערים ועם שנים שלמות, שקשורה לטבלאות העובדות ומסומנת כטבלת תאריכים.
ה־DAX הזה עובד גם ב־Power Pivot של Excel וב־Analysis Services?

שפת DAX משותפת, ולכן כמעט כל מה שכאן עובד גם שם. כמה פונקציות חדשות יותר מגיעות קודם ל־Power BI.

איפה אפשר לתרגל DAX?

בקורס Power BI של Coddy: כל שיעור פותח לכם סביבת עבודה של Power BI בדפדפן ובודק את המידה שלכם מול הנתונים של השיעור ומול עותקים נסתרים שלהם.

איור של שפות התכנות ב-Coddy

ללמוד Power BI עם Coddy

להתחיל