Сегодня рассмотрим, что такое Great Expectations, чем этот инструмент полезен для специалистов по Data Science и дата-инженеров, а также как связать его с Apache Airflow, какую пользу это принесет в задачах обеспечении качества данных. Также разберем кейс совместного использования Apache Airflow и Great Expectations в компании Vimeo и заглянем под капот готового пакета в реестре провайдеров от Astronomer.
Большие надежды: что такое Great Expectations
Great Expectations — это библиотека проверки, документирования и профилирования данных для поддержки их качества (Data Quality) и улучшения взаимодействия между командами дата-специалистов. Это реализуется через декларативные утверждения о данных в форме простых, удобочитаемых методов Python, которые затем используются для проверки, возвращая результат успеха или неудачи. Можно использовать как готовые утверждения, так и писать собственные, чтобы автоматизировать и ускорить следующие процессы работы с данными:
- автоматическое профилирование, включая получения базовой статистики и генерация набора утверждений для конкретного датасета;
- валидация – проверка автоматически сгенерированных и пользовательских утверждений о качестве данных;
- документирование в виде наглядных отчетов о качестве данных — HTML-документов с пакетами утверждений о данных и результатами их проверки;
Great Expectations работает с различными источниками данных: датафреймы Pandas, Spark и базы данных SQL через SQLAlchemy. Также можно использовать библиотеку для файлов CSV или любого фрагмента данных, который загружается в датафрейм. Great Expectations легко настраивается и позволяет сохранить все метаданные, наборы утверждений и результаты проверки, в файловых системах, СУБД, а также в облачных хранилищах типа AWS S3 и Google Cloud Storage.
Важно понимать, что, в отличие от Apache AirFlow, Prefect, Dagster, dbt и прочих конвейерных фреймворков, Great Expectations не выполняет конвейеры обработки данных, а интегрируется с ними, позволяя запустить валидацию качества как шаг такого конвейера. Также библиотека не является инструментом управления версиями данных и средством их хранения. Great Expectations работает с метаданными датасета: утверждениями, результатами проверки и пр.
Будучи основанными на Python, инструмент лучше всего работает именно с этим языком программирования. Его также можно вызвать из командной строки, не используя среду разработки Python. Для других сред рекомендуется использовать альтернативные решения. В частности, для среды R подойдет assertR, а для экосистемы TensorFlow – TFDV [1].
Впрочем, именно Python чаще всего применяется для решения задач Data Science и инженерии данных. Например, именно этот язык используется в Apache Airflow – популярном инструменте управления рабочими процессами планирования, генерации и отслеживания пакетных задач обработки данных. Если рассматривать обеспечение качества данных с помощью Great Expectations как один из шагов такого пакетного конвейера, целесообразно объединить возможности этой Python-библиотеки с мощью Apache Airflow. Какую пользу это принесет для практического управления жизненным циклом качества данных, мы рассмотрим далее.
Управление жизненным циклом качества данных с Apache AirFlow и Great Expectations: кейс Vimeo
Использование Great Expectations в качестве инструмента обеспечения качества данных вместе с Airflow даст следующие преимущества [2]:
- автоматизация создания документации по тестированию — все тесты могут быть скомпилированы в чистую, удобочитаемую, постоянно актуализируемую документацию;
- автоматическое профилирование – можно быстро создать отправную точку для набора ожиданий по датасету из существующего ресурса данных;
- вариативность развертывания – можно развернуть проверки качества данных как код внутри задач, отдельные задачи DAG или как самостоятельный DAG AirFlow.
Чтобы показать на практическом примере, чем это полезно для дата-инженеров, рассмотрим кейс компании Vimeo – ведущего провайдера потокового видео высокой четкости, о котором мы уже рассказывали здесь. Vimeo предлагает HD-видеохостинг для создателей видео, включая рекламные видеоролики. Разнопрофильные команды инженеров и аналитиков работают вместе с целью интеграции потоковых данных с разных рекламных платформ для точной аналитики. Чтобы эффективно обрабатывать огромные объемы данных из различных источников, Vimeo использует Great Expectations и Apache AirFlow для решения проблем с качеством данных. В частности, одна из них связана с обнаружением проблем, вызванных прерываниями обслуживания или изменениями схемы восходящего потока. Обычно такие типы событий могут привести к некорректному выполнению этапов конвейера обработки данных: последующие таблицы будут содержать отсутствующие или устаревшие записи. Без постоянного мониторинга такая проблема потенциально может оставаться незамеченной в течение нескольких дней, пока не приведет к искажению метрик в бизнес-отчетах.
Дополнительные проблемы в Vimeo возникли при миграции конвейера из сотен DAG AirFlow с одновременным обеспечением актуальности и согласованности данных. Конвейеры данных, которыми управляет команда инженеров бизнес-аналитики, используют данные с рекламных платформ, таких как Google и Facebook, через Apache Kafka. Данные извлекаются и преобразуются в Google Cloud с помощью Airflow DAG и Python и загружаются в хранилище данных Snowflake с шагом 15 минут. Great Expectations развертывается как часть Airflow DAG в Google Cloud и используются там для мониторинга конвейеров данных, поступающих в хранилище. Если из-за какой-либо проблемы DAG не может использовать новые данные дольше 24 часов, Great Expectations уведомляет команду дата-инженеров по электронной почте или в Slack. Так можно быстро связаться с внешней командой по поводу проблемы, а также предупредить участников конвейера о любых задержках [3].
Как совместить Apache AirFlow и Great Expectations: готовый пакет из реестра провайдеров
С технической точки зрения интеграция Great Expectations с Airflow не вызывает никаких сложностей. Можно воспользоваться готовым оператором Great Expectations, который позволяет применять эту Python-библиотеку в DAG AirFlow, скачав его из открытого реестра провайдеров от Astronomer. Об этом мы подробно писали здесь.
Установить пакет провайдера Great Expectations в среду Airflow позволит соответствующая команда для менеджера пакетов pip: pip install airflow-provider-great-expectations.
Далее можно импортировать этот модуль в файл DAG и создать его экземпляр с желаемыми параметрами:
from great_expectations_provider.operators.great_expectations import GreatExpectationsOperator
Из опциональных параметров возможны следующие:
- run_name [str] — определяет запуск проверки (по умолчанию используется временная метка, если не указано иное);
- data_context_root_dir [str] — путь к каталогу great_expectations;
- data_context [BaseDataContext] — объект DataContext great_expectations;
- expectation_suite_name [str] — имя пакета набора утверждений для проверки;
- batch_kwargs [dict] — Batch_kwargs, используемый для проверки;
- assets_to_validate [list[dict]] — список словарей batch_kwargs + набор утверждений для проверки;
- checkpoint_name [str] — имя контрольной точки для проверки;
- validation_operator_name Необязательно [str]- имя оператора проверки Great Expectations, по умолчанию action_list_operator;
- fail_task_on_validation_failure [bool] – сбросить задачу Airflow, если проверка Great Expectations не удалась.
Параметром обратного вызова является один: validation_failure_callbackCallable [[CheckpointResult], None], который вызывается, когда проверка Great Expectations не проходит.
Посмотреть примеры практического использования этого готового пакета можно прямо на его странице в реестре открытого реестра провайдеров от Astronomer [4].
Код курса
ADH-AIR
Ближайшая дата курса
Продолжительность
ак.часов
Стоимость обучения
0 руб.
Больше деталей про администрирование и эксплуатацию Apache AirFlow для задач подготовки данных и организации ETL/ELT-процессов в аналитике больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве: