powerbi - 如何在DAX中的SUMX函数中按两个相关表进行过滤
问题描述
我有两个表 A 和 B,如下所示。A 中的 AccountID 与 B 中的 AccountID 有关系。
A
AccountID CmpName AccFlag SysStartTime sysEndTime
A1 Test1 1 1/1/2020 12/31/9999
A2 Test2 0 1/2/2020 12/31/9999
A3 Test3 1 1/2/2020 12/31/9999
B
ContactId AccountID ConFlag SysStartTime SysEndTime
C1 A1 1 1/1/2020 12/31/9999
C2 A1 1 1/1/2020 12/31/9999
C3 A1 0 1/1/2020 12/31/9999
C4 A2 1 1/2/2020 12/31/9999
我想获取 A 中在 B 中有 3 个或更多相关记录的记录计数。我还想从两个表中获取由 Accflag、conflag、sysStartTime 和 sysEndTime 过滤的计数。我有以下 DAX,它为我提供了 A 中的记录计数,这些记录在 B 中具有 3 个或更多相关记录,由 A 的 Accflag、sysStartTime 和 sysEndTime 过滤。我想添加带有 ConFlag、sysStartTime 和 sysEndTime 的过滤,但是我不确定如何将其添加到以下 DAX。请帮忙。
SUMX ( A,
IF ( COUNTROWS ( RELATEDTABLE ( B ) ) >= 3 &&
A[Accflag]=1 &&
A[SysStartTime]>=TODAY() &&
A[SysEndTime]>= VALUE("12/31/9999"),1 )
)
解决方案
我认为最简单的方法是创建一个计算列,指示每一行是否通过检查。像下面这样的东西可能会起作用:
Ind =
VAR AccountID=A[AccountID]
VAR Count1 = CALCULATE(COUNTROWS(B),FILTER(B,B[AccountID]=AccountID))
RETURN IF(Count1>=3 && A[Accflag]=1 && A[SysStartTime]>=TODAY() && A[SysEndTime]>= VALUE("12/31/9999"),1,0)
Ind 将为每一行给出 0 或 1,然后您可以简单地总结该字段以获得满足每个条件的总行数。如果您需要在计算中添加更多条件,这将很有用。希望这可以帮助。
推荐阅读
- java - 如何在从 ITextRenderer 和 Thymeleaf HTML 模板生成的 PDF 文件中显示 Unicode(十六进制)字符
- testing - 如何使用 Jenkins 生成 mocha 测试用例报告和展示?
- delphi - delphi 如何翻译数组中声明的字符串?
- java - Spark - 从 Scala 代码调用 Java 方法时出现 UnsupportedOperationException
- java - 在 Apache Spark 上运行 JPMML 时出现 UnmarshalException
- bash - bash while 循环在第一行之后中断
- php - 没有错误但没有插入数据
- r - 使用googleway计算距离
- javafx - 如何在javafx的堆积条形图中添加线系列
- javascript - 表单提交因表单未连接而取消