【问题标题】:in mdx, want to use use one or another measure in calculation depending on dimension values在 mdx 中,想要根据维度值在计算中使用一种或另一种度量
【发布时间】:2026-02-13 20:50:01
【问题描述】:

我想根据维度值计算一些东西:我试过了

WITH 
  CALCULATED MEMBER [Measures].[Switch] AS 
    IIF
    (
      [Ambu].[Ambu].CurrentMember IS [Ambu].[Ambu].[Non Ambulatoire]
     ,[Measures].[Nombre de Journées]
     ,(
        [Measures].[NbSejours]
       ,[Ambu].[Ambu].[Ambulatoire]
      )
    ) 
  MEMBER result AS 
    [Measures].[RecettesT2a] / [Measures].[Switch] 
SELECT 
  {
    [Measures].[RecettesT2a]
   ,[Measures].[Switch]
   ,result
   ,[Measures].[NbSejours]
   ,[Measures].[Nombre de Journées]
  } ON 0
 ,[Ambu].[Ambu] ON 1
 --[Classification GHM].[Recours] on 1
FROM [Cube];

事实上,如果 Ambu 是 Ambu,我想将 RecettesT2a 除以 NbSejours,如果 Ambu 是 Non Ambu,我想将 RecettesT2a 除以 [Nombre de Journées]...

当 Ambu 用于 Axis 1 时,此结果是好的,但如果我想使用另一个维度作为 Axis 1(例如 [Classification GHM].[Recours]),它不起作用... [Measures].[ Switch] 计算不正确...

【问题讨论】:

  • 这里使用的函数CURRENTMEMBER [Ambu].[Ambu].CurrentMember 意味着这个条件[Ambu].[Ambu].CurrentMember IS [Ambu].[Ambu].[Non Ambulatoire] 仅在维度[Ambu] 在上下文中即在其中一个轴中使用时才有意义
  • 如果使用另一个维度,除了[Ambu].[Ambu],结果应该是什么?应该是[Measures].[Nombre de Journées] 还是应该是( [Measures].[NbSejours] ,[Ambu].[Ambu].[Ambulatoire] )
  • 好的,所以,如果我理解得很好,这种方式对我来说没有解决方案......我需要在事实表中添加一个列(和一个新度量),该列已经具有不同的值他们的 Ambu/Non Ambu 属性。
  • - 我在下面添加了一个尝试的答案...

标签: mdx iccube


【解决方案1】:

Ambu 断章取意时,我们不知道您需要什么。

所以你有两个选择,具体取决于你想要什么:

WITH 
  CALCULATED MEMBER [Measures].[Switch] AS 
    IIF
    (
        [Ambu].[Ambu].CurrentMember IS [Ambu].[Ambu].[Non Ambulatoire]
      OR 
        isAll([Ambu].[Ambu].CurrentMember)
     ,[Measures].[Nombre de Journées]
     ,(
        [Measures].[NbSejours]
       ,[Ambu].[Ambu].[Ambulatoire]
      )
    ) 
...
...

或者这个:

WITH 
  CALCULATED MEMBER [Measures].[Switch] AS 
    IIF
    (
        [Ambu].[Ambu].CurrentMember IS [Ambu].[Ambu].[Non Ambulatoire]
      OR 
        NOT isAll([Ambu].[Ambu].CurrentMember)
     ,[Measures].[Nombre de Journées]
     ,(
        [Measures].[NbSejours]
       ,[Ambu].[Ambu].[Ambulatoire]
      )
    ) 
...
...

【讨论】: