Greenplum构建实时数据仓库实践
上QQ阅读APP看书,第一时间看更新

1.3.2 数据转换

数据从操作型源系统获取后,需要进行多种转换操作。如统一数据类型、处理拼写错误、消除数据歧义、解析为标准格式等。数据转换通常是最复杂的部分,也是ETL开发中用时最长的一步。数据转换的范围极广,包括从单纯的数据类型转化到极为复杂的数据清洗技术。

在数据转换阶段,为了最终能够将数据装载到数据仓库中,需要在已经抽取来的数据上应用一系列的规则和函数。有些数据可能不需要转换就能直接导入到数据仓库。

数据转换一个最重要的功能是清洗数据,目的是只有“合规”的数据才能进入目标数据仓库。这一步操作在不同系统间交互和通信时尤其必要,例如,一个系统的字符集在另一个系统中可能是无效的。此外,由于某些业务和技术的需要,也需要进行多种数据转换,例如下面的情况:

● 只装载特定的数据列。例如,某列为空的数据不装载。

● 统一数据编码。例如,性别字段,有些系统使用的是1和0,有些是“M”和“F”,有些是“男”和“女”,统一成“M”和“F”。

● 自由值编码。例如,将“Male”改成“M”。

● 预计算。例如,产品单价×购买数量=金额。

● 基于某些规则重新排序以提高查询性能。

● 合并多个数据源的数据并去重。

● 预聚合。例如,汇总销售数据。

● 行列转置。

● 将一列转为多列。例如,某列存储的数据是以逗号作为分隔符的字符串,将其分割成多列的单个值。

● 合并重复列。

● 预连接。例如,查询多个关联表的数据。

● 数据验证。针对验证的结果采取不同的处理方式,通过验证的数据交给装载步骤,验证失败的数据或直接丢弃,或记录下来做进一步检查。