ETL反模式:惰性元数据

ETL元数据如果数据是火车,那么元数据就是它旅行的轨迹。 ETL流程中良好的元数据定义将有助于确保数据流是可预测的,健壮的,并且经过适当约束以避免错误。但是,在涉及元数据时,许多ETL流程都采用了放手的方法。在某些情况下 自由放任 设计易于“quick and dirty”数据分析。但是,大多数企业ETL流程将从良好的元数据中受益,以帮助使火车按时,按计划运行。

什么是元数据?

首先,让’s从基本定义开始:元数据从字面上看 关于数据的数据。元数据描述某些数据对象的结构和其他属性。元数据尤其有助于定义:

  • 将使用的数据集。这可以包括数据集的类型(文件,表,Web服务端点等)以及有关每个数据集的扩展信息(连接字符串,创建日期等)。
  • 这些数据集中的各个字段。这包括列名,数据类型和数据长度。
  • 数据约束。这些方面的示例包括唯一性约束,可空性设置和字段验证(例如要求数字字段在一定范围内)。
  • 二进制数据类型的扩展属性。例如,如果您正在处理图像文件,则元数据可以显示详细信息,例如位置,相机类型和设置。这种元数据类别倾向于高度特定于要移动的特定文件类型。

ETL反模式:惰性元数据

ETL流程中的元数据管理可能具有挑战性。在系统之间以及跨不同介质(非结构化数据,平面文件,XML或关系数据)交换数据时,数据类型的定义可能会变得模糊。一些资料–包括非结构化数据和平面文件–几乎没有元数据配置。关系(RDBMS)数据在频谱的另一端,它严格定义了数据类型和约束。

由于这种交换过程的挑战,许多开发人员选择了一种我称之为的方法 惰性元数据。在这种设计模式中,ETL管道的配置非常通用,几乎没有使用元数据定义(超出了数据移动的绝对必要)。这种惰性元数据方法的一些常见工件包括:

  • 连接端点的非描述名称。这些可以根据数据结构的类型简单地命名(“CSV file”, “Oracle database”),或者可能会更加令人沮丧(“Source1”, “Destination1”).
  • 没有明确定义的字段的默认字段名称(“Column1”, “Column2”)
  • 每个字段的宽文本数据类型
  • 对ETL管道中的数据没有任何约束或检查

有一定程度的惰性元数据。在某些情况下,使用好的对象和列名,但是数据类型都设置为宽的可为空的文本字段。还有一些其他类型已定义了适当的数据类型,但忽略了将唯一性或外键值检查到数据加载到其最终目的地之前所必需的约束。在某些示例中,ETL管道完全处理从源到达的数据,并使用相同的模糊元数据到目标端点,从而导致 无用的通用对象名称 永远留在下游数据库中。

好的元数据的好处

根据数据负载构建有用的元数据确实需要一些时间和精力。对于不这样做的端点,这可能特别繁琐’拥有自己的固有元数据,例如无标题CSV文件或非结构化文本数据。但是,在大多数情况下,值得创建良好的对象名称,数据类型和约束所需的工作。拥有良好的元数据定义可以实现几个目标:

尽早发现并处理数据问题

通过使用适当的数据类型和约束检查,您可以在过程中更早地检测并处理(通过数据校正,隔离或分类)错误。这使得最终的ETL过程更加健壮和可预测,并使得随着时间的推移更容易适应新的数据异常。

防止目标系统中的不一致

与上述要点相关,如果您依赖最终目标表的约束,则您’由于ETL过程由于对该表的约束而在加载过程中失败,因此最终最终将部分加载目标表。更糟糕的是,如果您将桌子’重新加载数据没有限制(这本身就是一个缺陷设计,但是’进行了一天的对话),您会发现数据加载成功,但正在加载错误数据。

结果数据更易于查询

例如,如果您正在将数字数据或日期作为文本加载,则您’在对该数据进行任何实际查询之前,必须将其转换为适当的数据类型。

它使您的ETL代码更易于阅读

通过在数据端点,表和字段上使用适当的名称,ETL代码可以自我记录,并且更易于理解。您的开发人员–也许未来你– will thank you.

故障排除和调试容易得多

您是否曾经调查过带有对象名称的ETL流程的执行日志,例如“数据库连接1”, “Table”, or “Load Data”?仅此一项就足以进行适当的元数据命名。

注意元数据

在某些情况下,严格的元数据约束没有’t增加了很多价值,例如在将非结构化数据加载到易失性登台表中以在ETL的后续步骤中进行进一步处理时。无论’在初始暂存加载或后续的ETL任务中,使用良好的元数据(例如明智的名称,数据类型和约束)使数据加载过程的过程更健壮,更易于理解。

 

关于作者

Tim Mitchell
Tim Mitchell is a 数据架构师和顾问 专门研究摆脱数据痛点的人。 在数据仓库,ETL,报告或以下方面需要帮助 训练?如果是这样, 联系蒂姆 进行30分钟的无义务聊天。

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.