Great Expectations数据质量监控框架的核心概念与实践
Great Expectations(GX)作为流行的数据质量框架,请解释其核心概念——Expectation Suite、Batch、Data Asset、Checkpoint、以及如何通过插件集成Spark/Pandas/SQL数据源。请给出一个数值列范围校验(ExpectColumnValuesToBeBetween)的完整工作流示例。
回答
苦行僧
Great Expectations核心概念:
-
Expectation:
- 数据质量的断言(如:
expect_column_values_to_not_be_null) - 内置300+种Expectation
- 支持自定义Expectation
- 数据质量的断言(如:
-
Expectation Suite:
- 一组Expectation的集合,作用于同一个Data Asset
- 通过Profiler自动生成或手动定义
- JSON格式存储
-
Batch & Data Asset:
- Data Asset:数据源的逻辑表示(数据表/文件)
- Batch:Data Asset的一个数据切片(某天分区)
-
Checkpoint:
- 定义『在哪个Data Asset上运行哪个Expectation Suite』
- 支持Action(生成Data Docs、发送通知、中止流水线)
完整工作流(数值范围校验):
import great_expectations as gx
# 1. 创建Data Context
context = gx.get_context()
# 2. 定义Datasource
datasource = context.sources.add_spark(
name="my_spark", datasource_type="spark"
)
data_asset = datasource.add_dataframe_asset(name="orders")
batch_request = data_asset.build_batch_request(dataframe=df)
# 3. 创建Expectation Suite
suite = context.add_expectation_suite("orders_suite")
validator = context.get_validator(
batch_request=batch_request,
expectation_suite_name="orders_suite"
)
# 4. 添加期望
validator.expect_column_values_to_be_between(
column="amount",
min_value=0,
max_value=1000000
)
# 5. 保存
validator.save_expectation_suite()
# 6. 运行Checkpoint
checkpoint = context.add_or_update_checkpoint(...)
results = checkpoint.run()
# 7. 生成Data Docs
context.build_data_docs()