Профилирование
Профилирование данных считает количество строк в таблице, оценивает уникальность значений в каждом столбце и выгружать пример данных в систему. Для профилирования данных необходимо настроить рабочий процесс загрузки данных типа Profiler. Как настроить рабочий процесс описано в разделе Интеграция метаданных.
Рабочий процесс загрузки профилирования данных доступен только для СУБД
Пример данных таблицы
Чтобы просмотреть Пример данных из таблицы, необходимо в карточке объекта открыть одноименную вкладку. Возможность просмотра примера данных управляется ролевой моделью, во избежание показа конфиденциальной информации.

Как создать связь термина с объектом каталога данных

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

Как просмотреть профилирование таблицы и столбцов

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

Для управления параметрами кликните на иконку Настройки на вкладке Профилирование и качество данных в карточке нужной таблицы.

Как настроить профилирование отдельной таблицы

Доступные в настройке параметры:
  1. Тип профилирования– Процент/Количество строк, вы можете указать какой процент/количество строк необходимо профилировать для указанной таблицы.
  2. Запрос– в данном поле вы можете ввести свой SQL-запрос, который будет выбирать необходимые данные для профилирования. Например считать метрики только за 4 квартал 2023 года.
  3. Настройка профилирования столбцов– тут вы можете управлять необходимым набором метрик по каждому столбцу. В поле "Исключить" вы можете отключить профиль для перечня столбцов, а в поле "Включить" добавить необходимые столбцы с необходимым набором метрик. По умолчанию Arenadata Catalog будет считать все доступные метрики для всех столбцов. Отключение метрик доступно для оптимизации производительности выполнения профилирования.
  4. Включить разделения— в этом разделе вы можете партиционировать выборку данных для профилирования по интервалам. Доступные для разделения способы:
  • TIME-UNIT: временная метка/дата/дата-время бизнес-логики (например, дата заказа, дата-время регистрации и т. д.).
  • INGESTION-TIME: временная метка/дата/дата-время логики процесса (т. е. когда мои данные были приняты в мою таблицу)
  • COLUMN–VALUE: значение, представляющее фрагмент данных (например, тип продукта A, B, C и т. д.).
  • INTEGER-RANGE: диапазон целых чисел, который будет использоваться в качестве раздела (например, идентификатор клиента от 1 до 10).
После того, как вы выбрали тип интервала, вам нужно будет определить конфигурацию, специфичную для вашего типа интервала.
Настроенная выборка будет использовать не только для расчета метрик профилирования, но и для выполнения тестов качества данных Arenadata Catalog
После создания пайплайна по выполнению профилирования доступна настройка на уровне таблицы, где вы можете ограничить выборку данных, включить или исключить определенные столбцы для профилирования или партиционировать данные по определенному интервалу. Таким образом вы сможете оптимизировать нагрузку на процесс профилирования и получать только необходимые метрики.

Для управления параметрами кликните на иконку Настройки на вкладке Профилирование и качество данных в карточке нужной таблицы.
Тесты качества данных
Arenadata Catalog знает, что только достоверные и полные данные могут обеспечить точный анализ, который, в свою очередь, помогает принимать надежные бизнес-решения. Для проверки качества данных используются пользовательские тесты, которые можно запускать по расписанию.
Если вы используете сторонние приложения для проверки качества данных, вы можете записывать результаты внешних проверок в Arenadata Catalog с помощью API
Результаты выполнения тестов можно проследить как в карточке таблицы, так и в наборе проверок. В карточке объекта на вкладке Профилирование & Качество данных вы можете выбрать раздел Качество данных в боковом меню, чтобы просмотреть статистику проверок данного ресурса.

Как просмотреть результаты проверок качества данных в карточке объекта

Также вы можете открыть набор проверок из раздела Тесты в хедере приложения. Набор проверок может содержать в себе тесты сразу по нескольким таблицам.

Как просмотреть результаты проверок качества данных в наборе проверок

В случае если ошибок в данных не найдено, статус теста помечается как Success, если в результате теста найдены неверные данные проверка отмечается Failed.В любом режиме просмотра результатов теста доступен график, отображающий все предыдущие результаты за указанный период.
Создание пользовательской проверки
Создать новую проверку качества данных можно из карточки проверяемого объекта. Для этого на вкладке Профилирование & Качество данных кликните на кнопку Добавить тест.

Первым этапом создания новой проверки является указание набора проверок. Группируйте проверки в наборы по оправданному признаку, это поможет вам настроить подходящие расписание и упростить анализ результатов.

Вторым этапом создания новой проверки является указание наименования проверки и ее типа. В ADC есть предопределенные типы проверок, которые помогают отследить состояние строк и столбцев, а также возможность создание проверок любой сложности с помощью SQL-запросов в едином интерфейса Arenadata Catalog.

