城市管理、智慧社区、工业智能化、智慧金融、智慧医疗等社会千行百业的数字化和智能化发展,离不开以大数据和AI为基础的技术体系。我们的社会(或者我们关注的领域)每天都在产生大量的数据,这些数据有的是生产数据,有的是行为数据,如何利用好这些数据,让数据产生价值就需要对数据的产生、收集、管理、应用等方面进行数据治理。数据质量是大数据领域的一个重要特征,低质量的数据不仅浪费资源,更影响数据计算结果,数据质量的高低对大数据应用价值有着很大影响。因此,数据质量管理是数据治理的一个重要模块。
数据质量管理旨在评估和改善数据质量,提供了识别、测量、监控和提高数据资产整体质量的功能。然而,大数据平台建设初期,数据质量往往是一个容易被忽视的领域,随着数据架构的不断成熟以及开源数据质量工具的发展,数据质量管理逐步得到重视和改善。
目前,开源社区出现了许多数据质量工具,可选择的项目越来越多,下面是2023年比较热门的6个开源数据质量管理工具。
1.Deequ
GITHUB:https://github.com/awslabs/deequ
随着Spark的应用越来越多,Deequ是一款非常适合用于Spark的质量检测工具,非常适合测试大批量数据,Spark DataFrame的任何东西都可以使用Deequ进行测试。并将结果输出到任何关系数据库、CSV文件或者日志等。Spark的作业主要使用Scala或Python语言编写,对于原生Scala,Deequ可以直接使用,但对于Python,就需要一个名为PyDeequ的包装器。
pip install pydeequ
相关文档可以参考:https://pydeequ.readthedocs.io/en/latest/README.html
2.dbt Core
GITHUB:https://github.com/dbt-labs/dbt-core
dbt是一个数据管道开发平台,支持动态SQL、模板和建模等功能。dbt的一个重要特性是自动化测试,用户可以使用dbt执行全面数据测试、数据质量检查和数据验证。可以在数据管道、数据源和目标数据之上使用dbt执行的质量检测模型,例如:数据范式(3NF及以上)模型、维度模型和数据仓库模型。
dbt除了提供数据测试和数据质量功能,在应用生态上,许多公司还为dbt扩展数据质量功能。例如:Elementary,它能够总结dbt中的所有内容,提供数据质量监控指标、数据新鲜度、数据异常信息和异常数据分析的功能。
3.MobyDQ
GITHUB:https://github.com/ubisoft
DEMO:https://ubisoft.github.io/mobydq/pages/demo/
MobyDQ是数据工程团队的一个工具,可以自动对数据管道进行数据质量检查,捕获数据质量问题并在异常情况下触发警报,无论他们使用的数据源是什么。
数据质量检测工具MobyDQ可以独立运行于开发环境和测试环境。而在生产环境中,MobyDQ也支持使用Docker或Kubernetes容器运行。 MobyDQ的数据质量框架主要侧重四大质量指标:完整性、新鲜度、响应时间和有效性。MobyDQ支持丰富的数据源,例如:MySQL、PostgreSQL、Teradata、Hive、Snowflake和MariaDB等。 MobyDQ允许用户使用其GraphQL API运行测试,支持将此API与Python 或 JavaScript之类的编程语言一起使用,另外,MobyDQ在结构化数据测试方面,它还提供了基于Hive,PostgreSQL,MySQL等数据源的Demo。
4.Great Expectations
https://github.com/great-expectations/great_expectations
Great Expectations(GX)可以数据工程师进行质量检测、创建分析文档来提高团队成员对数据的理解。
Great Expectations(GX)是最受欢迎的数据质量管理工具之一。创建Great Expectations的核心思想是:“instead of just testing code, and we should be testing data. After all, that’s where the complexity lives.”
意思是:“不仅仅是测试代码,更应该测试数据。毕竟,数据才是复杂性所在。”
GX期望通过连接到数据源运行事先定义好的集成模板来检测数据。在官方指南中,可以找到更多关于GX与Databasericks、Flyte、Prefect和EMR等工具和平台集成的信息。目前Great Expectation维护非常积极,并且已被Vimeo、Calm、ING、Glovo、Avito、DeliveryHero、Atlan和Heineken等公司使用。
GX规范了“数据的预期状态”。GX与数据源的集成意味着所有的数据质量检查都在适当的位置完成,并且没有数据被移出数据源。GX还可通过自动化数据质量检测、实时监测结果记录以及运行摘要来支持数据质量管理。GX还可以直接与Airflow , Meltano等工具集成。支持将质量检测结果保存到各种数据库或者文件系统中。
5.Soda Core
https://github.com/sodadata
Soda Core是一个Python开发的开源数据质量工具,旨在确保数据平台中的数据可靠性。它附带了命令行工具。支持SodaCL(Soda Checks Language),SodaCL是一种兼容YAML,可靠的,用于特定领域的语言。Soda Core可以连接到数据源和工作流,确保数据不论在管道内还是管道外都能够被检测。Soda Core支持广泛的数据源、连接器和测试类型,它是目前开源项目中对数据连接器覆盖最全面的数据质量工具,如Dask、DuckDB、Dremio等。
Soda Core Python库的主要目标之一是能够对运行检查数据源来查找数据源中的数据质量问题。Soda Core支持使用命令行执行SodaCL检查文件以完成预定义规则的扫描任务,命令行任务的方式和使用Soda Core运行查询来执行质量检测一样。
6.Cucumber
https://github.com/cucumber/
Cucumber框架其实并非一个真正意义上的数据质量检测工具。但它却能够与pytest-bdd测试库集成,以支持基于行为驱动的开发和测试。
Cucumber的核心特性在于不需要考虑开发人员、数据工程师或安全工程师的需求,而是以最终用户为中心编写测试要求,因此在Cucumber中只需要使用简单的英语说明填充预定义的测试模板,便可完成新的测试要求。
Cucumber的目标是让你编写任何人都能理解的测试要求,大大减轻工作难度。可以将Cucumber与任何编排和工作流引擎集成在一起,比如 Jenkins、 Airflow等等,实现测试用例的编写和执行。
以上六种比较热门的开源数据质量检测工具,您可以将这些工具与现代数据管理系统一起使用,以测试和监控数据质量,并设置警报,实现数据质量可视化和可分析,以便更深入地了解数据平台的整体状态。