SSAS 和来自多个其他 sims 的计算维度

SSAS and calculated dimention from multiple other dims

给定 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

所有尺寸均直接来自 SKs 的 Fact。 您将如何在 multidim SSAS 立方体中解决这个问题?

!警告!下面的剧透 - 在阅读我的之前尝试考虑解决方案!

我目前的方法是计算 Dims ID 之间的 CROSS JOIN (~100x100x100)。 然后我可以计算 DimNew 的复合 NK 作为 ID ~ DimA.DimId+|+DimB.DimId+|+DimC.DimId。 然后我也可以将此 ID 添加到事实 ETL,并按预期使用 NewAttr 为新暗淡构建新 ETL。 然后我可以在 cube new dim 中添加并添加新的事实列并通过 ID/SK 加入它们。 应该可行,还是有 10 倍更好的解决方案?

最终事实可以是这样的:

FactId,  DimASK, DimBSK, DimCSK, DimNewSK
or
FactId,  DimASK, DimBSK, DimCSK, NewAttr

好啦好啦! 似乎如果您实际上拥有所有 SK,然后添加所有需要的新维度,然后计算 NewAtr,然后在立方体中创建新的 Dim,并将所有 SK 作为复合键 - 它的关键步骤。

重要的是不要使用来自身份的新暗淡的 DimNewSK 或其他东西作为立方体中的键。

复合键允许与事实建立简单的正则关系,并且无需额外的虚拟键即可工作。

图片是千言万语——毕竟看起来很简单: