【发布时间】:2021-09-09 20:47:45
【问题描述】:
给定 3 个维度 DimA 和 DimB 和 DimC 以及一些 DimSk、DimId 和 DimName 作为属性,问题被定义为“添加到计算为的新属性”:
NewAttr =
CASE
WHEN DimC.DimId IN (1, 2, 3) THEN 'A ' + DimA.DimName
WHEN DimC.DimId IN (4, 5, 6) THEN 'B ' + DimB.DimName
END
所有尺寸均由 SK 直接从 Fact 中引用。 您将如何在 multidim SSAS 多维数据集中解决这个问题?
!警告!以下剧透 - 在阅读我的文章之前尝试考虑解决方案!
我目前的方法是计算 Dims ID 之间的 CROSS JOIN (~100x100x100)。
然后我可以将 DimNew 的复合 NK 计算为 ID ~ DimA.DimId+|+DimB.DimId+|+DimC.DimId。
然后我也可以将此 ID 添加到 Fact ETL,并按预期使用 NewAttr 为新的 dim 构建新的 ETL。
然后我可以在多维数据集中添加新的暗淡并添加新的事实列并通过 ID/SK 加入它们。
应该可行,还是有 10 倍更好的解决方案?
Final Fact 可以是:
FactId, DimASK, DimBSK, DimCSK, DimNewSK
or
FactId, DimASK, DimBSK, DimCSK, NewAttr
- 第二个在 db 上没有 NewDim 的情况下又快又脏 - 但事实可以部分处理,因此当 DimNamein 暗淡将及时改变时,不同的事实可以为相同的复合 NK 生成不同的 NewAttr...
【问题讨论】:
标签: ssas data-warehouse