Ssas 将计算成员强制添加到整个多维数据集

Ssas 将计算成员强制添加到整个多维数据集,ssas,mdx,Ssas,Mdx,我正在尝试向多维数据集中添加一个计算成员,该多维数据集将返回第一个会计年度,其中某个特定度量值中存在任何数据 其目的是在第一年禁止(即取消)各种按年计算的措施:在该年,与上一年的比较毫无意义 到目前为止,我已经做到了: WITH MEMBER Measures.DataStartYear_Sales AS HEAD( NONEMPTY([Calendar].[Fiscal Periods].[Fiscal Year].Members,[Measures].[QuantityOrdered

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

其目的是在第一年禁止(即取消)各种按年计算的措施:在该年,与上一年的比较毫无意义

到目前为止,我已经做到了:

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

a.这是一个查询范围的度量,因为这更容易实验

b.它返回第一年的名字,因为这更容易看到。最后,我将返回成员本身,并与其他计算成员计算中的year hierarchy.CurrentMember进行比较

我所期望的问题(已经发生)是,我只希望这个度量值在整个立方体上计算一次。但当我在查询中使用它时,它显然会对上下文做出反应。例如,如果我将Products维度粘贴到行上,则每行的此度量值将不同,因为每个产品的最早订单日期不同

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

我研究了范围隔离和解决顺序,但他们没有做我在这里试图做的事情


我想我可以指定一个Dimension1.All,Dimension2.All….的元组。。。。维度n.All,覆盖多维数据集中的所有维度,但这看起来凌乱而脆弱。

我认为您可以使用静态集来完成这一点。下面是一个使用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]
;
示例输出:


希望这能让你走上正轨。

太棒了!静态是我一直在寻找的:但您只能创建静态集,而不能(出于某种原因)创建静态成员。一旦我有了(单身)的设置,这很容易。