DAX Measure 在过滤器表达式中使用来自不同相关表的多个列

Posted

技术标签:

【中文标题】DAX Measure 在过滤器表达式中使用来自不同相关表的多个列【英文标题】:DAX Measure with multiple columns from different related tables in filter expression 【发布时间】:2019-09-18 19:56:32 【问题描述】:

我需要有关 DAX Measure 的帮助。我有 3 个表构建、动态、环境。它们都是相互关联的。我已经使用 Builds 表中的 Builds 切片器和包含以下列的表格图表创建了一个报告:

BUILD[环境表] 目标构建[动态表] 状态[环境表] EnvironmentID[环境表]

现在我想创建一个度量来计算 In Progress Environments 的计数,其中 Build = 在切片器中选择构建或目标构建 = 在切片器中选择构建。

谁能帮我正确的公式。谢谢!

我想出了以下公式:

InprogressEnvironments = 
VAR SelectedSlicerValue = SELECTEDVALUE(Builds[Build])
RETURN
  VAR CountEnvs =
    CALCULATE (
      DISTINCTCOUNT ( 'vwEnvironments'[EnvironmentID] ),
      OR (
        'vwEnvironments'[Build] = SelectedSlicerValue,
        vwDynamic[TARGETBUILD] = SelectedSlicerValue
      ),
      'vwEnvironments'[State] = "In Progress"
    )
  RETURN
    CountEnvs

但是,此度量返回以下错误:表达式包含多个列,但在用作表过滤器表达式的 True/False 表达式中只能使用单个列。

【问题讨论】:

错误是基于您的OR 函数。 CALCULATE 的简单谓词只能引用单个列。您能否提供您的数据和模型的样本,以及基于该样本的预期输出?我们不可能推断出这些事情。请参阅this page 了解如何生成一个最小的工作示例。 【参考方案1】:

我不确定这两个表之间的关系是什么,但这样的事情可能会起作用:

InprogressEnvironments =
VAR SelectedSlicerValue =
    SELECTEDVALUE ( Builds[Build] )
VAR CountEnvs =
    CALCULATE (
        DISTINCTCOUNT ( 'vwEnvironments'[EnvironmentID] ),
        'vwEnvironments'[State] = "In Progress",
        'vwEnvironments'[Build] = SelectedSlicerValue
            || RELATED ( 'vwDynamic'[TARGETBUILD] ) = SelectedSlicerValue
    )
RETURN
    CountEnvs

【讨论】:

这将遇到同样的错误。 CALCULATE 的第三个参数是 'vwEnvironments'[Build] = SelectedSlicerValue || RELATED ( vwDynamic'[TARGETBUILD] ) = SelectedSlicerValueCALCULATE 的简单谓词不能引用多个列。正如您所指出的,正确的答案将取决于关系是什么。在典型的星型模式中,我会将其写为CALCULATE ( ..., FILTER ( GROUPBY ( 'Fact', 'Dim1'[Field], 'Dim2'[Field] ), 'Dim1'[Field] = <value> || 'Dim2'[Field] = <value> ) )CALCULATE 的表值参数可以任意复杂。 我可以看到在我的 .pbix 中,表使用下面显示的关系相互连接。构建---> vwEnvironments(一对多)开启(Builds.build = vwEnvironments.Build)vwEnvironments 动态(多对一)开启(vwEnvironments.RunID = Dynamic.RunID)

以上是关于DAX Measure 在过滤器表达式中使用来自不同相关表的多个列的主要内容,如果未能解决你的问题,请参考以下文章

带和不带 FILTER 的 DAX 计算函数

DAX Measure: IF 所有用户的总和 = Max THEN 单个用户的返回值

PowerBI开发 第十四篇:DAX 表达式(时间+过滤+关系)

5个适用于初学者的有用数据分析表达式(DAX)函数

如何计算 DAX 中的累计总计和百分比?

Power Pivot 系列 (4) - DAX 查询