如何在DAX中按多条件汇总表格并分类型统计计数
问题描述
现有如下数据表格:
| name | count | Include | type |
|---|---|---|---|
| abc | 1 | true | 1 |
| abc | 2 | true | 1 |
| abc | 3 | true | 2 |
| abc | 1 | true | 2 |
| abc | 1 | false | 2 |
| def | 1 | true | 1 |
| def | 1 | false | 1 |
当前已使用以下DAX代码生成Include为true时,按name汇总count的表:
SummaryTable = CALCULATETABLE ( SUMMARIZE ( 'Table', 'Table'[name], "count", sum('Table'[count]) ), 'Table'[Include] = TRUE)
需要进一步按不同type分别求和,生成包含type 1 count和type 2 count字段的汇总表,但不清楚如何在SUM/SUMX中添加筛选条件。
解决方案
你可以通过两种简洁的方式实现按type筛选求和:
方法1:使用CALCULATE嵌套SUM(推荐)
在SUMMARIZE的上下文里,CALCULATE可以临时添加筛选条件,配合SUM快速实现目标:
SummaryTable = CALCULATETABLE ( SUMMARIZE ( 'Table', 'Table'[name], "type 1 count", CALCULATE(SUM('Table'[count]), 'Table'[type] = 1), "type 2 count", CALCULATE(SUM('Table'[count]), 'Table'[type] = 2) ), 'Table'[Include] = TRUE )
方法2:使用SUMX配合筛选
SUMX是迭代函数,可以通过FILTER指定筛选范围,仅对符合type条件的行累加count:
SummaryTable = CALCULATETABLE ( SUMMARIZE ( 'Table', 'Table'[name], "type 1 count", SUMX( FILTER('Table', 'Table'[type] = 1), 'Table'[count] ), "type 2 count", SUMX( FILTER('Table', 'Table'[type] = 2), 'Table'[count] ) ), 'Table'[Include] = TRUE )
最终结果
两种方法都会生成如下汇总表:
| name | type 1 count | type 2 count |
|---|---|---|
| abc | 3 | 4 |
| def | 1 | 0 |
内容的提问来源于stack exchange,提问作者n179911a
相关产品推荐
相关产品推荐

