玩转大数据大数据大数据&云计算

如何 ETL 才算做到好棒棒?(Q) 问问题

2019-07-27  本文已影响0人  datadam

说来惭愧,写本篇的当下距离开篇已经三年有余了。工作虽无闲暇,繁忙却积累了一点一滴,一直想要分享。

数据仓库的核心是ETL。启程转合,本篇负责丢问题:如何做好大家的 ETL(数据抽取转换加载)根据本人慵懒程度阅读互动热度,后续再来分篇能拖就拖详细作答。😀

能看得懂问题且想互动的朋友敬请留言,我会更有动力加速续篇的。-- datadam


开篇我们提到 ETL 的本质,就是 1. 逐一筛选数据源(胡萝卜和雪梨开箱)定量提取该次处理需要的数据(只要今期的到货)2. 清洗有问题的数据(清洁水洗),添加业务逻辑转换(去皮去核打汁加水)3. 加载至门别类好的维度和事实数据表(按量封箱上架)

有相对 SQL 基础的朋友们一定都熟悉这里类比的一些实例:1. 到哪个数据源找胡萝卜或雪梨 - 数据库A表X 或是 数据库B表Y;表实体的关系是一对多或是多对多;选取最近N天内的数据;2. 把数据源中应该是日期却储存为字符的数据转化成日期;左外连接的左表是主体通常是交易表,右表是辅助表通常是属性表,基于既定的业务键做连接可以确保数据返回的性能效率;3. 找出业务主键作比对以更新或新增;业务逻辑转换后有新的粒度,也要重建业务主键以加载至维度和事实数据表。


这些都是  ETL 的基本。每个环节可以再局部作放大,便可以列举以下几点思考:

数据剖析Data Profiling

多个数据源中都有疑似你要的数据,如何可以分别它们的相同与不同以确认最后使用哪一组或是多组呢?

如果现有的数据源中并没有你需要的数据,如何能够补足缺失的关系以连接相应的信息呢?

数据一致 Data Consistency

抽取是找一个业务日期还是找一个系统时间做选取好?选取几天才算合适呢?

预备分段(Staging)的开始,何时需要考虑多个数据源的更新同步?

如何处理数据源中已经消失的数据,标记删除或是直接删除有什么不同?

更新和新增相对比较直接,但删除应该怎样从数据源延续到维度表/事实表?

模型设计 Model Design

维度表和事实表应该怎么界定,如何定位粒度大小?

需求变更,何时需要考虑建立新的事实表?

上一篇下一篇

猜你喜欢

热点阅读