多关联条件下筛选汇总表格:统计符合条件的父项数量
问题:按分组统计符合条件的父项数量
现有三个表格:
- Table1为Table2的父信息表
- Table2是描述Table1的逆透视表(关联关系:
Table1[ID] <-> Table2[Parent ID]) - Table3为筛选条件表
需要统计各分组下符合条件的Table1父项(ID)数量,示例结果显示G1有2个符合的父项,G2有1个。尝试使用COUNTX编写DAX度量值,但返回结果均为0,无法正确关联Table2与Table3,需解决此问题。
表格结构及示例数据
Table1
| ID | Name |
|---|---|
| 1 | T1 |
| 2 | T2 |
| 3 | T3 |
Table2
| ID | Parent ID | Name | Value |
|---|---|---|---|
| 1 | 1 | Ca | 1 |
| 2 | 1 | Cb | 1 |
| 3 | 2 | Ca | 1 |
| 4 | 2 | Cb | 1 |
| 5 | 2 | Cc | 1 |
| 6 | 2 | Cd | 1 |
| 7 | 3 | Ca | 1 |
| 8 | 3 | Cb | 0 |
Table3
| ID | Group | Name | Min Value | Max Value |
|---|---|---|---|---|
| 1 | G1 | Ca | 1 | 2 |
| 2 | G1 | Cb | 1 | 2 |
| 3 | G2 | Ca | 1 | null |
| 4 | G2 | Cb | 1 | null |
| 5 | G2 | Cc | 1 | 1 |
示例输出
| Group | Match Pattern |
|---|---|
| G1 | 2 |
| G2 | 1 |
规则说明
- G1要求Ca、Cb的值在1-2之间:T1、T2符合条件
- G2要求Ca、Cb≥1且Cc=1:仅T2符合条件
尝试的度量值(返回结果全为0)
COUNTX( FILTER( Table2 ,Table2[Name]=Table3[Name] && Table2[Value]>=Table3[Min Value] && Table2[Value]<=Table3[Max Value] ) ,Table2[Parent ID] )
解决方案
正确DAX度量值
Match Pattern = VAR CurrentGroup = SELECTEDVALUE(Table3[Group]) VAR GroupConditions = FILTER(ALL(Table3), Table3[Group] = CurrentGroup) RETURN COUNTX( FILTER( Table1, VAR ParentID = Table1[ID] VAR MeetsAllConditions = COUNTROWS( FILTER( GroupConditions, VAR AttrValue = LOOKUPVALUE(Table2[Value], Table2[Parent ID], ParentID, Table2[Name], Table3[Name]) VAR MinVal = Table3[Min Value] VAR MaxVal = Table3[Max Value] RETURN (AttrValue >= MinVal) && (ISBLANK(MaxVal) || AttrValue <= MaxVal) ) ) = COUNTROWS(GroupConditions) RETURN MeetsAllConditions ), Table1[ID] )
代码说明
- 获取当前分组上下文:
CurrentGroup提取视觉对象中当前选中的分组 - 提取分组条件:
GroupConditions筛选出当前分组下的所有规则 - 迭代父项并检查条件:
- 遍历Table1中的每个父项ID
- 对每个父项,检查是否满足当前分组的所有规则:
- 用
LOOKUPVALUE找到父项对应属性的Value - 处理
Max Value为null的情况(此时只需满足≥Min Value) - 统计满足的规则数量,若等于该分组的总规则数,则视为符合条件
- 用
- 计数符合条件的父项:COUNTX统计所有满足条件的Table1[ID]
使用方法
将该度量值添加到矩阵/表格视觉对象中,配合Table3的Group字段即可得到正确的统计结果。
内容的提问来源于stack exchange,提问作者Manny Riveira
相关产品推荐
相关产品推荐

