值得拥有的五大数据质量工具

译文 精选
大数据
在本文中,我们和您讨论五种数据质量类工具,以协助您完成数据之旅,并确保数据质量真正能够为业务奠定坚实的基础。

[[439969]]

【51CTO.com快译】如今,企业比以往任何时候都更加依赖数据。根据Gartner的最新数据质量市场调查,那些糟糕的数据质量,每年平均会给企业造成1500万美元的巨大损失。而且错误的数据往往会让企业失去商机、损毁市场声誉、拉低客户信心、甚至造成重大的财务损失。毋庸置疑,只有准确、一致、完整且可靠的数据,才能真正为业务提供实际、有利的价值。为此,许多企业往往会使用数据质量的相关工具。在本文中,我们将和您讨论如下五种数据质量类工具:

  1. Great Expectations
  2. Spectacles
  3. Datafold
  4. dbt(数据构建工具)
  5. Evidently

在深入探讨工具之前,让我们首先了解一下保障数据质量的相关概念。

数据问题从何而来?

从广义上讲,内、外部因素都会导致数据出现质量问题。其中,外部因素是指企业从诸如Meta、Google Analytics或AWS Data Exchange等,无法控制的第三方获取数据。例如,不同公司的IT系统可能在合并或收购之后,需要进行数据整合。但是,由于未能审核这些来自第三方的数据质量,或是因为应用程序中的输入验证不当,则可能导致数据质量出现问题。

而内部原因则源于企业生态系统的内部。例如,我们常听说的企业数据孤岛,就是一些鲜为人知的数据源。它们仅由组织内的某些团队或部门所使用。此外,缺乏适当的数据所有权管理,使用错误的数据类型和模型,甚至是软件工程师在应用程序的任何层更改字段、或引入破坏数据的代码更新,都可能导致数据质量的不佳和不一致。

衡量数据质量

数据在企业中的质量与价值,很大程度上取决于该企业如何定义它们,以及如何确定它们的优先级。通常,我们有七个实用的质量衡量指标。

  1. 相关性:数据与业务的相关程度。
  2. 准确性:数据的精准程度。
  3. 完整性:数据是否完整,是否处于稳定状态。
  4. 一致性:数据在整个组织中的是否能保持一致。如果使用同一个应用程序,去转换多个来源的同一条数据,其输出应当始终相同。
  5. 合规性:数据是否符合业务规则所期望的标准和格式。
  6. 唯一性:相同数据的多个副本是否在企业中都可用,而且它是否来自唯一的真实数据源。
  7. 及时性:数据对于当前业务需求的及时性。

确保数据质量

如前所述,企业通常使用一些自动化工具,来检查数据的质量。这些工具既可以是定制开发的,也可以是由供应商直接提供的。这两种选择各有利弊。

如果拥有充沛的IT资源,并且明确地定义了数据质量的要求,那么企业可以考虑采用定制化的开发方案,通过推出适合自己的工具,去减少持续的成本支出。当然,构建自定义方案也可能比较耗时,而且容易超过最初的预算。

而如果公司需要快速、可靠的方案,且不想自行维护的话,那么购买现成的方案则是最好的选择。说到这里,下面让我们来讨论五种典型的数据质量工具。当然,市场上还有许多其他相似的工具。您可以选择混合搭配的方式,来满足自己的预算和真实使用场景。

1.Great Expectations

作为一个开源库,Great Expectations可用于验证、记录和分析数据。用户以期望(expectations)的形式定义断言(assertions)。顾名思义,期望是您期望从数据中获得的质量;断言则是用声明性语言编写的。例如,下图的断言示例定义了passenger_count列的值必须介于1和6之间。

Great Expectations的另一个功能是自动化数据分析。它可以根据统计数据,自动从数据中生成期望。由于数据质量工程师不必从头开始编写断言,因此大幅节省了开发的时间。

一旦各种预期准备就绪,它们就可以被合并到数据管道中。例如,在Apache Airflow中,数据验证步骤可以被定义为一个使用BashOperator的checkpoint script。它会在数据流经管道时,触发相应的质量检查。目前,Great Expectations兼容大部分数据源,其中包括CSV文件、SQL数据库、Spark DataFrames和Pandas等。

2.Spectacles

Spectacles是一种持续集成(CI)类工具,旨在验证项目中LookML。此处的LookML是Looker类型的数据建模语言。而Looker是一个BI(业务智能)平台,它允许那些不懂SQL的人员去分析和可视化数据。

Spectacles通过在后台运行SQL查询,并检查错误,来验证LookML。它能够与GitHub、GitLab和Azure DevOps相集成。该工具适用手动调用、从拉取请求中触发,以及作为ETL作业的一部分运行等,几乎任何类型的部署模式。而将Spectacles作为CI/CD工作流的一部分,意味着它能够在将代码部署到生产环境之前,自动验证LookML的相关查询。

3.Datafold

作为一个主动式的数据质量平台,Datafold由数据差异(Data Diff)、具有列级沿袭(lineage)的数据目录(Data Catalog)、以及数据监控(Data Monitoring),三个主要组件所构成。

Data Diff允许您在合并到生产环境之前,对两个数据集(例如dev和prod)进行比较。这有助于用户采用更为主动的开发策略。它也可以被集成到团队的CI/CD管道中,以便共享GitHub或GitLab中的代码更改,并显示出具体的差异。

我们来看一个例子,Datafold的沙箱环境中自带有一个taxi_trips的数据集。如下图所示,我们在数据集datadiff-demo.public.taxi_trips和datadiff-demo.dev.taxi_trips之间运行了Data Diff操作。

那么在右侧带有详细信息的面板上,您将可以选择不同的选项卡,以获得针对结果的不同视角。其中,“Overview”选项卡将包含成功和失败测试的概要。

