data-warehouse - SQL Server scd2 和 scd1 中的 DWH SCD 类型 2 实现
问题描述
我们正在实施一个新的 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?
解决方案
好习惯?是的。经常被忽视的维度建模的标准特征。我已经看到了 SCD0、SCD1 和 SCD2 组合的尺寸,没有什么可以阻止其他 SCD 类型的使用。
列没有限制,但这似乎有点过分。您可能希望使用“散列”方法来检测 SCD2 更改,在该方法中计算 SCD2 列的散列,并使用此值来检测是否有任何列发生了更改。
抱歉,我不明白关于审计日志的问题。这些日志是您的数据源吗?
推荐阅读
- jenkins - 如何在詹金斯管道 groovy 脚本中进行构建超时?
- c++ - 使用多线程读取同一个文件失败
- javascript - 为什么 ASYNC AWAIT 在反应中的使用效果不好
- docker - Docker overlay2 吃磁盘空间
- java - 如何消除 Java 中的 ArrayIndexOutOfBoundExceptions?
- reactjs - 我在反应中不断缺少分号错误
- wso2 - WSO2 IS 5.7.0 - 密码最小年龄配置(以分钟为单位)
- python - 了解 tf.name_scope
- php - 如何在 postgresql 执行时获取违反列名的唯一键
- amazon-web-services - 避免从一个 lambda 到另一个的异步调用