数据质量是大多数数据产品需要解决的一个挑战;不这样做可能会产生严重的潜在后果。例如,缺失的值可能会导致生产系统出现故障,而不正确的数据可能会导致做出错误的业务决策。在机器学习中,数据分布的变化可能会破坏模型的性能;在推荐系统的背景下,这可能会导致糟糕的客户体验,并影响您的收入。在医疗保健等行业,其后果可能要严重得多。它可能导致虐待和误诊。例如,处方错误不仅代价高昂(健康创新卓越网络估计每年210亿美元),而且据信也是美国每年7000多人死亡的原因。
幸运的是,数据质量框架可以帮助我们将低质量数据的风险降至最低。它们不仅可以帮助我们尽早发现问题,还可以以自动化和可重复的方式进行识别。尽管可以开发自己的数据质量框架,但它可能既复杂又耗时。有了丰富的开源和商业框架,它们很好地满足了大多数需求,使用现有的框架是有意义的。然而,有许多不同的数据质量框架可供选择。在这里,我们将研究如何选择适合您的项目的框架。
弄清楚哪种框架适合您的数据产品的需求
选择最适合您项目的数据质量框架在很大程度上取决于上下文——您现在所处的位置以及您试图实现的目标。以下是一些常见的场景,这些场景将有助于演示如何选择框架。
场景1:快速评估继承的遗留数据产品
您继承了一个潜在的大型数据产品;然而,目前还没有任何测试用例,您也不了解它的质量。您需要快速确定这一点,然后与领域专家一起发展测试。
在这种情况下,您的数据质量框架最重要的功能是分析、自动测试创建和用户界面(UI),该用户界面能够与领域专家合作,以加快对测试差距和当前数据本身质量的理解。
场景2:监测时间序列数据量的峰值或下降
您正在构建一个基于时间序列的数据产品,例如,来自移动应用程序的用户分析事件。您需要识别事件数据量中可能表明数据质量问题的可疑峰值或下降。
此场景最重要的功能是随着时间的推移对数据量进行异常检测。
场景3:违反数据质量标准的每日警报
您有一个数据产品,它包含许多属性每天都在变化的复杂数据点(例如,从CRM每天增量导入)。这意味着您需要每天检查预定义的数据质量标准是否得到满足,确保属性不为空,并且所有属性都在有效的数据范围内。
此场景中最重要的功能是约束测试(基于规则的测试)和Slack集成,当违反标准时可以提供警报。
场景4:特定领域的质量标准
在某些域中,您需要您的数据产品来满足特定的业务规则。例如,在处理销售数据的数据产品中,可能有一个要求,即销售日期永远不应该是未来日期。
此场景最重要的功能是能够为质量检查编写自定义约束。
场景5:大型数据组织的可发现数据质量
您所在的组织有多个围绕数据产品组织的数据团队。您希望确保您的数据产品消费者在开始将每个数据产品用于其分析用例之前了解其数据质量,从而使下游消费者能够轻松确定当前的质量水平是否足以构建其用例。数据将用于的用例类型可能要求不同的质量水平。
此场景最重要的功能是易于进行数据目录集成,从而能够将数据质量检查结果自动发布到目录中。
特征矩阵
有许多开源数据质量框架非常好——我们在Great experiences、Deequ和Soda Core的客户项目中有过积极的经验。它们都可以通过一系列功能帮助您实现数据质量测试。根据您需要的集成级别,以下是需要考虑的一些关键功能:
Feature |
Great Expectations |
Deequ |
Soda |
---|---|---|---|
核心功能 |
|||
许可 |
Open-source |
Open-source |
Soda Core: Open-source
Soda Cloud: Commercial |
通用约束的开箱即用的基于约束的测试 |
Yes |
Yes |
Yes |
开发的主要语言 |
Python |
Python/Scala |
Soda Checks Language (SodaCL) in Python |
对任何框架的严格依赖 |
No |
Yes. Hard dependency on Spark as it cannot be executed outside of a Spark cluster. |
No |
质量指标可视化 |
Partial |
No |
Yes. In-built integration with popular dashboarding tools. Also has a Reporting API on Soda Cloud. |
支持增量数据的数据验证 |
Yes |
Yes |
Yes. Available via Soda Cloud metrics store. |
状态度量计算 |
No |
Available via Soda Cloud metrics store. |
|
自动化功能 |
|||
数据概况 |
Yes |
Yes. More powerful than the other 2 - richer in-built profiling functions and customizable. |
Yes |
测试创建 |
Yes |
Partial |
No |
约束条件建议 |
No |
Yes |
No |
异常检测 |
No |
Yes |
Yes. Available via Soda Cloud. |
内置集成 |
|||
编排解决方案 |
Yes |
No |
Yes via |
Apache Spark |
Yes |
Yes |
Yes via Soda Spark |
Slack Alerting |
Yes |
No |
Yes |
票务 |
No |
No |
|
CI/CD |
Yes. Integrates with Github Actions |
No. Need to write a custom step within a CI/CD pipeline and use the test results. |
No. Need to write a custom step (Soda Scan) using the Soda CLI within a CI/CD pipeline and use the result of the scan. |
数据目录 |
No |
No |
您的项目的正确框架是什么?
您为用例定义的场景(包括我们讨论的场景)将有助于确定您需要查看的功能,以比较不同的数据质量框架。
例如,在场景3中,我们需要为任何违反数据质量标准的时间创建警报。我们发现这意味着我们需要基于约束的测试和Slack集成。因此,通过查看特征矩阵,我们可以看到所有三个被评估的框架都提供了基于约束的测试;远大前程和苏打水还提供集成的Slack警报。
在场景2中,我们需要监控分析事件数据中的流量峰值和下降,我们发现异常检测尤为重要。在我们的特征矩阵中,我们可以看到Deequ为异常检测提供了坚实的支持,商业版的Soda也是如此。
总之,通过从数据产品质量标准开始,我们可以通过使用上面的特征矩阵来考虑哪个框架最适合我们的上下文和需求。
最新内容
- 13 hours 27 minutes ago
- 15 hours ago
- 15 hours 59 minutes ago
- 3 days 6 hours ago
- 3 days 14 hours ago
- 3 days 14 hours ago
- 3 days 15 hours ago
- 3 days 15 hours ago
- 1 week 1 day ago
- 1 week 1 day ago