Застосування 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 — компоненти, які налаштовує Checkpoint для інтеграції 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 через gx.Checkpoint():

checkpoint = gx.Checkpoint(

name="my_checkpoint",
validation_definitions=[validation_definition],
actions=[SlackNotificationAction()] # необов'язково )
Вступ до контролю якості даних із 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 — статичні сайти, згенеровані з метаданих GX

# Checkpoint із дією для оновлення 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 із переліком очікувань на рівні таблиці та їхніми спостереженими значеннями. Для очікування щодо діапазону кількості рядків розгорнуто таблицю 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...