SQL Server scd2 和 scd1 中的 DWH SCD 类型 2 实现
Posted
技术标签:
【中文标题】SQL Server scd2 和 scd1 中的 DWH SCD 类型 2 实现【英文标题】:DWH SCD type 2 implementation in SQL Server scd2 and scd1 【发布时间】:2019-03-21 15:23:44 【问题描述】:我们正在实施新的 dwh 解决方案。我有许多维度需要慢慢改变类型 2 属性。我正在考虑在我的维度中实现类型 2 和类型 1 属性的组合。也就是说,对于某些维度属性,我们通过在暗表中插入新行来跟踪历史记录(Type2),对于其他属性,我们将只更新现有行以进行任何更改(Type1)
问题:
这是一个好习惯吗?可以将 SCD 1 和 2 组合用于相同的暗淡吗?
维度中的 SCD 2 属性的数量是否有限制?我的维度很宽,比如 300 列,其中一位用户要求 scd 类型 2 跟踪大约 150 列。在昏暗中有这么多 scd2 属性可以吗?是否会因此对多维数据集和仪表板等下游报告 BI 解决方案的性能产生任何影响?
在 OLTP 系统中,我们维护一个“审计”表来记录任何更新。尽管这不是一种非常容易查询的格式,但我们得到了与此更改相关的大多数问题的答案。我们不需要太多关于数据变化的报告。当然,有一些重要的列,例如Status
,我们肯定需要 SCD2,但其余列,我不确定 DWH 中许多其他列的历史是否会增加任何价值。我的问题是当我们在 OLTP 中有这个审计表时,我如何确定 DWH 中哪些属性需要 SCD 2?
【问题讨论】:
【参考方案1】:好的做法?是的。经常被忽视的维度建模的标准特征。我已经看到了 SCD0、SCD1 和 SCD2 组合的尺寸,没有什么可以阻止其他 SCD 类型的使用。
对列没有限制,但这似乎有点过分。您可能希望使用“散列”方法来检测 SCD2 更改,您可以在其中计算 SCD2 列的散列,并使用此值来检测是否有任何列发生了更改。
抱歉,我不明白关于审计日志的问题。这些日志是您的数据源吗?
【讨论】:
以上是关于SQL Server scd2 和 scd1 中的 DWH SCD 类型 2 实现的主要内容,如果未能解决你的问题,请参考以下文章
本地 SQL Server 实例和 Azure SQL Server 中的 LoadData 脚本
sql SQL SERVER和MySQL中的CHOOSE和ELT函数