因此,我一直在寻找一种计算多维数据集中滚动季度的好方法,并且进展甚微。
我们有一个视图v_FactScores,我们按季度ID计算平均值。我们所做的SQL等同于:
SELECT AVG([Score]) Score
FROM v_FactScores fs
INNER JOIN v_DimUser du ON fs.UserID = du.UserID AND fs.Country = du.Country AND fs.quarter1 = du.quarter1
WHERE fs.quarter1 IN (7,8)
这将为领先的第8季提供滚动平均值。该系列的下一个要点是:
SELECT AVG([Score]) Score
FROM v_FactScores fs
INNER JOIN v_DimUser du ON fs.UserID = du.UserID AND fs.Country = du.Country AND fs.quarter1 = du.quarter1
WHERE fs.quarter1 IN (8,9)
所以我们的第8季度有重叠。
我们为SSAS多维数据集创建了一个维度,标注了每种可能性,看起来与此类似:
Quarter RollUpID Label
1 1 "Leading quarter 2"
2 1 "Leading quarter 2"
2 2 "Leading quarter 3"
3 2 "Leading quarter 3"
3 3 "Leading quarter 4"
4 3 "Leading quarter 4"
然后我们希望在RollUpID上聚合。这似乎不像我们预期的那样工作......
我在MDX中看到很多使用.lag()函数的解决方案但是有一个基于维度事实的方法可能有效吗?否则,我们需要为每个指标创建三个新措施(单季度平均值,2季度滚动值和4季度滚动值)。