SSAS如何;“填充”;通过重复最后一个非空值来快照事实

SSAS如何;“填充”;通过重复最后一个非空值来快照事实,ssas,Ssas,我有一个具有典型快照结构和每日粒度(如库存量)的多维数据集。我希望能够从这个多维数据集中删除一些细粒度的数据,因为我们有大约270000000行的源数据,多维数据集的处理速度很慢,而且从一个数据点到下一个数据点,在一天的级别上没有明显的差异 然而,用户需要一个逐级的细节级别-最近的每日细节,然后旧时期的每月或季度细节。这样做将有助于解决这种情况,但他们也希望图表“显示”每个数据点的数据,并且在一个数据点和下一个数据点之间没有“孔” 所以这里有一个问题:如果我有一个带有快照事实表的多维数据集,并且

我有一个具有典型快照结构和每日粒度(如库存量)的多维数据集。我希望能够从这个多维数据集中删除一些细粒度的数据,因为我们有大约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];