【问题标题】:SSAS Calculated measure to show values only for specific dimension valuesSSAS 计算度量以仅显示特定维度值的值
【发布时间】:2015-08-07 18:02:37
【问题描述】:

我在我的 SSAS 多维数据集中有一个计算的度量,我只想为一组维度成员计算它,其余的它应该为零。在下图中,我希望 MTDOccupancy 维度仅适用于房间的帐户组,与食物相关的休息应在该字段中显示为零。

以下是我用于 MTDOccupancy 测量的简单 MDX

([MTDQuantity]/[MTDAvailableRooms])*100

【问题讨论】:

  • select * from tablename where AccountGroup like 'ROOMS%'
  • @tinka 是 sql 不是 mdx
  • 获取多维数据集度量而不是计算度量,并使用SCOPE 运算符将所需成员的值设置为NULL。它比计算成员方法更快,因为它是缓存的。

标签: sql-server ssas mdx


【解决方案1】:

您可以将度量更改为如下所示:

IIF(
    LEFT([Account Group].[Account Group].currentmember.member_caption,5) = "ROOMS"
  ,([MTDQuantity]/[MTDAvailableRooms])*100
  ,NULL
)

我已经猜到这个维度/层次结构组合 [Account Group].[Account Group]. ... - 您需要更改它以反映多维数据集中使用的名称。

【讨论】:

    【解决方案2】:

    出于性能原因,请将其作为范围说明。以下将在有人第一次连接到多维数据集时与报告时在每个单元格中运行的 LEFT 进行评估:

    Create member CurrentCube.[Measures].[My Calc] 
    as null
    ,format_string="0.0%";
    
    scope(Filter([Account Group].[Account Group].[Account Group].Members,   LEFT([Account Group].[Account Group].currentmember.member_caption,5)="ROOMS")); 
       [Measures].[My Calc] = iif(MTDAvailableRooms=0,null,([MTDQuantity]/[MTDAvailableRooms])); 
    end scope;
    

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 2016-06-07
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多