DAX的新手,我正在尝试创建下面的DAX查询,但是,我不确定该怎么做,我有一个要传递给查询的度量(由用户选择的值) ,并使用该度量,我想将动态参数传递给过滤器。以下是我要实现的目标。
org.opentest4j.AssertionFailedError: Expected java.lang.RuntimeException to be thrown, but nothing was thrown.
如果选择了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])))
)
,那么我想要all
的不同值,否则我想传递'TABLE'[Filter_4]
吗?
我收到[Selected-val-2]
错误...如果删除if条件,而仅在is not a valid table
子句中应用真实条件,我不会收到错误,但不能解决我的目的
答案 0 :(得分:0)
出现错误的原因是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] )
这两个都是basically equivalent至'TABLE'[Filter_4] IN DISTINCT ( 'TABLE'[Filter_4] )
。