如果在Excel中使用特定维度,则将度量值设置为NULL

BIC*_*ube 8 ssas mdx

我有一个SSAS-2014立方体.如果在excel中的任一轴或透视表的过滤器窗格中使用特定维度,我想将特定度量设置为NULL.现在,最直观的解决方案是将此度量的范围与该维度的成员无关.说,我不希望该度量与会计期间成员一起使用,然后我在多维数据集中使用以下MDX:

CREATE MEMBER CURRENTCUBE.[Measures].[Test Measure] AS 1;

SCOPE([Measures].[Test Measure]);
SCOPE(DESCENDANTS([DIM Accounting Period].[Accounting Period Hierarchy].[All],,AFTER));
THIS = NULL;
END SCOPE;
END SCOPE;
Run Code Online (Sandbox Code Playgroud)

如果我在数据透视表的过滤器中选择一年,这似乎有效. 在此输入图像描述

这似乎很好,因为excel将以下MDX发送回SSAS引擎

SELECT NON EMPTY Hierarchize (
 {
  DrilldownLevel (
   { [DIM Production Period].[Production Month].[All Dates] }
   ,
   ,
   , INCLUDE_CALC_MEMBERS
  )
 }
)  ON COLUMNS
FROM [CUBE - Opex Analysis]
WHERE ( [DIM Accounting Period].[Accounting Period Hierarchy].[Accounting Year].[2015],
        [Measures].[Test Measure] ) CELL PROPERTIES VALUE
, FORMAT_STRING
, LANGUAGE
, BACK_COLOR
, FORE_COLOR
, FONT_FLAGS
Run Code Online (Sandbox Code Playgroud)

如果我在筛选器窗格中选择了两个成员,则会出现问题,如此图所示 在此输入图像描述

其原因似乎与excel发送回引擎的MDX有关.它将项目封装在子多维数据集中,使引擎认为没有选择会计年度.这是excel使用的MDX:

SELECT NON EMPTY Hierarchize (
 {
  DrilldownLevel (
   { [DIM Production Period].[Production Month].[All Dates] }
   ,
   ,
   , INCLUDE_CALC_MEMBERS
  )
 }
)  ON COLUMNS
FROM (
 SELECT (
 { [DIM Accounting Period].[Accounting Period Hierarchy].[Accounting Year].[2015],
   [DIM Accounting Period].[Accounting Period Hierarchy].[Accounting Year].[2016] } ) ON COLUMNS
 FROM [CUBE - Opex Analysis]
)
WHERE ( [Measures].[Test Measure] ) CELL PROPERTIES VALUE
, FORMAT_STRING
, LANGUAGE
, BACK_COLOR
, FORE_COLOR
, FONT_FLAGS
Run Code Online (Sandbox Code Playgroud)

请注意,我还尝试使用现有的尝试捕获正在使用的会计年度,但我遇到了同样的问题.有谁知道解决这个问题的方法?我之前遇到过类似的问题,但实现我在这里使用的解决方案对于性能来说是过度杀伤类似问题 我正在使用SSAS 2014和Excel 2013

Fer*_*pux 2

嗯,我可以为子多维数据集场景设想的唯一解决方案是在探测维度上创建动态集,如引用问题的文章中所述。然后为您的范围添加另一个子范围([DIM 会计期间].[会计期间层次结构].[全部])并计入DESCENDANTS([DIM Accounting Period].[Accounting Period Hierarchy].[All],,AFTER)该范围。将其与动态集的计数进行比较。如果两者匹配 - 您不在子选择的子多维数据集中,否则您不在子多维数据集中。