DAX中的CALCULATE中的可选FILTER

时间:2018-03-01 20:38:23

标签: excel powerbi dax powerpivot

Basket Analysis DAX模式模型类似,我有1个Sales的事实,1个Product的维度和Filter Product的额外维度。

我想使用过滤器产品维度来排除用户选择的产品。我使用这个DAX公式:

Sales =
CALCULATE (
    SUM ( Sales['Sales'] ),
    FILTER (
        Product,
        NOT ( 'Product'['ProductName'] IN VALUES ( 'FilterProduct'['ProductName'] ) )
    )
)

只要用户已选择要在FilterProduct切片器上排除的产品,此方法就可以正常工作。但如果没有选择任何内容,计算将显示为空白,而不是仅显示所有内容。我想知道是否有办法优雅地处理这个问题。我的想法是创建一个变量并查看FilterProduct ISFILTERED()。如果是这样,请在SWITCH语句中复制并粘贴上面的FILTER(),否则,只需跳过FILTER()。但这并不是很好,因为它复制了代码,如果我要添加另一个可选的过滤器(例如SalesRegion),我必须预先计算所有组合(例如SalesRegion& Product,just SalesRegion) ,只是产品,没有)。

1 个答案:

答案 0 :(得分:2)

我认为你可以使用ISFILTERED功能,但不完全是你的建议。尝试将其插入到您的测量中:

Sales =
CALCULATE (
    SUM ( Sales['Sales'] ),
    FILTER (
        Product,
        NOT ( ISFILTERED('FilterProduct'['ProductName']) ) ||
        NOT ( 'Product'['ProductName'] IN VALUES ( 'FilterProduct'['ProductName'] ) )
    )
)