Menerapkan Expectation ke Data Baru

Pengantar Data Quality dengan Great Expectations

Davina Moossazadeh

Data Scientist

Checkpoints

Checkpoint - Objek yang mengelompokkan dan menjalankan Validation Definition dengan parameter bersama

Skema yang menampilkan Checkpoint, berisi alur: Batch Requests -> Data Source -> Validation Definition. Validation Definition menghasilkan Validation Results, yang masuk ke Action List opsional berisi satu atau lebih Action.

Actions - Komponen yang dikonfigurasi oleh Checkpoint untuk mengintegrasikan GX dengan alat lain berdasarkan Validation Results

1 https://docs.greatexpectations.io/docs/core/trigger_actions_based_on_results/create_a_checkpoint_with_actions/
Pengantar Data Quality dengan Great Expectations

Mengapa menggunakan Checkpoint?

Dapat digunakan ulang

  • Dapat menjalankan banyak Validation Definition pada satu Batch

Actions

  • Dapat memicu Action berdasarkan Validation Results
Pengantar Data Quality dengan Great Expectations

Membuat Checkpoint

$$

Membuat Checkpoint dengan pemberitahuan Slack melalui gx.Checkpoint():

checkpoint = gx.Checkpoint(

name="my_checkpoint",
validation_definitions=[validation_definition],
actions=[SlackNotificationAction()] # opsional )
Pengantar Data Quality dengan Great Expectations

Error pada Checkpoint

Menjalankan Checkpoint sebelum menambahkan Validation Definition ke Data Context akan memunculkan error:

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.
Pengantar Data Quality dengan Great Expectations

Menambahkan Validation Definition

Tambahkan Validation Definition ke Data Context dengan .validation_definitions.add():

validation_definition = context.validation_definitions.add(

validation_definition=validation_definition )
Pengantar Data Quality dengan Great Expectations

Menjalankan Checkpoint

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

Hasil Checkpoint. Keluaran panjang dan tidak muat di slide.

Pengantar Data Quality dengan Great Expectations

Menilai Hasil Checkpoint

print(checkpoint_results.success)
False
print(checkpoint_results.describe())
Pengantar Data Quality dengan Great Expectations

Menilai Hasil 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"
}
Pengantar Data Quality dengan Great Expectations

Data Docs

Data Docs - situs statis yang dihasilkan dari metadata GX

# Checkpoint dengan Action untuk memperbarui 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/
Pengantar Data Quality dengan Great Expectations

Data Docs

Tangkapan layar halaman Data Docs yang menampilkan daftar Expectation tingkat tabel dan nilai teramati. Satu Expectation untuk rentang jumlah baris dibuka dengan tabel Riwayat Validasi, menampilkan waktu jalan, nilai teramati, serta nilai min dan max. Di kanan atas, kotak hijau dengan tanda centang bertuliskan "All Expectations met".

Pengantar Data Quality dengan Great Expectations

Cheat sheet

Tambahkan Validation Definition ke Data Context:

context.validation_definitions.add(
    validation_definition
)

Buat Checkpoint:

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

Jalankan Checkpoint:

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

Periksa hasil Checkpoint:

checkpoint_results.success
checkpoint_results.describe()
Pengantar Data Quality dengan Great Expectations

Ayo berlatih!

Pengantar Data Quality dengan Great Expectations

Preparing Video For Download...