นำ Expectations ไปใช้กับข้อมูลใหม่

การตรวจสอบคุณภาพข้อมูลด้วย Great Expectations เบื้องต้น

Davina Moossazadeh

Data Scientist

Checkpoints

Checkpoint - อ็อบเจกต์ที่รวมและรัน Validation Definitions โดยใช้พารามิเตอร์ร่วมกัน

แผนภาพแสดง Checkpoint ซึ่งประกอบด้วยเวิร์กโฟลว์ดังนี้: Batch Requests -> Data Source -> Validation Definition โดย Validation Definition ส่งออก Validation Results ซึ่งเชื่อมต่อกับ Action List (ไม่บังคับ) ที่มี Actions หนึ่งรายการขึ้นไป

Actions - คอมโพเนนต์ที่ Checkpoints กำหนดค่าไว้ เพื่อเชื่อม GX กับเครื่องมืออื่นตาม Validation Results

1 https://docs.greatexpectations.io/docs/core/trigger_actions_based_on_results/create_a_checkpoint_with_actions/
การตรวจสอบคุณภาพข้อมูลด้วย Great Expectations เบื้องต้น

ทำไมต้องใช้ Checkpoints?

การนำกลับมาใช้ซ้ำ

  • รัน Validation Definitions หลายรายการกับ Batch ได้

Actions

  • ทริกเกอร์ Actions ตาม Validation Results ได้
การตรวจสอบคุณภาพข้อมูลด้วย Great Expectations เบื้องต้น

การสร้าง Checkpoint

$$

สร้าง Checkpoint พร้อม Slack Notification ด้วย gx.Checkpoint():

checkpoint = gx.Checkpoint(

name="my_checkpoint",
validation_definitions=[validation_definition],
actions=[SlackNotificationAction()] # optional )
การตรวจสอบคุณภาพข้อมูลด้วย Great Expectations เบื้องต้น

ข้อผิดพลาดของ Checkpoint

การรัน Checkpoint ก่อนเพิ่ม Validation Definition ลงใน Data Context จะทำให้เกิดข้อผิดพลาด:

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 Definition ลงใน Data Context ด้วย .validation_definitions.add():

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 - เว็บไซต์แบบ static ที่สร้างจากเมทาดาทาของ GX

# Checkpoint with Action for Updating 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 แสดงรายการ 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...