MDX使用非空的最后一个子命名set

时间:2012-09-27 07:12:44

标签: ssas mdx cube

我有一个“趋势”维度。层次结构是Trend-> Week-> Day。事实与“日”钥匙有关。无法保证在给定的一周内所有天都存在度量值。

当用户想要在“周”级别看到该度量时,我只需要显示该周的最后一个空白值。我有多个措施,因此我不想为每个措施创建一个新的计算量度(如How to display the total of a level as the value of its last child in MDX

相反,有没有办法创建一个命名集,我可以用它来实现下面的功能?

示例

Week    Day    Measure
1       1      4
1       2      5
2       3      7
2       7      9
3       5      10

应该在“周”级别获得

Week    Day    Measure
1       2      5
2       7      9
3       5      10

谢谢! :)

1 个答案:

答案 0 :(得分:1)

如果要创建可以重复用于多个度量的计算成员,可以创建仅包含一堆计算成员的实用程序维度。 Dunno如何在SSAS中做到这一点(我熟悉icCube)。然后,您可以在请求中使用此层次结构来应用计算成员。

让我们举个例子吧。我称之为实用维度[Stats]。其默认成员是返回当前度量值的计算成员。它包含[最后一天]计算。构件。

  

WITH MEMBER [Stats]。[Stats]。[Last Day] AS(

NonEmpty( 

   Order( [Trend].[Trend].currentMember.children, 
          [Trend].[Trend].currentMember.properties( 'key', TYPED ), 
          BDESC 
   ), 
   [Stats].[Stats].defaultMember 

).item(0), 

[Stats].[Stats].defaultMember  )
     

选择     [措施]。成员0,     [趋势]。[趋势]。[周]。成员1

     

FROM [你的立方体]

     

在哪里[统计]。[统计]。[上个月]

您可以在切片器中看到[Last Month]的技巧,该技巧应用于SELECT的每个[MEasures]。然后它的公式使用[Days]的NonEmpty(基于键的顺序()反转 - 你可能需要调整)当前[MEasures]。