dq_check¶
- DBHose.dq_check(table: str | None = None)¶
Выполняет проверки качества данных (Data Quality) для промежуточной таблицы.
Описание:
Метод выполняет комплексную проверку качества данных в промежуточной таблице, используя набор предопределенных тестов из
DQCheck. Проверки могут включать сравнение с исходной таблицей или самостоятельную валидацию данных.Предупреждение
Проверки, требующие сравнения с таблицей-источником работают только для полного копирования таблицы.
Сигнатура:
def dq_check(self, table: str | None = None) -> None: """Data quality checker."""
Параметры:
table- Имя исходной таблицы для сравнения. Обязателен для проверок, требующих сравнения с источником (need_source_table=True).Типы проверок:
Метод обрабатывает четыре типа проверок:
Типы проверок DQ¶ Тип
need_source_tablegenerate_queryesОписание
Сравнение агрегатов
✅ Да
❌ Нет
Сравнение агрегированных значений (например,
total)Сравнение по колонкам
✅ Да
✅ Да
Детальное сравнение по колонкам (например,
sum)Проверка по колонкам
❌ Нет
✅ Да
Проверка каждой колонки отдельно (например,
future)Простая проверка
❌ Нет
❌ Нет
Одна проверка на всю таблицу (например,
empty)Примеры использования:
Базовый пример - проверка без сравнения¶from dbhose_airflow import DBHose, DQCheck dbhose = DBHose( table_dest="public.users", connection_dest="postgres_target", dq_skip_check=["sum", "total"], # Пропустить сложные проверки ) dbhose.create_temp() # ... загрузка данных ... # Проверка качества данных (без сравнения с источником) dbhose.dq_check(table=None) # Выполняются проверки: empty, uniq, future, infinity, nan # Проверки sum и total пропускаются (в dq_skip_check)
Пример с полным сравнением таблиц¶dbhose = DBHose( table_dest="analytics.events", connection_dest="clickhouse_analytics", connection_src="postgres_events", dq_skip_check=[], # Все проверки ) dbhose.create_temp() # ... загрузка данных из source в temp ... # Полная проверка с сравнением dbhose.dq_check(table="postgres_events.source_events") # Выполняются ВСЕ проверки, включая сравнение
Логирование:
Метод детально логирует процесс проверок:
INFO:root:╔══════════════════════════════════════════════════════════╗ INFO:root:║ Start Data Quality tests ║ INFO:root:╚══════════════════════════════════════════════════════════╝ INFO:root:╔══════════════════════════════════════════════════════════╗ INFO:root:║ Table not empty test skipped by user ║ INFO:root:╚══════════════════════════════════════════════════════════╝ INFO:root:╔══════════════════════════════════════════════════════════╗ INFO:root:║ Check column amount test Pass ║ INFO:root:╚══════════════════════════════════════════════════════════╝ INFO:root:╔══════════════════════════════════════════════════════════╗ INFO:root:║ Table not empty test Pass ║ INFO:root:╚══════════════════════════════════════════════════════════╝ INFO:root:╔══════════════════════════════════════════════════════════╗ INFO:root:║ All Data Quality tests have been completed ║ INFO:root:╚══════════════════════════════════════════════════════════╝
Обработка ошибок:
Метод выбрасывает исключения при обнаружении проблем:
Типы ошибок¶ Исключение
Условие возникновения
ValueErrorЗначения в источниках не совпадают
ValueErrorНайдены проблемные строки (NaN, будущие даты и т.д.)
Исключения СУБД
Ошибки выполнения SQL запросов
Производительность:
Предупреждение
Некоторые проверки могут быть ресурсоемкими:
sum: Суммирование всех числовых колонокtotal: Подсчет всех строкuniq: Проверка уникальности (может использовать временные таблицы)
Для больших таблиц (> 1 млн строк) рекомендуется выполнять проверки в непиковое время
См. также:
DQCheck - Объект перечислений DQCheck