我正在尝试将一个计算成员添加到我的多维数据集中,这将返回第一个会计年度,其中特定度量中存在任何数据。
目的是在年度为第一年时抑制(即无效)各种年度计算对策:在那一年,与上一年的比较毫无意义。
到目前为止我已经得到了这个:
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的元组,覆盖多维数据集中的所有维度,但这看起来很混乱和脆弱。
答案 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]
;
示例输出:
希望能让你走上正轨。