我的财务小组给我分配了一个相当奇怪的时间情报功能,我正试图弄清楚。
有人要求我在我们的 SSAS 多维数据集中创建一个度量值,以便根据我们在当前季度中所处的位置查看上一季度迄今为止的情况。 但是,他们不希望看到当前已用天数与以前已过天数的标准概念,而是希望看到剩余天数与前几天的剩余天数。
我的意思是,以 2015 年 1 月 22 日为例。 我们本季度还剩下 48 天,我通过计算的衡量标准得到了这个时间。 我需要找到上一季度的相应工作日,其中也还剩 48 天。
此时,我可以创建一个日期范围,其中包含从上一季度的第一个日期到上面找到的相应日期的一些聚合函数,并提出他们正在寻找的内容。
到目前为止,我最好的想法是在数据库部分本身中执行此操作,方法是创建一个新列,该列基本上是计算的剩余天数,但已存储。 但在这一点上,我不确定如何在 SSAS 中采取计算度量并过滤上一季度日期成员以使用该属性。
多维数据集中是否有实用工具维度?我们有一个叫做TimeComputings。在那里,我们有诸如CurrentValue,MTDValue,PrevEquivMTD,Past7Days之类的东西。我认为你的新逻辑会适合这样的维度。
这是PrevEquivQTD对抗AdvWrks的例子,我刚刚玩过。猜测这对你的场景并没有真正的帮助,但我写得很开心:
WITH
SET [NonEmptyDates] AS
NonEmpty
(
[Date].[Calendar].[Date].MEMBERS
,[Measures].[Internet Sales Amount]
)
SET [LastNonEmptyDate] AS
Tail([NonEmptyDates])
SET [CurrQ] AS
Exists
(
[Date].[Calendar].[Calendar Quarter]
,[LastNonEmptyDate].Item(0)
)
MEMBER [Measures].[pos] AS
Rank
(
[LastNonEmptyDate].Item(0)
,Descendants
(
[CurrQ]
,[Date].[Calendar].[Date]
)
)
MEMBER [Measures].[PrevEquivalentQTD] AS
Sum
(
Head
(
Descendants
(
[CurrQ].ITEM(0).PrevMember
,[Date].[Calendar].[Date]
)
,[Measures].[pos]
)
,[Measures].[Internet Sales Amount]
)
SELECT
{[Measures].[pos],[Measures].[PrevEquivalentQTD]} ON 0
,[LastNonEmptyDate] ON 1
FROM
(
SELECT
[Date].[Calendar].[Date].&[20050111]
:
[Date].[Calendar].[Date].&[20080611] ON 0
FROM [Adventure Works]
);
您的日期是 2015 年 1 月 22 日。您希望上一季度的同一日期为 2015 年 8 月 22 日。
如果这是您想要的,则必须使用 MDX 函数并行周期,如下面的示例所示。请将其替换为您自己的维度和立方体。
Select
ParallelPeriod
(
[Date].[Calendar Date].[Calendar Quarter], -- Level Expression
1, -- Index
[Date].[Calendar Date].[Date].&[20150122] -- Member Expression
) On 0
From [Adventure Works]
如果您希望下一季度的日期相同,请将索引 1 替换为 -1。
干杯