与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) ,只是产品,没有)。
答案 0 :(得分:2)
我认为你可以使用ISFILTERED
功能,但不完全是你的建议。尝试将其插入到您的测量中:
Sales =
CALCULATE (
SUM ( Sales['Sales'] ),
FILTER (
Product,
NOT ( ISFILTERED('FilterProduct'['ProductName']) ) ||
NOT ( 'Product'['ProductName'] IN VALUES ( 'FilterProduct'['ProductName'] ) )
)
)