遵循这些获取高质量数据的最佳实践

如何选择正确的工具并将其集成到您的数据管道中——数据摄取可能只是 ETL/ELT 流程中最重要的一步。毕竟,没有数据就无法进行任何转换!数据摄取管道将您的工具和数据库连接到您的数据仓库,即整个数据堆栈的中心。您设置的将数据摄取到……的过程

遵循这些获取高质量数据的最佳实践

如何选择合适的工具并将其集成到您的数据管道中

数据摄取可能只是 ETL/ELT 过程中最重要的一步。毕竟,没有数据就无法进行任何转换!数据摄取管道将您的工具和数据库连接到您的数据仓库,即整个数据堆栈的中心。

您为将数据引入仓库而设置的流程为数据团队中的所有其他流程设定了标准。您随后的转换和分析仅与您摄取的数据质量一样好。这就是为什么您必须从一开始就遵循最佳实践,并在整个过程中记录它们。

当您从一开始就记录最佳实践时,您被迫遵循一套结构。如果没有这种结构,事情就会开始变得草率。您创建了一个不遵循您想要的命名约定的新数据连接器,但您已经为要摄取的数据付费,现在更改它为时已晚。您与一家不提供与对您的业务最重要的连接器集成的摄取公司签订合同。这些都是您将避免的现代数据堆栈的噩梦。

那么,创建数据摄取管道的最佳实践是什么?在本文中,我将分享我在从头开始构建数据堆栈时学到的最佳实践。这些实践包括选择摄取工具、记录源、编排、测试和监控。通过分享我过去所做的事情,您可以在自己踏上旅程之前从我的成功和失败中学习。

‍比较数据摄取工具

当我第一次开始决定我们将用于数据堆栈的工具时,我当时的经理有一些很棒的系统。我是一名新的分析工程师,从未在一家初创公司全职工作过。我只是在学习绳索!幸运的是,他在决定正确的工具和将框架组合在一起方面拥有丰富的经验。如果他没有整理一个精美的 Excel 电子表格来帮助比较我们正在决定的数据摄取工具,谁知道我们今天的摄取会在哪里。[0]

那么,这个决定摄取工具的框架到底是什么?它基本上是一张记分卡,包含我在标题中提到的三个不同类别——必备品、必备品和破坏者。然后,在每个类别下都有某些品质/功能,我们根据工具的功能打分 1-3。

在设计数据摄取管道时,有很多重要的事情需要考虑,以下是我们包括的一些:

  • 可用的数据连接器(Shopify、Azure Blob、Facebook、NetSuite 等)
  • 团队的能力(设置时间、维护时间、技能等)
  • 预算(提取预期数据量的每月成本)
  • 支持(Slack 社区、专门的支持代理等)

这些对于为您的团队决定正确的摄取工具都至关重要。您可能找不到一种工具可以满足您的所有需求,但您确实想找到一种可以满足您大部分需求的工具。如果您无法在一个工具中找到您想要的东西,请制定策略,了解如何使用几种不同的工具并仍然获得相同的结果。例如,也许您有一位分析工程师,他可以使用 Airbyte 为您的大多数来源设置和维护连接器。但是,有一些没有集成,因此您需要让您的工程团队构建一些东西。[0]

记录您的数据摄取管道源

我怎么强调文档的重要性都不为过,尤其是如果你在一个小型数据团队工作。当出现问题并且拥有文档的人生病、度假或离开公司时,文档是您的生命线。现代数据堆栈中的所有内容都应记录在案,以便团队中的其他任何人都可以在需要时接管它。数据摄取也是如此。

确保您保留一份文档,记录您正在使用的各种摄取工具以及您在该工具中设置的连接器。如果您不这样做,很容易忘记原始数据的来源。此外,请注意您为使该连接器正常工作而必须做出的任何特殊要求或更改。例如,对于我们的一个连接器,我必须在数据库上启用变更数据捕获才能正确捕获数据。把这些事情写下来,这样你的团队就不是猜谜游戏了。

始终在仓库中保留所有原始数据的副本

我在 Snowflake Data Warehouse Architecture: How to Organiza Databases, Schemas and Tables 中广泛地写了这篇文章,所以如果你还没有,一定要检查一下。数据摄取最基本的最佳实践之一是保护您的原始数据。您的原始数据应始终位于数据仓库中的单独数据库中。任何转换工具或人员都不应拥有对该数据库的写入权限。它应该是严格只读的。[0]

