常用DAX 函數
以下這些函數是 DAX 中最常用的一部分,通過熟練掌握這些函數,你可以有效地進行數據分析和建模。
聚合函數 (Aggregation Functions)
SUM()
用途:對指定列中的所有數值求和。
語法:SUM()
示例:SUM(Sales[Amount]) 計算銷售金額列的總和。
AVERAGE()
用途:計算指定列中所有數值的平均值。
語法:AVERAGE()
示例:AVERAGE(Sales[Amount]) 計算銷售金額列的平均值。
MIN()
用途:返回指定列中的最小值。
語法:MIN()
示例:MIN(Sales[Amount]) 返回銷售金額列中的最小值。
MAX()
用途:返回指定列中的最大值。
語法:MAX()
示例:MAX(Sales[Amount]) 返回銷售金額列中的最大值。
COUNT()
用途:計算指定列中非空值的個數。
語法:COUNT()
示例:COUNT(Sales[Amount]) 計算銷售金額列中非空值的個數。
DISTINCTCOUNT()
用途:計算指定列中不同值的個數。
語法:DISTINCTCOUNT()
示例:DISTINCTCOUNT(Sales[ProductID]) 計算銷售表中不同產品ID的個數。
時間智能函數 (Time Intelligence Functions)
TOTALYTD()
用途:計算從年初到指定日期的累計總和。
語法:TOTALYTD(, , [<year_end_date>])
示例:TOTALYTD(SUM(Sales[Amount]), Sales[Date]) 計算從年初到當前日期的銷售金額總和。
SAMEPERIODLASTYEAR()
用途:返回與去年同期相同的日期范圍。
語法:SAMEPERIODLASTYEAR()
示例:SAMEPERIODLASTYEAR(Sales[Date]) 返回與去年同期相同的日期范圍。
DATEADD()
用途:按指定的時間間隔移動日期。
語法:DATEADD(, <number_of_intervals>, )
示例:DATEADD(Sales[Date], -1, MONTH) 返回前一個月的日期。
DATESYTD()
用途:返回從年初到指定日期的日期范圍。
語法:DATESYTD(, [<year_end_date>])
示例:DATESYTD(Sales[Date]) 返回從年初到當前日期的日期范圍。
過濾函數 (Filter Functions)
CALCULATE()
用途:更改上下文以計算表達式。
語法:CALCULATE(, , , …)
示例:CALCULATE(SUM(Sales[Amount]), Sales[Region] = “North”) 計算北區的銷售金額總和。
FILTER()
用途:返回滿足條件的表。
, <filter_expression>)
語法:FILTER(
示例:FILTER(Sales, Sales[Amount] > 1000) 返回銷售金額大于1000的記錄。
ALL()
用途:忽略所有篩選器,返回整個表或列。
語法:ALL(<table_or_column>)
示例:ALL(Sales) 忽略所有篩選器,返回整個銷售表。
ALLEXCEPT()
用途:忽略除指定列以外的所有篩選器。
, , , …)
語法:ALLEXCEPT(
示例:ALLEXCEPT(Sales, Sales[Region]) 忽略除區域列以外的所有篩選器。
邏輯函數 (Logical Functions)
IF()
用途:根據條件返回不同的值。
語法:IF(, <true_value>, <false_value>)
示例:IF(Sales[Amount] > 1000, “High”, “Low”) 如果銷售金額大于1000,返回 “High”,否則返回 > > “Low”。
AND()
用途:如果所有參數都為真,則返回真。
語法:AND(, )
示例:AND(Sales[Amount] > 1000, Sales[Region] = “North”) 如果銷售金額大于1000且區域為北> > 區,返回真。
OR()
用途:如果任一參數為真,則返回真。
語法:OR(, )
示例:OR(Sales[Amount] > 1000, Sales[Region] = “North”) 如果銷售金額大于1000或區域為北區,> 返回真。
NOT()
用途:如果參數為假,則返回真;反之亦然。
語法:NOT()
示例:NOT(Sales[Region] = “North”) 如果區域不為北區,返回真。
數學和三角函數 (Math and Trigonometric Functions)
ABS()
用途:返回數值的絕對值。
語法:ABS()
示例:ABS(Sales[Amount]) 返回銷售金額的絕對值。
ROUND()
用途:將數值四舍五入到指定的位數。
語法:ROUND(, <num_digits>)
示例:ROUND(Sales[Amount], 2) 將銷售金額四舍五入到兩位小數。
INT()
用途:將數值截斷為整數。
語法:INT()
示例:INT(Sales[Amount]) 將銷售金額截斷為整數。
文本函數 (Text Functions)
CONCATENATE()
用途:將兩個文本字符串合并為一個字符串。
語法:CONCATENATE(, )
示例:CONCATENATE(Sales[Product], " - ", Sales[Category]) 合并產品名稱和類別。
LEFT()
用途:返回文本字符串的左邊指定數量的字符。
語法:LEFT(, <num_chars>)
示例:LEFT(Sales[Product], 3) 返回產品名稱的前3個字符。
RIGHT()
用途:返回文本字符串的右邊指定數量的字符。
語法:RIGHT(, <num_chars>)
示例:RIGHT(Sales[Product], 3) 返回產品名稱的后3個字符。
LEN()
用途:返回文本字符串的字符數。
語法:LEN()
示例:LEN(Sales[Product]) 返回產品名稱的字符數。