Great Expectations 提供了完整的 命令行工具(CLI) 来执行数据质量验证,无需编写 Python 脚本即可完成从数据源配置到结果输出的全流程。以下结合商超场景(MySQL+ClickHouse),详细说明如何通过命令行获取数据质量结果:

View Code
1. 核心命令行操作流程
1.1. 初始化项目(已完成可跳过)
# 创建并进入项目目录
mkdir ge_supermarket_cli && cd ge_supermarket_cli
# 初始化Great Expectations项目(生成配置目录)
great_expectations init
1.2. 命令行配置数据源(MySQL+ClickHouse)
通过交互命令行配置商超线上(MySQL)和线下(ClickHouse)数据源:
# 新增数据源
great_expectations datasource new
# 步骤1:选择数据源类型
# 对于MySQL(线上订单):选择 2 (SQL) → 选择对应的数据库类型(如mysql)
# 对于ClickHouse(线下销售):选择 2 (SQL) → 选择clickhouse
# 步骤2:按提示输入连接信息
# MySQL示例:
# 主机:localhost,端口:3306,数据库名:supermarket_oltp
# 用户名:root,密码:your_password,表名:online_orders
# 数据源名称:mysql_online_orders
# ClickHouse示例:
# 主机:localhost,端口:8123,数据库名:supermarket_olap
# 用户名:default,密码:,表名:offline_sales
# 数据源名称:ck_offline_sales
配置完成后,数据源信息会保存到
great_expectations/datasources/
目录下。1.3. 命令行创建期望套件(数据质量规则)
为 MySQL 和 ClickHouse 分别创建期望套件(通过交互方式定义规则):
# 为MySQL线上订单创建期望套件
great_expectations suite new
# 步骤1:选择数据源和表 → 选择 mysql_online_orders → online_orders
# 步骤2:选择创建方式 → 1(交互式探索数据并定义规则)
# 步骤3:按提示定义规则(参考之前的质量规则):
# - 订单金额>0
# - product_id匹配正则^SP-\d{4}$
# - payment_status在['unpaid','paid','refunded']中
# 步骤4:命名套件 → online_orders_suite_cli
# 为ClickHouse线下销售创建期望套件
great_expectations suite new
# 步骤类似,选择 ck_offline_sales → offline_sales
# 定义规则(如销量>0、store_id在1-20之间)
# 命名套件 → offline_sales_suite_cli
期望套件会保存到
great_expectations/expectations/
目录。1.4. 命令行执行数据质量验证
通过
checkpoint
命令执行验证(Checkpoint 是 GE 中定义验证任务的配置):# 1. 创建Checkpoint(定义“数据源+期望套件”的关联)
great_expectations checkpoint new supermarket_checkpoint
# 2. 编辑Checkpoint配置文件(按提示路径打开,如great_expectations/checkpoints/supermarket_checkpoint.yml)
# 修改内容如下(关联两个数据源和套件):
Great Expectations Checkpoint配置文件


name: supermarket_checkpoint config_version: 1.0 class_name: SimpleCheckpoint validations: - batch_request: datasource_name: mysql_online_orders data_connector_name: default_inferred_data_connector_name data_asset_name: online_orders data_connector_query: index: -1 expectation_suite_name: online_orders_suite_cli - batch_request: datasource_name: ck_offline_sales data_connector_name: default_inferred_data_connector_name data_asset_name: offline_sales data_connector_query: index: -1 expectation_suite_name: offline_sales_suite_cli action_list: - name: store_validation_result action: class_name: StoreValidationResultAction - name: store_evaluation_params action: class_name: StoreEvaluationParametersAction - name: update_data_docs action: class_name: UpdateDataDocsAction
# 3. 执行Checkpoint(触发数据质量验证)
great_expectations checkpoint run supermarket_checkpoint
1.5. 命令行查看数据质量结果
# 1. 生成数据文档(HTML报告)
great_expectations docs build
# 2. 查看报告(自动打开浏览器,或手动访问路径)
great_expectations docs open
# 报告路径:great_expectations/uncommitted/data_docs/local_site/index.html
2. 命令行操作优势与商超场景适配
-
自动化集成:
命令行操作可直接嵌入 Shell 脚本,结合crontab
实现定时验证(如商超每日凌晨自动校验前一天的线上订单和线下销售数据):bash# 示例:每日2点执行验证的定时任务 echo "0 2 * * * cd /path/to/ge_supermarket_cli && great_expectations checkpoint run supermarket_checkpoint" | crontab -
-
批量处理:
对于商超的多表验证(如线上订单表、用户表、商品表),可通过一个 Checkpoint 配置批量执行,简化操作。 -
结果输出灵活性:
除 HTML 报告外,可通过命令行参数将结果输出为 JSON,便于后续解析(如发送告警):bash# 执行验证并输出JSON结果到文件 great_expectations checkpoint run supermarket_checkpoint --result-format json > validation_result.json
3. 总结
Great Expectations 的命令行工具完全支持数据质量验证的全流程,核心通过
datasource
配置数据源、suite
定义规则、checkpoint
执行验证,最后通过 docs
查看结果。在商超场景中,这种方式适合非开发人员快速上手,或集成到自动化流水线中实现数据质量的常态化监控。