etl - 数据仓库和原子性很少共存
问题描述
这是在一条幽默的推文背景下出现的,该推文讲述了将数据仓库的夜间负载包装在事务中,以及这将如何使日志文件膨胀并占用磁盘空间。我并不是要反驳它,而是要更好地理解它——对我来说,这似乎意味着应该允许完成部分负载(由于错误),这意味着 DW 不能准确地反映源系统( s)。
我能理解的唯一方法是,如果不完整的记录将被加载到 DW 中的中间暂存层,但在随后的夜间加载完成之前不会被进一步处理,然后才会被进一步处理。
我试图进一步研究它,但没有成功,所以非常感谢任何建议。
解决方案
如果在加载 DW 期间发生错误,您可以:
- 停止加载和回滚(到开始加载单个目标对象、一组对象或整个 DW)
- 停止负载并让 DW 保持原样
- 记录错误并继续加载(失败的目标或 DW 中的其他对象)
您选择哪个选项完全取决于您的特定情况,并且您可能在 etl 管道的不同点使用许多不同的策略,具体取决于错误的数量。例如:
- 该错误可能允许您继续加载其他维度/事实而不影响它们
- 您的企业可能更喜欢加载事实表减去一条错误记录,而不是在错误得到修复之前丢失一整天的数据
推荐阅读
- python - 使用数字数据作为色调的 seaborn 中的堆积条形图
- c++ - 使用 Make 从 Linux 中的两个源目录构建 c++ 项目
- excel - Excel:重复相同的值,直到找到一个新值(取决于另一列)?
- amazon-web-services - 将 lambda 函数内联传递给 AWS CloduFormation 模板时,有没有办法解决本地模块依赖关系?
- java - 如何在 Spring Kafka 中销毁消息侦听器的对象?
- javascript - 如何在两个日期之间移动进度条滑块/指针?
- jenkins - Jenkins/groovy CPS 问题:artifactoryUpload
- javascript - 将包含 python 列表的字符串转换为 javasctipt 数组
- c - 为什么会出现此错误:找不到“conio.h”文件
- ajax - 获取fullcalendar事件时如何获取ajax调用返回码