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

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
View Code
 
# 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. 命令行操作优势与商超场景适配

  1. 自动化集成:
    命令行操作可直接嵌入 Shell 脚本,结合crontab实现定时验证(如商超每日凌晨自动校验前一天的线上订单和线下销售数据):
    bash
     
     
    # 示例:每日2点执行验证的定时任务
    echo "0 2 * * * cd /path/to/ge_supermarket_cli && great_expectations checkpoint run supermarket_checkpoint" | crontab -
    
     
  2. 批量处理:
    对于商超的多表验证(如线上订单表、用户表、商品表),可通过一个 Checkpoint 配置批量执行,简化操作。
  3. 结果输出灵活性:
    除 HTML 报告外,可通过命令行参数将结果输出为 JSON,便于后续解析(如发送告警):
    bash
     
     
    # 执行验证并输出JSON结果到文件
    great_expectations checkpoint run supermarket_checkpoint --result-format json > validation_result.json 

3. 总结

Great Expectations 的命令行工具完全支持数据质量验证的全流程,核心通过 datasource 配置数据源、suite 定义规则、checkpoint 执行验证,最后通过 docs 查看结果。在商超场景中,这种方式适合非开发人员快速上手,或集成到自动化流水线中实现数据质量的常态化监控。
 posted on 2025-08-13 15:29  xibuhaohao  阅读(28)  评论(0)    收藏  举报