Soda для надежности и качества данных с Apache AirFlow и другими ETL-оркестраторами

качество данных, Apache AirFlow Soda Core, инженерия данных, инженер данных примеры курсы обучение Apache AirFlow, Школа Больших Данных Учебный Центр Коммерсант

Сегодня поговорим про качество данных и разберем, что такое Soda Core, как эта платформа позволяет выявлять отсутствующие значения, дубликаты, изменения схемы и проверку актуальности. А также рассмотрим, каким образом это совместимо с Apache AirFlow и что еще есть в самом популярном ETL-планировщике для обеспечения качества и надежности данных.

Качество данных и их надежность

Исторически реактивный подход к мониторингу качества данных возник в эпоху распространения DWH и систем класса Business Intelligence (BI). Реактивным он назывался по причине того, что реакция на ошибки в данных возникала при их обнаружении и обычно носила корректирующий характер, вместо превентивного воздействия. Такой подход работал, если конечные пользователи и сам процесс работы с данными позволял перезапустить его. Однако, современные данные все чаще обрабатываются согласно потоковой парадигме в режиме реального времени, а потому приостановка вычислительных процессов почти невозможна. Поэтому необходим превентивный подход обеспечения надежности данных путем прогнозирования и предотвращения проблем с их качеством до возникновения любых ошибок и неточностей.

Самыми примитивными проверками качества данных являются обнаружение пропусков или некорректного формата. Но в распределенных средах данные логически и физически находятся в нескольких хранилищах и ​​технологических средах, которые могут быть вне контроля, за рамками организации. При извлечении данных из внешних источников их структура может неожиданно измениться, а дрейф схемы нарушит последующие процессы обработки полезной нагрузки.

Примечательно, что исходные данные могут быть высокого качества, но при этом давать плохие результаты, поскольку многие аналитические модели построены на исторических данных, и по мере изменения мира становятся менее точными. Лишь постоянный мониторинг таких тенденций и аномалий гарантирует, что ML-модели переобучаются по мере необходимости, обеспечивая нужную точность.

Поэтому традиционные инструменты и подходы к обеспечению качества данных не всегда обеспечивают их достоверность, а также имеют высокий порог входа и накладные затраты в эксплуатации. Дата-инженеру нужны технические навыки, знания предметной области, много ручного труда огромное количество времени. Чтобы сделать высокое качество данных экономически эффективным, следует автоматизировать операции управления данными. Это поможет повысить их надежность, увеличить производительность конвейеров их обработки и снизить стоимость.

При этом помимо примитивных проблем с пропусками, выбросами и несоответствием форматов, нужно отслеживать согласование данных в движении, дрейф схемы, а также выявлять тенденции и аномалии для обеспечения комплексной надежности. Такие задачи классификации и прогнозирования отлично решают современные ML-системы. А масштабируемость реализуется за счет распределенной обработки, которая может быть развернута как локально, так и у облачных провайдеров, чтобы данные могли перемещаться со скоростью современного бизнеса.

Итак, качество данных зависит не только от написания тестов, но и от процесса разработки, который должен включать ответы на следующие основные вопросы:

  • как проектировать реализацию качества данных?
  • какие правила будут определять проверки?
  • какие инструменты качества данных лучше всего подходят для корпоративных потребностей и возможностей?
  • как предупреждать ответственных дата-инженеров о случившихся и потенциальных проблемах с качеством данных?
  • какие проверки качества данных должны останавливать конвейер в случае сбоя?
  • каким требованиям должны соответствовать данные, чтобы считаться качественными?

Одним из таких инструментов является платформа Soda, которая отлично интегрируется с главным ETL-оркестратором пакетных конвейеров обработки данных Apache AirFlow. Далее рассмотрим, как это работает.

 

Как Soda Core обеспечивает качество данных и при чем здесь Apache AirFlow

Soda Core — это платформа с открытым исходным кодом для проверки качества данных. Она использует язык Soda Checks Language (SodaCL) для запуска проверок, определенных в файле YAML. Soda Core позволяет:

  • определить проверки как конфигурацию YAML, включая множество предустановленных тестов;
  • указать SQL-запрос в файле YAML и проверить возвращенное значение, если не подходят предустановленные проверки;
  • интегрировать проверки качества данных с широко используемыми инструментами обработки данных, такими как Apache AirFlow, Spark, PostgreSQL, Snowflake и пр.