其Schema部分展示了两个数据集的列(包括数据类型,以及出现的顺序)是否相匹配。 

其Primary Keys部分显示了主键的唯一性、非NULL、以及和两个数据集之间匹配的百分比。

尽管Overview选项卡已经充分展示了各种信息来源,但是其他选项卡也能提供更多实用的详细信息。例如,Schemas选项卡就包含了如下方面:

上图突出显示了具有两个不同数据集的列。据此,数据工程师可以仅专注于这两个领域的内容,而节省宝贵的时间。

Data Catalog不但能够列出所有注册到Datafold的数据源,而且允许用户使用过滤器,去查找和分析任何特定的数据集。对于拥有数百个、甚至是数千个数据集的组织来说,这无疑会大幅节省时间。作为一种发现异常的实用方法,它能够针对数据沿袭(data lineage)功能,协助“回答”如下问题:

  • 这个值从何而来?
  • 这个值如何影响其他表?
  • 这些表是如何关联的?

Data Catalog提供了如下仪表板。通过滚动鼠标,您可以看到每一列的详细信息,其中包括:

  • 完整性(Completeness)-- 不为NULL值的百分比。
  • 分布(Distribution)-- 显示了出现得最多与最少的值,以及偏向某个范围的值。

单击Lineage下的图标,您会看到如下内容:

图形沿袭图(graphical lineage diagram)可以协助数据工程师快速找到列值的来源。您可以检查表、所有(或特定)列、以及与上下游有关的各种沿袭。

Datafold的Data Monitoring功能允许数据工程师通过编写SQL命令,来查找异常,并创建自动警报。这些警报由机器学习提供支持。而机器学习通过研究数据的趋势和周期性,能够准确地发现某些异常情况。下图显示了此类查询:

该查询是由Datafold自动生成的。它跟踪了出租车数据集中的每日总车费,以及总行程的趟数。

如下图所示,Datafold还允许用户去检查异常跟随时间变化的趋势。其中,黄点表示相对于最小和最大值的各种异常。

4.Dbt

Dbt是一个数据转换类工作流工具。它在部署之前,能够针对目标数据库执行数据转换的代码,显示代码将如何影响数据,并突出显示各种潜在的问题。也就是说,Dbt通过运行SELECT语句,以基于转换的逻辑,去构建数据的结束状态。

Dbt不但容易被集成到现代化的BI栈中,并且可以成为CI/CD管道的重要组成部分。它既可以根据拉取请求或按计划自动运行,又具有自动化回滚的功能,可以阻止在部署过程中,具有潜在破坏性的代码更改。

值得一提的是,Datafold和Dbt可以一起用于自动化的数据质量测试。与Dbt类似,Datafold也可以被集成到CI/CD管道中。在协同使用时,它们会显示目标代码是如何影响数据的。

5.Evidently

作为一个开源的Python库,Evidently用于分析和监控机器学习的模型。它能够基于Panda DataFrames和CSV文件生成交互式的报告,可用于对模型进行故障排除和数据完整性检查。这些报告会显示模型的运行状况、数据漂移、目标漂移、数据完整性、特征分析、以及分段性能等指标。

为了了解Evidently的具体功能,您可以在Google Colab上打开一个新的笔记本,然后复制如下代码段:

  1. wine = datasets.load_wine() 
  2. wine_frame = pd.DataFrame(wine.data, columns = wine.feature_names) 
  3. number_of_rows = len(wine_frame) 
  4. wine_data_drift_report = Dashboard(tabs=[DataDriftTab]) 
  5. wine_data_drift_report.calculate(wine_frame[:math.floor(number_of_rows/2)], wine_frame[math.floor(number_of_rows/2):], column_mapping = None) 
  6. wine_data_drift_report.save("report_1.html"

该代码段会在浏览器中生成并加载报告。报告的仪表板概览界面,将显示基于每项功能的参考值与当前值的分布。

Evidently还可以进行更多近距离的检查。例如,下图显示了当前数据集和参考数据集不同的确切值。

由此,我们可以进一步获悉数值目标漂移、分类目标漂移、回归模型性能、分类模型性能、以及概率分类模型等性能。

小结

随着数据质量标准和业务需求在不断发展,数据质量的保证已经成为了一个持续的过程。上文和您讨论的五种工具,通常可以被用于数据处理和使用的不同阶段。您也可以根据自身业务和数据使用的实际需求,或是单独采用,或是以不同的组合形式进行协同试用。

原文标题:Five Data Quality Tools You Should Know,作者:Michael Bogan

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:华轩 来源: 51CTO
相关推荐

2011-01-04 09:21:37

2018-09-20 09:00:41

大数据数据科学数据可视化

2010-10-27 09:33:18

MVC开发

2021-07-21 12:00:41

数据可视化人工智能

2017-01-15 10:56:57

大数据非结构化过期

2022-11-25 08:00:00

人工智能工具Grammarly

2022-06-28 09:44:21

DevOps软件开发

2012-08-13 14:27:31

大数据

2013-01-10 10:30:32

大数据预测Hadoop

2023-06-02 11:36:27

数据中心数字基础设施

2022-01-07 09:41:44

数据中心芯片CPU

2021-02-24 14:04:23

Linux媒体播放器桌面

2012-02-15 09:29:58

大数据IT

2015-10-20 09:42:36

医疗大数据应用

2014-02-09 16:20:20

大数据

2022-03-14 09:46:10

Hadoop大数据

2021-01-21 09:45:16

Python字符串代码

2019-03-25 13:12:59

前端开发编程

2013-07-16 09:45:53

Android 5.0创新

2018-10-06 19:10:26

技术项目云计算
点赞
收藏

51CTO技术栈公众号