新しいデータに期待値を適用する

Great Expectationsで始めるデータ品質入門

Davina Moossazadeh

Data Scientist

チェックポイント

チェックポイント - 共有パラメータで検証定義をまとめて実行するオブジェクト

チェックポイントの概略。ワークフローは Batch Requests -> Data Source -> Validation Definition。Validation Definition は Validation Results を出力し、任意の Action List(1つ以上のアクション)に渡す。

アクション - 検証結果に基づき、チェックポイントで設定される他ツール連携コンポーネント

1 https://docs.greatexpectations.io/docs/core/trigger_actions_based_on_results/create_a_checkpoint_with_actions/
Great Expectationsで始めるデータ品質入門

チェックポイントを使う理由

再利用性

  • 1つのバッチに複数の検証定義を実行可能

アクション

  • 検証結果に基づきアクションをトリガー可能
Great Expectationsで始めるデータ品質入門

チェックポイントの作成

$$

gx.Checkpoint() でSlack通知付きチェックポイントを作成:

checkpoint = gx.Checkpoint(

name="my_checkpoint",
validation_definitions=[validation_definition],
actions=[SlackNotificationAction()] # 任意 )
Great Expectationsで始めるデータ品質入門

チェックポイントのエラー

検証定義をデータコンテキストに追加前にチェックポイントを実行するとエラーになります:

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_definitions.add() で検証定義をデータコンテキストに追加:

validation_definition = context.validation_definitions.add(

validation_definition=validation_definition )
Great Expectationsで始めるデータ品質入門

チェックポイントの実行

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

チェックポイント結果。出力が長く、スライドに収まりません。

Great Expectationsで始めるデータ品質入門

チェックポイント結果の評価

print(checkpoint_results.success)
False
print(checkpoint_results.describe())
Great Expectationsで始めるデータ品質入門

チェックポイント結果の評価

{ "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 を更新するアクション付きチェックポイント
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 のWebページ。テーブルレベルの期待値一覧と観測値を表示。行数範囲の期待値には展開された検証履歴表があり、実行時刻・観測値・最小/最大を示す。右上の緑の枠にチェックマークと「すべての期待値を満たしました」。

Great Expectationsで始めるデータ品質入門

チートシート

検証定義をデータコンテキストに追加:

context.validation_definitions.add(
    validation_definition
)

チェックポイントを作成:

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

チェックポイントを実行:

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

結果を確認:

checkpoint_results.success
checkpoint_results.describe()
Great Expectationsで始めるデータ品質入門

Let's practice!

Great Expectationsで始めるデータ品質入門

Preparing Video For Download...