SSAS如何;“填充”;通过重复最后一个非空值来快照事实
我有一个具有典型快照结构和每日粒度(如库存量)的多维数据集。我希望能够从这个多维数据集中删除一些细粒度的数据,因为我们有大约270000000行的源数据,多维数据集的处理速度很慢,而且从一个数据点到下一个数据点,在一天的级别上没有明显的差异 然而,用户需要一个逐级的细节级别-最近的每日细节,然后旧时期的每月或季度细节。这样做将有助于解决这种情况,但他们也希望图表“显示”每个数据点的数据,并且在一个数据点和下一个数据点之间没有“孔”SSAS如何;“填充”;通过重复最后一个非空值来快照事实,ssas,Ssas,我有一个具有典型快照结构和每日粒度(如库存量)的多维数据集。我希望能够从这个多维数据集中删除一些细粒度的数据,因为我们有大约270000000行的源数据,多维数据集的处理速度很慢,而且从一个数据点到下一个数据点,在一天的级别上没有明显的差异 然而,用户需要一个逐级的细节级别-最近的每日细节,然后旧时期的每月或季度细节。这样做将有助于解决这种情况,但他们也希望图表“显示”每个数据点的数据,并且在一个数据点和下一个数据点之间没有“孔” 所以这里有一个问题:如果我有一个带有快照事实表的多维数据集,并且
所以这里有一个问题:如果我有一个带有快照事实表的多维数据集,并且该表在最近30天内有每日值,然后是6个月的每月值,然后是两年前的季度值,那么是否有任何合理的方法通过在每个“空”天重复最后一个快照值,使多维数据集的输出“伪造”间隙?换句话说,如果我在整个时间段内交付一个图表,我希望它有一个平台,在数据中的每个间隙重复最后一个非空值,但不产生保留所有这些值的存储代价。您可以在多维数据集中使用MDX计算的日水平度量,它查找最后一个可用的数据点
不确定这个想法是否有用,但这就是我要开始寻找的地方。我已经接近这个目标了。提出了以下类型的递归表达式,它似乎可以工作(大部分)。试图替换ClosingPeriod()函数中的值以整理它,但该位无效:
/* Works! */
with member Measures.lastEstatementsCount as
iif(
isleaf( [Date].[Calendar].currentmember ),
iif(
isempty([Measures].[_Add E Statements Count]),
( [Date].[Calendar].prevmember, Measures.[lastEstatementsCount] ),
Measures.[_Add E Statements Count]
),
(
( tail( descendants( [Date].[Calendar].currentmember ) ) ).item(0),
Measures.[lastEstatementsCount]
)
)
select
Measures.lastEstatementsCount on columns,
[Date].[Calendar].[Month Name] on rows
from [EngagedMember];
/* Substituting ClosingPeriod() in the recursion doesn't for some reason */
with member Measures.lastEstatementsCount as
iif(
isleaf( [Date].[Calendar].currentmember ),
iif(
isempty([Measures].[_Add E Statements Count]),
( [Date].[Calendar].prevmember, Measures.[lastEstatementsCount] ),
Measures.[_Add E Statements Count]
),
(
ClosingPeriod( [Date].[Calendar].[Date], [Date].[Calendar].currentmember ),
Measures.[lastEstatementsCount]
)
)
select
Measures.lastEstatementsCount on columns,
[Date].[Calendar].[Month Name] on rows
from [EngagedMember];