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] ) = SelectedSlicerValue
。 CALCULATE
的简单谓词不能引用多个列。正如您所指出的,正确的答案将取决于关系是什么。在典型的星型模式中,我会将其写为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 在过滤器表达式中使用来自不同相关表的多个列的主要内容,如果未能解决你的问题,请参考以下文章
DAX Measure: IF 所有用户的总和 = Max THEN 单个用户的返回值