Mdx 我可以对自定义成员使用Lag函数吗
在下文中,我成功地找到了最后一个完整的月份以及与该月份相关的可计费收入。然后我想确定前一个月的目标,并找到该月的收入。我认为Mdx 我可以对自定义成员使用Lag函数吗,mdx,Mdx,在下文中,我成功地找到了最后一个完整的月份以及与该月份相关的可计费收入。然后我想确定前一个月的目标,并找到该月的收入。我认为Lag将是一个很好的函数,但这似乎不起作用。没有错误,只是没有为第二列返回数据[Measures].[PrevMth_BillInc]: WITH MEMBER [Date].[Date - Calendar Month].[LastMth] AS IIF( Day(Now()) = 1, TAIL([Date].[Date - Cal
Lag
将是一个很好的函数,但这似乎不起作用。没有错误,只是没有为第二列返回数据[Measures].[PrevMth_BillInc]
:
WITH
MEMBER [Date].[Date - Calendar Month].[LastMth] AS
IIF(
Day(Now()) = 1,
TAIL([Date].[Date - Calendar Month].[Calendar Month],2).Item(1),
TAIL([Date].[Date - Calendar Month].[Calendar Month],2).Item(0)
)
MEMBER [Measures].[LastMth_BillInc] AS
SUM(
[Date].[Date - Calendar Month].[LastMth],
[Measures].[BillableIncome]
)
MEMBER [Measures].[PrevMth_BillInc] AS
SUM(
[Date].[LastMth].Lag(1),
[Measures].[BillableIncome]
)
SELECT
NON EMPTY
{
[Measures].[LastMth_BillInc],
[Measures].[PrevMth_BillInc] //<<<<<this returns nothing
}
ON COLUMNS,
NON EMPTY
ORDER(
[Customer_Dim].[Customer_Hier].[Customer_Level].Members,
[Date].[Date - Calendar Month].[LastMth],
BDESC
)
ON ROWS
FROM [ourCube]
与
成员[日期].[日期-日历月].[LastMth]为
IIF(
天(现在())=1,
尾部([日期][日期-日历月][日历月],2)。第(1)项,
尾部([日期][日期-日历月][日历月],2)。项(0)
)
成员[措施][LastMth_BillInc]为
总数(
[日期][日期-日历月][最后一个月],
[措施][应付账款收入]
)
成员[措施].[PrevMth_BillInc]为
总数(
[日期][LastMth]。滞后(1),
[措施][应付账款收入]
)
挑选
非空
{
[措施][LastMth_BillInc],
[度量].[PrevMth_BillInc]/通过将[LastMth]
定义为计算成员,您可以定义[Date].[Date-日历月]的新成员
,而不是现有成员的别名。因此,Lag
不起作用,因为它应用于新成员(位于原始成员旁边的层次结构中)。而Lag
是在层次结构上操作的函数,它不适用于其定义中使用的原始成员
您可以通过将LastMth定义为包含原始非计算成员(确切地说,它将包含包含原始成员的元组)的集合来解决此问题,如下所示:
WITH
SET [LastTwo] AS
TAIL([Date].[Date - Calendar Month].[Calendar Month],2)
SET [LastMonth] AS
IIF(
Day(Now()) = 1,
Subset([LastTwo], 1, 1),
Subset([LastTwo], 0, 1)
)
MEMBER [Measures].[LastMth_BillInc] AS
(
[LastMth].Item(0).Item(0),
[Measures].[BillableIncome]
)
MEMBER [Measures].[PrevMth_BillInc] AS
(
[LastMth].ITEM(0).Item(0).Lag(2),
[Measures].[BillableIncome]
)
SELECT
NON EMPTY
{
[Measures].[LastMth_BillInc],
[Measures].[PrevMth_BillInc]
}
ON COLUMNS,
NON EMPTY
ORDER(
[Customer_Dim].[Customer_Hier].[Customer_Level].Members,
[Date].[Date - Calendar Month].[LastMth],
BDESC
)
ON ROWS
FROM [ourCube]
我想你不需要sum
,你可以像我上面做的那样使用元组,因为只有一个成员而不是几个成员的集合要求和。@FrankPI…你的答案仍然返回一个空的结果集-我可以编辑你的答案吗?@FrankPI-所以当我在中用创建一个集合时,它看起来很有用注意它来自的层次结构,而如果我创建了一个成员,它就不知道了?@whytheq是的,我编辑了我的答案来更详细地解释这个问题。@whytheqItem(0)
,应用于一个集合,返回集合的第一个元组,而Item(0)
,应用于一个元组,返回元组的第一个成员。因此,如果应用,Item(0).Item(0)
对于一维单元素集,您将获得其中包含的(一个且唯一的)成员。@如果要使计算成员成为级别的一部分,请使其成为父级成员的子级。但是,在Analysis Services中,计算成员的同级关系不太可靠。