我有一个SSAS-2014多维数据集。我想设置一个特定的度量为NULL,如果某个特定的维度正在轴或Excel中的数据透视表的过滤器窗格中使用。现在,最直观的解决方案就是将此度量范围限制为不适用于该维度的成员。我说,我不想与会计期间成员的工作措施,然后我用下面的MDX多维数据集:如果在Excel中使用特定维度,则将度量值设置为NULL
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;
这似乎不错,因为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
其原因似乎与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
感谢您的建议,但动态设置解决方案真的会杀死我在问题中提到的性能。 – BICube
@阿拉,伤心但真实。还没有尝试过SSAS 2016,2014年没有其他方式,但动态设置来检测subcubes。 – Ferdipux