Умовні перевірки

Вступ до контролю якості даних із Great Expectations

Davina Moossazadeh

Data Scientist

Що таке умовні перевірки?

Умовні перевірки — перевірки для підмножини даних

Навіщо? Деякі змінні залежать від значень інших змінних

Наприклад:

  • Перевірка, що значення стовпця star_rating має бути 0 для всіх рядків, де review_count дорівнює 0
1 https://docs.greatexpectations.io/docs/core/customize_expectations/expectation_conditions/
Вступ до контролю якості даних із Great Expectations

Синтаксис для умовних перевірок

Перевірки для всього набору даних можна перетворити на умовні перевірки за допомогою двох додаткових аргументів:

  1. row_condition
    • рядок із булевим виразом, що визначає підмножину даних, до якої застосовується умовна перевірка
  2. condition_parser
    • рядок, що визначає синтаксис для row_condition
Вступ до контролю якості даних із Great Expectations

Парсер умови

Якщо реалізуєте умовні перевірки з pandas, цей аргумент має бути "pandas"

expectation = gx.Expect...(
    **kwargs,
    condition_parser="pandas",
    row_condition=...
)
Вступ до контролю якості даних із Great Expectations

Умова рядка

Синтаксис pandas
df["foo"] == 'Two Two'
df["foo"].notNull()
df["foo"] <= datetime.date(2023, 3, 13)
(df["foo"] < 5) & (df["foo"] >= 3.14)

df["foo"].str.startswith("bar")
row_condition у Great Expectations
'foo == "Two Two"'
'foo.notNull()'
'foo <= datetime.date(2023, 3, 13)'
'(foo > 5) & (foo <= 3.14)'
'foo > 5 and foo <= 3.14'
'foo.str.startswith("bar")'
Вступ до контролю якості даних із Great Expectations

Умова рядка

Правила
  1. Не використовуйте одинарні лапки всередині

    • row_condition="foo=='Two Two'"
    • row_condition='foo=="Two Two"' Позначка, що вказує: синтаксис `row_condition` у другому пункті правильний.
  2. Не робіть розриви рядків усередині

    • row_condition="""
      foo=="Two Two"
      """  
      
    • row_condition='foo=="Two Two"' Позначка, що вказує: синтаксис `row_condition` у другому пункті правильний.
Вступ до контролю якості даних із Great Expectations

Приклад перевірки: зірковий рейтинг

Без умови
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
False
З умовою
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
    condition_parser='pandas',
    row_condition='mark_price_usd < 10',
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
True
Вступ до контролю якості даних із Great Expectations

Давайте потренуємось!

Вступ до контролю якості даних із Great Expectations

Preparing Video For Download...