如果在Excel

时间:2016-06-30 17:32:22

标签: 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;

如果我在数据透视表的过滤器中选择一年,这似乎有效。 enter image description here

这似乎很好,因为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

如果我在过滤器窗格中选择了两个成员,则会出现问题,如此图所示 enter image description here

并且其原因似乎与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

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

1 个答案:

答案 0 :(得分:2)

嗯,我可以为子立方体场景设想的唯一解决方案是在被探测的维度上创建动态集,如引用问题的文章所述。然后为您的作用域添加另一个子作用域([DIM Accounting Period]。[Accounting Period Hierarchy]。[All])并计算此作用域中的DESCENDANTS([DIM Accounting Period].[Accounting Period Hierarchy].[All],,AFTER)。将其与动态集的计数进行比较。如果两个匹配 - 你不在subselect的子多维数据集内,否则你就是。