首页 文章

DAX中的CALCULATE中的可选FILTER

提问于
浏览
1

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,只是SalesRegion,只是Product,none ) .

1 回答

  • 2

    我想你可以使用 ISFILTERED 函数,但不完全是你的建议 . 尝试将其插入到您的测量中,如下所示:

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

相关问题