我有一个查询返回过去12个月的结果,我需要以某种方式应用过滤器,只有在过去7个月内具有特定度量的产品模型>返回0(至少在其中一个月内)。
我可以这样做:
SELECT {[Measures].[MQ]} ON COLUMNS,
FILTER([dim_ProductModel].[Product Model].members, (([Dim_Date].[Date Full].&[2013-08-01],[Measures].[MQ]) > 0) OR (([Dim_Date].[Date Full].&[2013-09-01],[Measures].[MQ]) > 0) OR ([Dim_Date].[Date Full].&[2013-10-01],[Measures].[MQ]) > 0) * {[Dim_Date].[Date Full].&[2013-08-01]:[Dim_Date].[Date Full].&[2014-02-01]} ON ROWS FROM [cub_dashboard_spares]
(我离开了其他ORs结合)所以我需要6个OR,我不喜欢, 不知怎的,不可能像我期望的那样(伪代码)以这种方式编写过滤器:
FILTER([dim_ProductModel].[Product Model].members, (ANY({[Dim_Date].[Date Full].&[2013-08-01]:[Dim_Date].[Date Full].&[2014-02-01]}),[Measures].[MQ]) > 0)
,请问一些技巧/语法如何避免使用mutliple OR?喜欢ANY或idk ..
非常感谢你提前帮助,
答案 0 :(得分:0)
您可以使用其他Filter()
并检查其中是否至少有一个Count
的结果:
FILTER([dim_ProductModel].[Product Model].members,
FILTER({[Dim_Date].[Date Full].&[2013-08-01]:[Dim_Date].[Date Full].&[2014-02-01]}),
[Measures].[MQ]) > 0
).Count > 0
)
假设没有MQ
的负值,您还可以观察到,如果至少有一个月的值为> 0,则总和必须> 0,并使用
FILTER([dim_ProductModel].[Product Model].members,
Sum({[Dim_Date].[Date Full].&[2013-08-01]:[Dim_Date].[Date Full].&[2014-02-01]}),
[Measures].[MQ]
)
> 0
)