將 Expectations 套用到新資料

Great Expectations 資料品質入門

Davina Moossazadeh

Data Scientist

Checkpoints

Checkpoint-用來以共享參數分組並執行 Validation Definition 的物件

示意圖顯示一個 Checkpoint,包含以下流程:Batch Requests -> Data Source -> Validation Definition。Validation Definition 產生 Validation Results,並可傳遞到可選的 Action List,其中含一個或多個 Actions。

Actions-由 Checkpoint 設定的元件,依據 Validation Results 將 GX 與其他工具整合

1 https://docs.greatexpectations.io/docs/core/trigger_actions_based_on_results/create_a_checkpoint_with_actions/
Great Expectations 資料品質入門

為何使用 Checkpoints?

可重用性

  • 可對同一個 Batch 執行多個 Validation Definition

Actions

  • 可依 Validation Results 觸發 Actions
Great Expectations 資料品質入門

建立 Checkpoint

$$

使用 gx.Checkpoint() 建立含 Slack 通知的 Checkpoint:

checkpoint = gx.Checkpoint(

name="my_checkpoint",
validation_definitions=[validation_definition],
actions=[SlackNotificationAction()] # optional )
Great Expectations 資料品質入門

Checkpoint 錯誤

在將 Validation Definition 加入 Data Context 之前執行 Checkpoint 會產生錯誤:

CheckpointRelatedResourcesFreshnessError: 
ValidationDefinition 'my_validation_definition' must be added to the DataContext 
before it can be updated. Please call `context.validation_definitions.add(
<VALIDATION_DEFINITION_OBJECT>)`, then try your action again.
Great Expectations 資料品質入門

加入 Validation Definition

使用 .validation_definitions.add() 將 Validation Definition 加入 Data Context:

validation_definition = context.validation_definitions.add(

validation_definition=validation_definition )
Great Expectations 資料品質入門

執行 Checkpoint

checkpoint_results = checkpoint.run(
    batch_parameters={"dataframe": dataframe}
)

Checkpoint 結果。輸出很長,無法完整顯示於投影片。

Great Expectations 資料品質入門

評估 Checkpoint 結果

print(checkpoint_results.success)
False
print(checkpoint_results.describe())
Great Expectations 資料品質入門

評估 Checkpoint 結果

{ "success": false,
  "statistics": {
    "evaluated_expectations": 1, "successful_expectations": 0,
    "unsuccessful_expectations": 1, "success_percent": 0.0
  },
  "expectations": [{
    "expectation_type": "expect_table_row_count_to_equal",
    "success": false,
    "kwargs": {"batch_id": ""my_datasource-my_dataframe_asset", "value": 118000}, 
    "result": {"observed_value": 11866}}
  ],
  "result_url": "https://app.greatexpectations.io/organizations/my_org/data-assets/*/validations/expectation-suites/0a123b9c-e370-4b18-b703-785dde88732d/results/cb093105-6ede-47d4-a141-dee10c632e18"
}
Great Expectations 資料品質入門

Data Docs

Data Docs-從 GX 中繼資料產生的靜態網站

# 含更新 Data Docs Action 的 Checkpoint
gx.Checkpoint(
    name,
    validation_definitions,
    actions=[
      gx.checkpoint.actions.UpdateDataDocsAction(
          name="update_my_site", site_names="my_data_docs_site"
        )
    ],
)
1 https://docs.greatexpectations.io/docs/core/configure_project_settings/configure_data_docs/
Great Expectations 資料品質入門

Data Docs

一個 Data Docs 網頁的截圖,列出表格層級的 Expectations 與其觀察值。針對列數範圍的某個 Expectation 展開了 Validation History 表,顯示執行時間、觀察值與最小/最大值。右上角綠色方塊內有勾選符號與「All Expectations met」字樣。

Great Expectations 資料品質入門

小抄

將 Validation Definition 加入 Data Context:

context.validation_definitions.add(
    validation_definition
)

建立 Checkpoint:

checkpoint = gx.Checkpoint(
    name: str, 
    validation_definitions: list,
)

執行 Checkpoint:

checkpoint_results = checkpoint.run(
    batch_parameters={"dataframe": dataframe}
)

檢查 Checkpoint 結果:

checkpoint_results.success
checkpoint_results.describe()
Great Expectations 資料品質入門

一起來練習吧!

Great Expectations 資料品質入門

Preparing Video For Download...