Как создать тест для проверки качества данных

Типы проверок качества данных для таблицы
Доступные типы проверок качества данных для таблицы:
  • Table Row Count to Equal— Убедитесь, что общее количество строк в таблице равно заданному значению. Необходимо указать ожидаемое количество строк (count)
  • Table Row Count to be Between—Убедитесь, что общее количество строк в таблице находится в заданном диапазоне. Необходимо указать ожидаемое минимальное и максимальное количество строк (min;max)
  • Table Column Count to Equal— Убедитесь, что количество столбцов в таблице равно заданному значению. Необходимо указать ожидаемое количество столбцов (count)
  • Table Column Count to be Between— Убедитесь, что общее количество столбцов в таблице находится в заданном диапазоне. Необходимо указать ожидаемое минимальное и максимальное количество столбцов (min;max)
  • Table Column Name to Exist—Убедитесь, что имя столбца присутствует в таблице. Необходимо указать ожидаемое наименование столбца (Column Name)
  • Table Column Names to Match Set— Убедитесь, что наименования столбцов в таблице соответствуют заданному набору. Необходимо указать ожидаемые наименования столбцов (Column Names). Опционально, можно включить параметр Ordered, который будет учитывать порядок столбцов в вашем наборе
  • Custom SQL Query— Напишите собственный тест SQL. Тест будет пройден, если результат запроса вернет 0 строк. Вы можете отредактировать количество строк для успешности теста в поле Threshold. Поле Strategy определяет какой запрос вы хотите написать. По умолчанию выбрана Strategy: Rows, в которой вам не нужно самостоятельно использовать SELECT COUNT в запросе для подсчета строк с ошибками. Но если ваш запрос построен с использованием SELECT COUNT, поменяйте стратегию на Strategy: Count.
  • Table Row Inserted Count To Be Between—Убедитесь, что количество строк, вставленных за определенный период, находится в пределах ожидаемого диапазона. Необходимо указать диапазон количества строк в полях Min Row Count и Max Row Count. В поле Column Name определите столбец, в котором хранится дата или время, в полях Range Type и Interval укажите период проверки
Типы проверок качества данных для столбцов
Доступные типы проверок качества данных для столбцов:
  • Column Values to Be Unique— Убедитесь, что в столбце отсутствуют дубликаты значений
  • Column Values to Be Not Null—Убедитесь, что в столбце отсутствуют нулевые значения
  • Column Values to Match Regex Pattern— Убедитесь, что значение столбцов соответствуют введенному вами регулярному выражению
  • Column Values to Not Match Regex Pattern— Убедитесь, что значение столбцов не соответствуют введенному вами регулярному выражению
  • Column Values to Be in Set— Убедитесь, что значение столбцов соответствуют набору допустимых значений
  • Column Values to Be Not in Set— Убедитесь, что значение столбцов не соответствуют набору недопустимых значений
  • Column Values to Be Between— Убедитесь, что значения столбца находятся в заданном диапазоне. Поддерживает только числовые типы.
  • Column Values Missing Count— Проверяет, соответствует ли количество пропущенных значений заданному числу. Отсутствующие значения — это сумма нулей плюс сумма значений в заданном списке, которые нам нужно рассматривать как недостающие данные. Ярким примером этого может быть NA или N/A.
  • Column Values Lengths to Be Between— Проверяет, что длины строк в столбце находятся в заданном диапазоне. Поддерживаются только Concatanable types. Укажите минимальное и максимально значение длины
  • Column Value Max to Be Between— Убедитесь, что максимальное значение столбца находится в определенном диапазоне. Поддерживает только числовые типы. Необходимо указать верхнюю и нижнюю границу диапазона
  • Column Value Min to Be Between— Убедитесь, что минимальное значение столбца находится в определенном диапазоне. Поддерживает только числовые типы. Необходимо укааать верхнюю и нижнюю границу диапазона
  • Column Value Median to Be Between— Убедитесь, что медиана столбца находится в определенном диапазоне. Поддерживает только числовые типы. Необходимо указать верхнюю и нижнюю границу диапазона
  • Column Value Mean to Be Between— Убедитесь, что среднее значение столбца находится в определенном диапазоне. Поддерживает только числовые типы. Необходимо указать верхнюю и нижнюю границу диапазона
  • Column Value Sum to Be Between— Убедитесь, что сумма значений столбца находится в определенном диапазоне. Поддерживает только числовые типы. Необходимо укааать верхнюю и нижнюю границу диапазона
  • Column Values Standard Deviation to Be Between— Убедитесь, что стандартное отклонение значений столбца находится в определенном диапазоне. Поддерживает только числовые типы. Необходимо указать верхнюю и нижнюю границу диапазона

