统计函数是最强力的函数,同时也是最复杂的函数,为数据的分析,提供非常强力的工具,同时,在使用统计函数时,必须考虑到数据模型,表之间关系,数据重复等因素,一般都会搭配过滤函数实现数据的提取和分析。
1,求和函数
从表中计算每一个行的加和,只有数值会被加和,忽略空值,date,逻辑值或文本值:
SUMX(<table>, <expression>)
示例,第一个参数是过滤器返回的表值,计算[Freight]的加和:
=SUMX(FILTER(InternetSales, InternetSales[SalesTerritoryID]=5),[Freight])
可以把SUMX函数,转换为CALCULATE函数:
=CALCULATE( SUM(InternetSales[Freight]), FILTER(InternetSales, InternetSales[SalesTerritoryID]=5))
2,计数函数
计算函数分为:COUNTX和COUNTAX,COUNTX只统计数值,忽略空值(blank),date,逻辑值或文本值;COUNTAX函数统计非空值(blank),包含数值,date,逻辑值或文本值。
COUNTX(<table>,<expression>)
COUNTAX(<table>,<expression>)
例外:如果列中包含表达式,而表达式的结果是空值,但是,COUNTAX/COUNTX函数把包含公式的列值作为非空(nonblank)看待,在这种情况下,计数函数会增加计数值。
如果COUNTAX函数没有数据列做计数,返回blank;如果COUNTAX函数聚合的数据列都是blank,返回0。
3,唯一值计数
统计列的唯一值计数,参数是表列,允许是任意数据类型,当找不到任何数据行时,返回BLANK,否则,统计唯一值的数量。
DISTINCTCOUNT(<column>)
4,分组聚合函数
DAX 中功能最强大的函数,对相互关联的Table按照特定的字段,分组聚合,由于分组列是唯一的,通过SUMMARIZE函数,可以获得多列的唯一值。
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
示例:对数据表 ResellerSales_USD ,按照字段 DateTime[CalendarYear] 和 ProductCategory[ProductCategoryName]分组,计算 SUM(ResellerSales_USD[SalesAmount_USD])和 SUM(ResellerSales_USD[DiscountAmount]) 。
SUMMARIZE(ResellerSales_USD
, DateTime[CalendarYear]
, ProductCategory[ProductCategoryName]
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
分组聚合函数,能够利用关系,引用相关表的字段,也就是说,SUMMARIZE函数能够对有关系的表执行连接(join)运算,计算笛卡尔乘积,对Join的结果集执行分组聚合,例如:
summarize
(
'Internet Sales',
'Product'[Product Name],
'Date'[Calendar Year],
"Total Sales Amount", sum('Internet Sales'[Sales Amount])
)
从数据表Date中获取字段Calendar Year的前提是,数据表Date和Internet Sales之间存在关系,从数据表Product中获取字段Product Name的前提是:数据表Product和Internet Sales之间存在关系。
分组聚合函数用于创建新表,在Modeling菜单中,通过“New Table”从DAX表达式中创建新的Table:
参考文档:SUMMARIZE – groupping in data models (DAX – Power Pivot, Power BI)
暂无数据