强制计算成员到整个多维数据集
Force calculated member to entire cube
我正在尝试向我的多维数据集添加一个计算成员,这将 return 第一个财政年度在特定度量中完全没有任何数据。
目的是抑制(即NULLify)当年为第一年的各种同比计算指标:当年与上一年的比较没有意义。
到目前为止我已经知道了:
WITH MEMBER Measures.DataStartYear_Sales
AS
HEAD(
NONEMPTY([Calendar].[Fiscal Periods].[Fiscal Year].Members,[Measures].[QuantityOrdered])
,1).Item(0).Properties("NAME")
目前:
a. 这是一个查询范围的度量,因为它更容易试验。
b. return是元年的名字,这样比较容易看。最终我将 return 成员本身,并在其他计算的成员计算中与年份层次结构 .CurrentMember 进行 IS 比较。
我预料到的问题已经发生了,我只想在整个多维数据集上计算一次该度量。但是当我在查询中使用它时,它显然会对上下文做出反应。例如,如果我将 Products 维度贴在 ROWS 上,则每行的此度量值将不同,因为每个产品的最早订购日期不同。
那当然有用,但不是我想要的。有什么方法可以强制此度量忽略查询上下文,并且始终 return 相同的值?
我调查了 SCOPE_ISOLATION 和 SOLVE_ORDER,但他们没有做我在这里想做的事情。
我想我可以指定一个 Dimension1.All、Dimension2.All...DimensionN.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]
;
示例输出:
这应该会让你走上正确的轨道。
我正在尝试向我的多维数据集添加一个计算成员,这将 return 第一个财政年度在特定度量中完全没有任何数据。
目的是抑制(即NULLify)当年为第一年的各种同比计算指标:当年与上一年的比较没有意义。
到目前为止我已经知道了:
WITH MEMBER Measures.DataStartYear_Sales
AS
HEAD(
NONEMPTY([Calendar].[Fiscal Periods].[Fiscal Year].Members,[Measures].[QuantityOrdered])
,1).Item(0).Properties("NAME")
目前:
a. 这是一个查询范围的度量,因为它更容易试验。
b. return是元年的名字,这样比较容易看。最终我将 return 成员本身,并在其他计算的成员计算中与年份层次结构 .CurrentMember 进行 IS 比较。
我预料到的问题已经发生了,我只想在整个多维数据集上计算一次该度量。但是当我在查询中使用它时,它显然会对上下文做出反应。例如,如果我将 Products 维度贴在 ROWS 上,则每行的此度量值将不同,因为每个产品的最早订购日期不同。
那当然有用,但不是我想要的。有什么方法可以强制此度量忽略查询上下文,并且始终 return 相同的值?
我调查了 SCOPE_ISOLATION 和 SOLVE_ORDER,但他们没有做我在这里想做的事情。
我想我可以指定一个 Dimension1.All、Dimension2.All...DimensionN.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]
;
示例输出:
这应该会让你走上正确的轨道。