Expectations toepassen op nieuwe data

Kennismaking met Datakwaliteit met Great Expectations

Davina Moossazadeh

Data Scientist

Checkpoints

Checkpoint - Een object dat Validation Definitions met gedeelde parameters groepeert en uitvoert

Een schema met een Checkpoint met de volgende workflow: Batch Requests -> Data Source -> Validation Definition. De Validation Definition levert Validation Results, die naar een optionele Action List gaan met een of meer Actions.

Actions - Componenten die door Checkpoints worden geconfigureerd om GX te koppelen aan andere tools op basis van Validation Results

1 https://docs.greatexpectations.io/docs/core/trigger_actions_based_on_results/create_a_checkpoint_with_actions/
Kennismaking met Datakwaliteit met Great Expectations

Waarom Checkpoints gebruiken?

Herbruikbaarheid

  • Meerdere Validation Definitions op één Batch draaien

Actions

  • Actions triggeren op basis van Validation Results
Kennismaking met Datakwaliteit met Great Expectations

Een Checkpoint maken

$$

Een Checkpoint maken met Slack-notificatie via gx.Checkpoint():

checkpoint = gx.Checkpoint(

name="my_checkpoint",
validation_definitions=[validation_definition],
actions=[SlackNotificationAction()] # optioneel )
Kennismaking met Datakwaliteit met Great Expectations

Checkpoint-fouten

Een Checkpoint uitvoeren vóórdat de Validation Definition aan de Data Context is toegevoegd, geeft een fout:

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.
Kennismaking met Datakwaliteit met Great Expectations

Een Validation Definition toevoegen

Voeg de Validation Definition toe aan de Data Context met .validation_definitions.add():

validation_definition = context.validation_definitions.add(

validation_definition=validation_definition )
Kennismaking met Datakwaliteit met Great Expectations

Een Checkpoint uitvoeren

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

Checkpoint-resultaten. De output is lang en past niet op de slide.

Kennismaking met Datakwaliteit met Great Expectations

Checkpoint-resultaten beoordelen

print(checkpoint_results.success)
False
print(checkpoint_results.describe())
Kennismaking met Datakwaliteit met Great Expectations

Checkpoint-resultaten beoordelen

{ "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"
}
Kennismaking met Datakwaliteit met Great Expectations

Data Docs

Data Docs - statische websites die worden gegenereerd uit GX-metadata

# Checkpoint met Action om Data Docs bij te werken
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/
Kennismaking met Datakwaliteit met Great Expectations

Data Docs

Een screenshot van een Data Docs-webpagina met een lijst van table-level Expectations en hun waargenomen waarden. Eén Expectation voor rij-aantal-bereik is uitgeklapt met een Validation History-tabel met runtime, waargenomen waarde en min/max. Rechtsboven staat een groen vak met vinkje: "All Expectations met".

Kennismaking met Datakwaliteit met Great Expectations

Cheat sheet

Validation Definition toevoegen aan Data Context:

context.validation_definitions.add(
    validation_definition
)

Checkpoint maken:

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

Checkpoint uitvoeren:

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

Checkpoint-resultaten bekijken:

checkpoint_results.success
checkpoint_results.describe()
Kennismaking met Datakwaliteit met Great Expectations

Laten we oefenen!

Kennismaking met Datakwaliteit met Great Expectations

Preparing Video For Download...