Вы можете расширять перечень предопределенных тестов качества данных, описанный выше. Для этого потребуется навыки работы с Python, чтобы получить дополнительные инструкции свяжитесь со специалистами Arenadata Catalog.
После создания проверки, она будет запущена в соотвествии с расписанием, указанным в конвейере
Управление запуском проверок
В карточке таблицы перейдите на вкладку Конвейер для настройки рабочего процесса запускающего проверки для этой таблицы. На этой вкладке вы можете вручную запустить набор проверок, управлять процессом, настроить расписание для автоматического запуска тестов и просматривать журнал выполнения набора проверок.

Как управлять рабочим процессом выполнения набора проверок

С помощью REST API вы можете встраивать процесс выполнения проверок качества данных в ваши ETL/ELT процессы. Актуальные методы вызова процесса запуска проверок и получения результатов доступны в swagger внутри вашего приложения.
Создание логического набора проверок
Вы можете создавать логические наборы для ваших тестов качества данных. С помощью этого доступно объединение проверок по признаку и отслеживание результатов в разрезе конкретного набора. Что создать набор перейдите на вкладку Наборы тестов в разделе Качество данных. Создайте новый набор, укажите его наименование, описание и добавьте в него необходимые проверки.

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

Как управлять рабочим процессом выполнения набора проверок

Тест качества данных может быть добавлен в несколько наборов проверок
Создание шаблонов тестов качества данных
Arenadata Catalog предоставляет готовые шаблоны тестов, которые вы можете расширять, предлагая пользователям расширенный набор no-code тестов или для реализации интеграции с внешними DQ-системами.

Для интеграции с внешними DQ-системами потребуются навыки работы с API, а для расширения набора шаблонов дополнительно потребуется работа с Python.
Создание нового шаблона теста качества
Сначала вам нужно создать определение шаблона для вашего теста (TestDefinition). Вы можете использовать следующую конечную точку /api/v1/dataQuality/testDefinition с помощью POST-запроса для создания определения теста. Вам нужно будет передать как минимум следующие данные в теле вашего запроса.

{
    "description": "<you test definition description>",
    "entityType": "<TABLE or COLUMN>",
    "name": "<your_test_name>",
    "testPlatforms": ["<any of OpenMetadata,GreatExpectations, dbt, Deequ, Soda, Other>"],
    "parameterDefinition": [
      {
        "name": "<name>"
      },
      {
        "name": "<name>"
      }
    ]
}
Конечный запрос будет выглядеть следующим образом:

curl --request POST 'http://localhost:8585/api/v1/dataQuality/testDefinitions' \
--header 'Content-Type: application/json' \
--data-raw '{
    "description": "A demo custom test",
    "entityType": "TABLE",
    "name": "demo_test_definition",
    "testPlatforms": ["Soda", "dbt"],
    "parameterDefinition": [{
        "name": "ColumnOne"
    }]
}'
Обязательно сохраните UUID в ответе, поскольку он понадобится вам для создания тестового примера.
Следующим шагом в создании собственного исполняемого тестового случая является создание пакета, в котором будет написана логика для обработки тестов. Ваш пакет должен иметь как минимум следующую структуру

metadata/
setup.py
Чтобы добавить тестовые случаи на уровне таблиц и столбцов в источники SQLAlchemy, поместите свой тест соответственно в:

  • metadata/data_quality/validations/table/sqlalchemy/<yourTest>.py
  • metadata/data_quality/validations/column/sqlalchemy/<yourTest>.py

Имя <yourTest> должно совпадать с именем определения вашего теста (testDefinition) в предыдущем шаге.

Важно: Вам нужно будет добавить файл __init__.py в каждую папку, файл должен содержать следующую строку

__path__ = __import__('pkgutil').extend_path(__path__, __name__)
Вы можете добавить логику в файл <yourTest>.py. Вам нужно будет создать класс с именем <YourTest>Validator, который будет наследоваться от BaseTestValidator. Если нужно, вы также можете наследоваться от SQAValidatorMixin - это даст вам доступ к дополнительным методам из коробки. После завершения работы вам нужно будет просто реализовать класс run_validation. Этот метод должен возвращать объект TestCaseResult. Вы можете найти полную реализацию здесь, где мы создаем энтропийный тест.

class ColumnEntropyToBeBetweenValidator(BaseTestValidator):
    """Implements custom test validator for OpenMetadata.

    Args:
        BaseTestValidator (_type_): inherits from BaseTestValidator
    """

    def run_validation(self) -> TestCaseResult:
      """Run test validation"""
После выполнения завершения подготовки, вам нужно будет только установить pip install , где установлен openmetadata python SDK.

Далее новый тест появится в интерфейсе Arenadata Catalog, где его можно будет создавать для нужных объектов и управлять его запуском.

Кастомный тест качества данных