该数据库将从不同来源获取所有原始数据。该数据库将充当您所有数据的“备份”,以防您的数据建模出现问题。假设您意外运行了一个数据模型,该模型删除了表中的随机行并混合了列值。你不能再相信这些数据了。你不想删除它,因为那样它就永远消失了,但你不能以其他方式使用它。您可以删除保存在数据模型中的所有数据,并通过引用原始数据源重新运行模型。

原始数据来拯救!

‍同步运行同步和模型

根据您运行数据模型的频率,您的原始数据应始终在模型运行之前同步到您的仓库。无论您是像我一样使用 dbt 进行转换,还是其他方式,一个转换应该紧随其后发生。这可确保您的相互依赖的 dbt 模型不会并行运行,从而在不同的分析中给出不准确的结果。通过同步运行同步和 dbt 模型,您还可以更准确地验证数据。[0]

幸运的是,Airbyte 等数据摄取工具一直与 Airflow、Prefect 和 Dagster 等强大的部署工具合作。就个人而言,我使用 Prefect 来部署我的数据模型。它们通过提供“Airbyte 连接任务”使同步变得容易,允许您直接在数据管道中同步数据连接器。通过直接在管道中同步数据,您可以在模型和这些同步之间创建下游依赖关系。这意味着您的数据模型中将始终拥有最准确和最新的数据。[0]

您只需指定 Airbyte 服务器的托管位置、帖子、api 版本和连接 ID。就这么简单!然后,您在 Prefect 流程中使用这些任务,并将它们设置为您的 dbt 模型运行的上游依赖项。您可以阅读本教程以使用 Airbyte、Prefect 和 dbt 创建数据摄取和转换管道。[0]

‍在数据源创建警报

您必须在源头创建数据警报和测试。许多人认为应该对最终的数据模型进行测试和警报,但实际上恰恰相反。当您专注于下游而不是上游时,它就变成了您永远无法解决的 10,000 块拼图。您必须进行大量挖掘才能发现问题实际上并不是数据模型。

相信我,我知道,因为我去过那里。当我们在数据可视化平台中编写所有数据模型时,就无法调试中间模型。我不得不花费数周时间调查一个问题,这个问题原来是由数据源本身造成的。您构建的第一个警报应该在数据源级别。如果您的数据源存在问题,您需要在它影响任何下游数据模型之前立即知道。

更不用说,修复数据源的问题比在数据模型中查找、测试每一行代码以查看其是否按预期执行要容易得多。数据源中的错误可以简单到修复电子表格中的人为错误、更新凭证或重新触发 cron 作业。它们比涉及大量代码时要简单得多。

我最喜欢在源头设置测试和警报的方法是使用 dbt 测试和 re_data。使用 dbt 测试,您可以检查空值、主键和预期值。您可以使用这些简单的测试来确保您的数据看起来符合预期。 re_data 是一个 dbt 包,它允许您监控数据的新鲜度、row_count 和描述性统计等指标。您甚至可以设置 Slack 警报,以在某个指标超出其典型 z 分数时告诉您。[0][1]

Slack 警报本身就很强大。我们每天都在 Slack 上与我们的公司和团队进行交流。将数据警报直接发送到#data-alerts 频道,这样您就无需每天早上解析电子邮件或手动访问仪表板。如果出现问题,您的工具会通过 Slack 告诉您。确保你总是设置它们!

Conclusion

从数据堆栈的开始阶段遵循数据摄取最佳实践将使您的团队为未来的成功做好准备。这些最佳实践的文档将从一开始就明确要求,几乎没有出错的余地。当为拼图的一块设定高标准时,它必然会逐渐渗透到其他每一块。

重申一下,在决定摄取工具并将数据摄取管道创建到堆栈中时,请记住以下几点:

  1. 写下所有对您的业务最重要的连接器、您的团队必须提供的技能和时间,以及您在决定正确的摄取工具时的预算。
  2. 记录您的所有数据源以及它们如何被摄取到您的数据仓库中,包括任何特殊设置。
  3. 始终为您的原始、未触及数据保留一个数据库。
  4. 同步运行数据同步和模型,因此数据中没有间隙。
  5. 在数据源而不是下游数据模型上创建警报。

虽然这可能会增加您的工作量,但现在遵循这些最佳实践只会为您省去麻烦。您正在主动解决数据摄取管道中出现问题的情况,在它对业务产生负面影响之前立即找到解决方案。最好从一开始就考虑这些事情,而不是在对出错的事情做出反应时。

订阅我的分析工程通讯,了解最佳实践、新工具和所有现代数据堆栈的最新信息。[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月13日
下一篇 2022年5月13日

相关推荐