我认为你有两个选择:
1-将列添加到您的事实(或基于事实表的数据源视图上的视图),例如:
case when unit_Price>2000 then 1
else 0
end as Unit_Price_Uper_Or_Under_10
并根据此列值添加一个虚构的维度。并为新维度添加命名查询(比如数据源视图中的 Range_Dimension :选择 1 作为范围联合全部选择 0 作为范围
之后你不能像其他维度和属性一样使用这个过滤器。
SELECT [Store].[Stores].[Store].members ON COLUMNS,
[Unit Sales] ON ROWS
FROM [Warehouse and Sales]
WHERE [Test_Dimension].[Range].&[1]
问题在于您必须添加When
条件的每个范围,并且仅当范围是静态的时,此解决方案才是一个好的解决方案。对于动态范围,最好制定范围(基于离散化方法)
2-在基于事实表的事实表附近添加具有粒度的维度,例如,如果我们有带有主键的事实表。Sale_id
我们可以添加基于只有一列的事实表的维度,sale_Id
并且dimension Usage tab
我们可以将其new dimension
与measure group
关系类型相关联Fact
,然后在mdx 我们可以使用类似的东西:
filter([dim Sale].[Sale Id].[Sale Id].members,[Measures].[Unit Price]>2000)