Soda Core — это бесплатный CLI-инструмент и библиотека Python, которые можно установить в своей среде и подключиться к своим источникам данных. После подключения следует запустить сканирование своих данных из командной строки, чтобы найти недействительные, отсутствующие или неожиданные результаты. Это поможет диагностировать проблемы с качеством данных и предпринять шаги для определения приоритетов и решения проблем с учетом их последствий.

Soda Core работает с SodaCL, языком на основе YAML, используемый для определения проверок, выявляющих некачественные данные во время сканирования в пользовательских источниках. Язык SodaCL – это предметно-ориентированный язык на основе YAML для обеспечения надежности данных, который позволяет определять проверки в пользовательском источнике данных. Разработанный как человекочитаемый язык, SodaCL включает более 25 встроенных метрик и проверок, которые можно использовать для написания для проверки качества данных, включая метрики для отсутствующих значений, дубликатов, изменений схемы и проверку актуальности. SodaCL позволяет дата-инженерам и аналитикам совместно выписывать чеки для качественных данных.

После установки Soda Core необходимо создать два файла YAML, чтобы запускать проверки качества данных:

  • configuration.yml, содержащий сведения, необходимые Soda для подключения к источнику данных, включая хост, тип и учетные данные для входа;
  • checks.yml, содержащий тесты или проверки, определяемые для качества данных.

Имея хотя бы один из этих файлов, можно запустить проверку качества данных через команду сканирования в CLI. Soda Core использует входные данные в файлах YAML для подготовки SQL-запросов, которые выполняются с данными. Технически проверка — это выражение Python, которое во время сканирования проверяет метрики, чтобы увидеть, соответствуют ли они пороговым параметрам, которые определил пользователь. По завершении сканирования Soda Core возвращает результаты сканирования в CLI, информируя обо всех проверках, включая пройденные и не пройденные тесты, а также те, которые предупреждение или привели к ошибке.

Soda Core является основой технологии Soda — ПО, которое выполняет работу по преобразованию пользовательского ввода в SQL-запросы при выполнении сканирования для проверки качества данных. Чтобы еще больше повысить надежность данных, можно Soda Core с другими технологиями, включая инструменты оркестрации данных типа Apache AirFlow, чтобы планировать сканирование и автоматизировать действия на основе его результатов. Чтобы использовать веб-приложение для совместной работы по мониторингу качества данных, надо подключить Soda Core к учетной записи Soda Cloud. Soda Core использует безопасный API для подключения к Soda Cloud. После завершения сканирования Soda Core отправляет результаты сканирования в пользовательскую учетную запись Soda Cloud, где дата-инженер может наглядно просмотреть все детали в веб-приложении.

Благодаря совместимости с Apache AirFlow, можно просматривать в пользовательском интерфейсе AirFlow внешний вид любого DAG и активировать этот конвейер для запуска проверки качества данных Soda Core. Список всех выполненных проверок и их результаты отображаются в журнале задач. Таким образом, можно использовать результаты сканирования для интеграции с инструментом оркестрации данных типа Apache AirFlow, чтобы автоматизировать любые действия по смягчению последствий, когда Soda обнаруживает проблемы с качеством данных.

Справедливости ради отметим, что недавно выпущенный релиз Apache AirFlow 2.4 также предоставляет новую функцию, позволяющую повысить качество данных. Она улучшает планирование и реализует управляемую данными логику на основе наборов данных. Это позволяет автоматически запускать подчиненные DAG после успешного завершения их восходящих зависимостей. Используя новый класс Dataset для определения зависимостей между конкретными восходящими задачами и нижестоящими DAG, можно разбить монолитные конвейеры и запустить вместо них несколько более мелких цепочек, которые проще разрабатывать и поддерживать. Это упрощает отслеживание и визуализацию наборов данных в Apache AirFlow, а также улучшает их управление и качество данных, используемых для их создания. Дата-инженер сможет быстрее выявлять избыточные, редко используемые или неполные наборы данных, а также те, которые содержат конфиденциальную информацию. Подробно об этом мы рассказывали в здесь.

Больше полезных приемов администрирования и эксплуатации Apache AirFlow  для дата-инженерии и аналитики больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://acceldataio.medium.com/data-quality-is-not-enough-for-your-mission-critical-operations-you-need-data-reliability-2d09ff9618f0
  2. https://docs.astronomer.io/learn/soda-data-quality
  3. https://docs.soda.io/soda/product-overview.html

Поиск по сайту