强制计算成员到整个立方体

时间:2017-06-29 15:57:50

标签: ssas mdx

我正在尝试将一个计算成员添加到我的多维数据集中,这将返回第一个会计年度,其中特定度量中存在任何数据。

目的是在年度为第一年时抑制(即无效)各种年度计算对策:在那一年,与上一年的比较毫无意义。

到目前为止我已经得到了这个:

WITH MEMBER Measures.DataStartYear_Sales
AS
HEAD(
    NONEMPTY([Calendar].[Fiscal Periods].[Fiscal Year].Members,[Measures].[QuantityOrdered])
    ,1).Item(0).Properties("NAME")

目前:

a。这是一个查询范围的衡量标准,因为它更容易实验。

b。它会返回第一年的名称,因为这更容易看到。最后,我将只返回成员本身,并在其他计算成员计算中对年级层次结构.CurrentMember进行IS比较。

我预料到的问题是,我只希望在整个多维数据集上计算一次这个度量。但是当我在查询中使用它时,它显然会对上下文做出反应。例如,如果我将产品维度粘贴在ROWS上,则每个行的度量值将不同,因为每个产品的最早订单日期都不同。

这当然很有用,但这不是我想要的。是否有某种方法可以强制此度量忽略查询上下文,并始终返回相同的值?

我查看了SCOPE_ISOLATION和SOLVE_ORDER,但他们没有做我想在这里做的事。

我想我可以指定Dimension1.All,Dimension2.All ...... DimensionN.All的元组,覆盖多维数据集中的所有维度,但这看起来很混乱和脆弱。

1 个答案:

答案 0 :(得分:1)

我认为你可以用静态集来完成这个任务。以下是使用Adventure Works的示例,无论上下文如何,它都会产生相同的第一年:

WITH STATIC SET FirstYear AS
HEAD
    (
    NONEMPTY([Date].[Calendar Year].[Calendar Year].MEMBERS, [Measures].[Internet Sales Amount])
,   1
    )
    MEMBER FirstYearName AS
    FirstYear.ITEM(0).NAME
 SELECT
[Measures].[FirstYearName] ON COLUMNS
 ,  [Date].[Calendar Year].[Calendar Year].MEMBERS 
    //Add as many dimensions as you like here...for example
*    [Product].[Product].[Product].MEMBERS
 ON ROWS
 FROM
[Adventure Works]
;

示例输出:

enter image description here

希望能让你走上正轨。