Iccube:作为过滤器进行测量

Iccube: measure as a filter

Iccube - 报告: 我想使用某些度量值作为过滤器。

例如: 维度:产品 - 措施:价格

我想过滤所有低于 50 欧元的产品。 解决方法是第二个维度 "price" 但我不希望那样,因为架构加载的时间会长得多。

可选:我可以将价格定义为维度的自定义 属性。

注意:我不想使用这样的东西 ([product].CurrentMember.properties("price") = '50') 因为有很多不同的值

干杯

您可以在服务器或报告中解决此问题。

服务器中:

您可以添加类似于 here 所述的实用程序层次结构。由于这仅适用于一种产品,因此您需要将其作为产品维度的二级层次结构(加载维度时需要一个包含此信息的新列)。

在报告中

数据向导中还缺少过滤器,但您可以输入一个 MDX 来过滤您的产品。您可以使用 MDX Filter function 执行此操作。

此解决方案的要点是,如果您查询定义了 subselect or a where clause 以及您是否要在过滤产品时使用它。使用查询上下文意味着如果您的查询定义了特定的过滤器,例如[MyCountryInFilter],将在评估过滤措施时使用。

Filter( [Products] , [Measures].[MyMeasure] )

会将 [MyMeasure] 评估为 ( [MyMeasures], [MyCountryInFilter] )。您确实可以使用

使其独立于过滤器
Filter( [Products], ( [Country].defaultmember, [MyMeasure] )

使这个 'filter' 独立的更强大的版本是使用静态集。如果该集合 总是 相同,您可以创建一个静态集合(在架构中定义它),如 here 所述:

  CREATE STATIC SET [MyFilteredProducts] as Filter( ...

也可以在请求级别定义一个使用静态上下文评估的集合

WITH 
  STATIC SET [MyFilteredProducts] as Filter( ...
...

希望对您有所帮助