首页 > 解决方案 > Power BI如何根据列是否包含来自其他列的字符串求和

问题描述

我有一个实体列,每个实体一行。此表包含三列:实体 ID、描述符和指标。描述符是许多代码的串联,我希望看到按代码分解的指标。

我最初只是将 Descriptor 列拆分为许多行,但这会导致一些数据关系问题,所以我想在不拆分 Descriptor 列的情况下这样做。

期望的结果

我尝试执行以下 DAX 公式,但它导致错误指出“表达式包含多个列,但在用作表过滤器表达式的 True/False 表达式中只能使用单个列”

Desired Output Metric = CALCULATE('Metric',CONTAINSSTRING('Entity Table'[Descriptor],'Code Table'[Code]))

最终,我什至不确定我是否需要将此作为专栏,作为衡量标准可能会更好......

任何帮助,将不胜感激。谢谢!

标签: powerbidax

解决方案


您可以通过在 CALCULATE 中使用 Filter 来绕过“表达式包含多个列,但在用作表过滤器表达式的 True/False 表达式中只能使用单个列”。

在这里,它是一个创建的列。我使用了 IF,因为“E”代码的计算结果为空白,而您想要一个 0。

Desired Output Metric = IF(CALCULATE(SUM('Entity Table'[Metric]),FILTER('Entity Table',CONTAINSSTRING('Entity Table'[Descriptor],'Code Table'[Code])))>0,CALCULATE(SUM('Entity Table'[Metric]),FILTER('Entity Table',CONTAINSSTRING('Entity Table'[Descriptor],'Code Table'[Code]))),0)

这是作为一种措施。请注意仅在代码详细信息级别使用它。在进行测量时,您需要使用聚合函数来引用您的列,所以我只是在做 MIN(Code),因为对于任何单个代码,Min() 将始终等于该 Code。如果您尝试在更高的摘要级别使用它,您可能会得到一些奇怪的答案,因为它只会为您引用的数据集中的 MIN() 代码加总。

Desired Output Metric = IF(CALCULATE(SUM('Entity Table'[Metric]),FILTER('Entity Table',CONTAINSSTRING('Entity Table'[Descriptor],MIN('Code Table'[Code]))))>0,CALCULATE(SUM('Entity Table'[Metric]),FILTER('Entity Table',CONTAINSSTRING('Entity Table'[Descriptor],MIN('Code Table'[Code])))),0)

推荐阅读