powerbi - 带有子查询和 IF ELSE 的 DAX 查询
问题描述
DAX 的新手,我正在尝试创建一个下面的 DAX 查询,但是,我不知道该怎么做,我有一个度量值(用户选择的值),我想使用它传递给查询,并使用我想将动态参数传递给过滤器。以下是我想要实现的目标。
TABLE_SUM =
CALCULATE(SUM('TABLE'[Total]),
FILTER('TABLE',
'TABLE'[Filter_1] = [Selected-val-1] &&
'TABLE'[Filter_2] = "CONSTANT1" &&
'TABLE'[Filter_3] = "CONSTANT2" &&
'TABLE'[Filter_4] IN (IF ([Selected-val-2] =="All", DISTINCT('TABLE'[Filter_4]),[Selected-val-2])))
)
IFall
被选中然后我想要 'TABLE'[Filter_4]
其他我想要传递的不同值[Selected-val-2]
?
我收到is not a valid table
错误...如果我删除 If else 条件并仅在IN
子句内应用 true 条件,我不会收到错误,但这并不能解决我的目的。
解决方案
您收到错误的原因是您IF
返回的错误结果是一个标量而不是一个表。'TABLE'[Filter_4] IN <Some Scalar>
不是有效的 DAX。您可以通过将最后一个替换[Selected-val-2]
为单个元素列表来解决此问题,{ [Selected-val-2] }
.
@RADO 是正确的,您可以重构最后一行。
'TABLE'[Filter_4]
IN (
IF (
[Selected-val-2] == "All",
DISTINCT ( 'TABLE'[Filter_4] ),
[Selected-val-2]
)
)
让我们看看这两种情况:'TABLE'[Filter_4]
有 (1) 一个值或 (2) 有多个值(或没有值)。然后上面的减少到
(1) 条件[Selected-val-2] == "All"
为假:
'TABLE'[Filter_4] IN [Selected-val-2]
因为SELECTEDVALUE ( 'TABLE2'[Filter_4], "All" )
相当于
IF ( HASONEVALUE ( 'TABLE2'[Filter_4] ), VALUES ( 'TABLE2'[Filter_4] ), "All" )
,因为我们在情况(1)中,这减少到
'TABLE'[Filter_4] IN VALUES ( 'TABLE2'[Filter_4] )
(2) 条件[Selected-val-2] == "All"
为真:
'TABLE'[Filter_4] IN DISTINCT ( 'TABLE'[Filter_4] )
这两者基本等价于'TABLE'[Filter_4] IN DISTINCT ( 'TABLE'[Filter_4] )
.
推荐阅读
- javascript - loadJSON 未定义 - Chrome 扩展错误
- c++ - Rcpp调用的c++计数算法模板
- html - 图像在 HTML 中出现损坏
- java - Tomcat删除/work目录中的类后显示JSP
- java - 错误:Spring Boot,amazonRDS,org.springframework.beans.factory.BeanCreationException
- sms - 在发布到 slack 的每条短信上都出现错误 11200
- database - SQL1397N - DB2 服务登录失败
- android - 动态地将多个视图添加到 Recycler View
- sdk - 如何自定义 ArcGIS Pro OverviewMapControl 加载项?
- ios - 快速使用带有表格视图的水平滚动视图