【问题标题】:SSAS and calculated dimention from multiple other dimsSSAS 和从多个其他维度计算的维度
【发布时间】: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


    【解决方案1】:

    好吧,乖乖! 好像您实际上拥有所有 SK,然后添加所有需要的新维度,然后计算 NewAtr,然后以所有 SK 作为复合键在多维数据集中创建新的 Dim - 它的关键步骤。

    重要的是不要使用来自身份的新暗淡中的 DimNewSK 或其他东西作为多维数据集中的键。

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

    图片是由 1000 字组成的 - 毕竟看起来很简单:

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多