常用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]) 返回产品名称的字符数。