Интеграция метаданных
Arenadata Catalog поддерживает возможность подключения к 5 типам источников данных: базы данных, очереди сообщений, дашборды, конвейеры, ML модели. Перечень доступных коннекторов постоянно расширяется, чтобы узнать актуальную информацию воспользуйтесь документацией на нашем сайте. Если вам необходимо добавление источника данных, который отсутствует в перечне коннекторов, ADC предлагает разработку кастомных коннекторов.
Управление источниками
Подключение к новым источникам данных выполняется в интерфейсе ADC.

Для этого проследуйте по шагам ниже:

1. Авторизуйтесь в системе с правами администратора.
2. Кликните на раздел Настройки, справа от поиска.
3. В левом боковом меню в разделе Сервисы выберите необходимый тип источника подключения и кликните на него.
4. В правом углу страницы нажмите на кнопку Добавить новый сервис.
5. Из плиток доступных коннекторов выберите необходимый и нажмите Далее.
6. Введите наименование и описание сервиса- то как он будет отображаться в ADC.
7. Открывается страница параметров подключения. На ней необходимо заполнить логин, пароль, значение хоста и порта, и базу данных, к которой подключаемся. При необходимости укажите дополнительные опции и ключи соединения.

Как подключить новый источник метаданных

8. После заполнения параметров подключения коннектора, можно протестировать связь с сервисом нажав кнопку Проверить соединение. В случае ошибки при тестировании соединения проверьте доступность сервиса и корректность заполненных данных.
9. Настройка подключения к источнику завершена, нажмите кнопку Сохранить.

После завершения настройки подключения к сервису Arenadata Catalog предлагает настроить загрузку данных для этого источника. Подробно это описано в статье Настройка загрузки данных.

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

Удаление источника метаданных
Чтобы удалить подключенный источник метаданных:

  1. Авторизуйтесь в системе с правами администратора.
  2. Кликните на раздел Настройки, справа от поиска.
  3. В левом боковом меню в разделе Сервисы выберите необходимый тип источника подключения и кликните на него.
  4. Выберите из списка необходимый для удаления источник, перейдите в его карточку кликом.
  5. Нажмите кнопку Удалить в правом верхнем углу, и подтвердите удаление.

Удаление источника метаданных

Редактирование параметров подключения к источнику данных
Чтобы удалить подключенный источник метаданных:

  1. Авторизуйтесь в системе с правами администратора.
  2. Кликните на раздел Настройки, справа от поиска.
  3. В левом боковом меню в разделе Сервисы выберите необходимый тип источника подключения и кликните на него.
  4. Выберите из списка необходимый для удаления источник, перейдите в его карточку кликом.
  5. Открывается страница обзора подключенного источника. Нажмите на вкладку «Подключение» для просмотра параметров соединения. Затем на кнопку «Редактировать.
  6. Открывается окно для редактирования текущих параметров соединения. Внесите необходимые правки и сохраните изменения.

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

Настройка загрузки данных
Загрузка данных из источника- это процесс получения метаданных ADC. Администратор может управлять этим процессом: добавлять исключения при чтении (базы данных, схемы, таблицы), настраивать параметры считывания данных и управлять расписанием автоматического обновления данных.

Для добавления уникального процесса считывания данных воспользуйтесь этими шагами:

1. Авторизуйтесь в системе с правами администратора.
2. Кликните на раздел Настройки, справа от поиска.
3. В левом боковом меню в разделе Сервисы выберите необходимый тип сервиса.
4. Из появившихся плиток выберите необходимый для настройки сервис и кликните на него.
5. На открывшейся странице перейдите на вкладку Загрузки и нажмите на кнопку Добавить ingestion. Развернется список типов считывания данных: метаданные, происхождение, профилирование (Если вы добавляете первый процесс загрузки данных, в первую очередь нужно настроить загрузку метаданных). Выберите необходимый для настройки тип загрузки данных.

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

6. Открывается страница настройки загрузки данных. Заполните Наименование загрузки
данных. По необходимости заполните исключения для считывания данных- данные которые должны/не должны оказаться в Arenadata Catalog. Определите значение параметров и нажмите Далее.

a. Используйте FQN для фильтрации­­­- включите этот переключатель, если хотите в настроенных выше исключениях использовать FQN вместо упрощенного имени.
b. Включать представления- включите этот переключатель, если хотите, чтобы представления считывались вместе с другими метаданными.
c. Включить теги- включите этот переключатель, если хотите, чтобы теги считывались вместе с другими метаданными.
d. Включить журнал отладки- включите этот переключатель, чтобы по этому подключению сохранялись логи. Журнал отладки можно посмотреть позже в Airflow.
e. Отмечать удаленные таблицы- включите этот переключатель, если хотите, чтобы все удаленные в сервисе таблицы отмечались как мягко удаленные в Arenadata Catalog.
f. Отмечать удаленные таблицы только из фильтра- включите этот переключатель, если хотите, чтобы только отфильтрованные таблицы проверялись и отмечались удаленными.

7. После заполнения параметров загрузки данных, нажмите кнопку Далее.
8. Следующая страница управляет расписанием загрузки данных. Если есть необходимость автоматического считывания данных- настройте удобное для организации расписание. Если вы хотите управлять процессом считывания вручную- укажите None в левом списке.
9. После того как вы указали расписание нажмите кнопку Add & Deploy для сохранения и развертывания процесса загрузки данных.
Запуск процесса загрузки данных вручную
Для ручного запуска процесса загрузки данных выполните эти шаги:

  1. Кликните на раздел Настройки, справа от поиска.
  2. В левом боковом меню в разделе Сервисы выберите необходимый тип сервиса.
  3. Из появившихся плиток выберите необходимый сервис и кликните на него.
  4. На открывшейся странице перейдите на вкладку Загрузки, в таблице выберите нужную загрузку данных и нажмите кнопку Запустить.


Для быстрого ознакомления со статусом процесса просмотрите столбец Недавние запуски, для просмотра деталей перейдите в Журнал в строчке процесса загрузки данных.

Как запустить процесс загрузки данных вручную

Удаление процесса загрузки данных
Для удаления процесса загрузки данных выполните эти шаги:

  1. Кликните на раздел Настройки, справа от поиска.
  2. В левом боковом меню в разделе Сервисы выберите необходимый тип сервиса.
  3. Из появившихся плиток выберите необходимый сервис и кликните на него.
  4. На открывшейся странице перейдите на вкладку Загрузки, в таблице выберите нужную загрузку данных и нажмите кнопку Удалить.
Дополнительные атрибуты источников данных
Arenadata Catalog позволяет создавать дополнительные атрибуты к источникам данных.

На текущий момент доступно 3 типа данных у дополнительных атрибутов:

  1. integer;
  2. markdown;
  3. string.
Создание дополнительных атрибутов
Дополнительный атрибут создается к определенному типу источников данных. Например, если создать атрибут для таблиц, его можно будет заполнить в любой таблице в системе, но он не будет существовать в других типах источников данных таких, как дашборды, очереди сообщений и т. п.

Чтобы создать дополнительный атрибут выполните эти шаги:

  1. Авторизуйтесь в системе с правами администратора.
  2. Кликните на раздел Настройки, справа от поиска.
  3. В левом боковом меню в подразделе Дополнительные атрибуты выберите необходимый источник данных для добавления атрибута.
  4. Нажмите кнопку Добавить свойство.
  5. Открывается новая страница для добавления атрибута. Необходимо заполнить параметры нового атрибута:
  • Наименование — то, как атрибут отображается в системе. Наименование атрибута должны быть заполнено на английском языке и начинаться с маленькой буквы. Правила заполнения названия отображены на странице создания атрибута.
  • Тип данных — выбрать из списка необходимый тип данных для атрибута.
  • Описание — необязательно поле, используйте текст с разметкой, чтобы пользователи понимали какие значения должен принимать данный атрибут.

6. После заполнения параметров нажмите кнопку Создать.

Как создать дополнительный атрибут

Заполнение дополнительных атрибутов
Заполнение дополнительного атрибута происходит в карточке объекта каталога данных.

  1. Авторизуйтесь в системе.
  2. Используя вкладку Обзор откройте карточку объекта каталога данных.
  3. Перейдите на вкладку Кастомные свойства в карточке объекта.
  4. Найдите в списке необходимый атрибут и в столбце Значение нажмите на иконку редактирования.
  5. Введите значение атрибута и нажмите кнопку Сохранить.
Новый атрибут добавлен к объекту каталога данных.
Удаление дополнительных атрибутов
Для кастомных свойств объекта каталога данных невозможно изменить наименование и тип данных.
Если возникла потребность изменить эти параметры вы можете создать новый дополнительный атрибут и удалить устаревший.

Чтобы удалить дополнительный атрибут выполните эти шаги:

  1. Авторизуйтесь в системе с правами администратора.
  2. Кликните на раздел Настройки, справа от поиска.
  3. В левом боковом меню в подразделе Дополнительные атрибуты выберите необходимый источник данных для удаления атрибута.
  4. Выберите нужный атрибут в строке и в столбце Действия нажмите на иконку удаления.
  5. После подтверждения удаления дополнительный атрибут будет удален из системы, значения дополнительного атрибута будут утеряны.
Airflow Data Lineage
В данном разделе описаны необходимые действия со стороны Apache Airflow, которые необходимо выполнить для корректной отработки поколоночного data lineage.
Линедж на основе ОАГ (Ориентированный ациклический граф, en. — DAG) Apache Airflow можно построить тремя способами:
  1. Автоматически с использованием парсера SQL-запросов, которые указаны в операторах ОАГ.
  2. С указанием параметров inlets/outlets в операторах ОАГ.
  3. C использованием программного кода Arenadata Catalog для указания дополнительных метаданных.
Автоматически с использованием парсера SQL-запросов, которые указаны в операторах ОАГ
  1. Не требуется предварительная модификация клиентского кода ОАГ или какая-то дополнительная настройка Apache Airflow
  2. Работает для операторов типа PostgresOperator, MySqlOperator, SQLExecuteQueryOperator и подобных, в которых есть один параметр `sql`, который может представлять собой как строку с сырым SQL-запросом, так и имя файла SQL-скрипта
  3. Требования к SQL-запросу:
  • a. Должен представлять собой только одну SQL-команду вида `INSERT INTO schema_name1.table_name1 (…) SELECT … FROM schema_name2.table_name2`
  • b. Не допускается использование нескольких SQL-команд
  • c. Допускается использование только DML-команд, в том числе `JOIN`, `UNION`
4. Требования к таблицам SQL-запроса:
  • a. Относятся только к одной базе данных
  • b. Имена представлены строго в виде `schema_name.table_name`
5. Для корректного построения линеджа в данном случае полные имена всех таблиц должны быть уникальны в рамках всех (!) баз данных, для которых созданы сервисы баз данных в Arenadata Catalog. Если хоть одна таблица в SQL-запросе имеет не уникальное имя, то линедж по этому SQL-запросу построен не будет
С указанием параметров inlets/outlets в операторах ОАГ
  1. Работает «из коробки» для Apache Airflow 2.1.0+ без какой-либо дополнительной модификации программного кода
  2. Работает параллельно с автоматическим парсером SQL-запросов если в Задаче одновременно указаны и inlets/outlets, и параметр `sql`
  3. Можно использовать для любых операторов ОАГ, независимо от реализуемой в них программной логики:
  • Подходит и для операторов типа PostgresOperator, и для операторов типа PythonOperator, в которых может не быть SQL-кода в явном виде либо это может быть любой произвольный SQL-код
  • Здесь не осуществляется анализ программной логики обработки данных
4. Требуется вручную прописать «источники» и «приёмники» данных в параметрах операторов inlets/outlets, на основе которых и строится линедж
  • название источника/приёмника должно быть в виде `adc_database_service_name.database_name.schema_name.table_name`
5. Можно использовать разные Задачи для inlets и outlets в пределах одного ОАГ
  • Например, первая Задача (здесь мы указываем только параметр `inlets`) читает данные из таблицы куда-то в промежуточное хранилище, которого нет в сервисах ADC, а другая Задача (здесь мы указываем только параметр `outlets`) берёт эти данные и загружает их в таблицу, которая есть в сервисах ADC

```python
    tasks.append(PostgresOperator(
        task_id = f'task_0',
        postgres_conn_id = 'postgres_dwh_conn_id',
        sql = 'SELECT 1',  # dummy query
        inlets = {
            'tables1': ['sql_lineage_inlets_outlets_src.sql_lineage_inlets_outlets_src.public.client',],
            'tables2': [
                'sql_lineage_inlets_outlets_src.sql_lineage_inlets_outlets_src.public.client',
                'sql_lineage_inlets_outlets_src.sql_lineage_inlets_outlets_src.public.order_',
            ],
        },
        outlets = {
            'tables1': ['sql_lineage_inlets_outlets_dst.sql_lineage_inlets_outlets_dst.public.client',],
            'tables2': [
                'sql_lineage_inlets_outlets_dst.sql_lineage_inlets_outlets_dst.public.order_',
            ],
        }
    ))
```
С использованием программного кода Arenadata Catalog для указания дополнительных метаданных
  1. Требуется использование дополнительного программного кода, который на данный момент времени:
  • Не зависит от версии Apache Airflow или какого-либо провайдера, например, Postgres для PostgresOperator
  • Не вносит какой-либо дополнительной программной логики в код ОАГ
  • Может быть использован при автоматической генерации ОАГ
  • Пример для PostgresOperator см. ниже
2. Сохраняются все требования, которые указаны к подразделе «1». Однако, требования к уникальности имён таблиц здесь относятся только к одному сервису баз данных (сервис баз данных может содержать несколько баз данных), который настроен в Arenadata Catalog
3. Для корректного построения линеджа укажите
  • Либо параметры `adc_host_port`, `adc_database_name`
  • Либо параметры `adc_service_name`, `adc_database_name`
4. Если какие-либо параметры указаны не будут, то будет производиться автоматический парсинг SQL-запроса в соответствии с требованиями из подраздела «1».

```python
from airflow.providers.postgres.operators.postgres import PostgresOperator as PostgresOperator_

class PostgresOperator(PostgresOperator_):
    template_fields = [
        *PostgresOperator_.template_fields,
        'adc_service_name',
        'adc_host_port',
        'adc_database_name',
    ]
    def __init__(
            self,
            *,
            adc_service_name: str = 'sql_lineage_adc',
            adc_host_port: str = 'postgres-dwh:5432',
            adc_database_name: str = 'sql_lineage_adc',
            **kwargs):
        super().__init__(**kwargs)

        self.adc_service_name = adc_service_name
        self.adc_host_port = adc_host_port
        self.adc_database_name = adc_database_name
```
Greenplum PXF Lineage
Arenadata Catalog может автоматически построить происхождение данных для внешних таблиц Greenplum разбирая технологию PXF.

Для работы этого функционала необходимо выполнить предварительную настройку Arenadata Catalog:

Внести дополнения в docker-compose.yml - добавить том, в котором будут храниться конфигурационные файлы:

```yml
version: "3.9"
services:
  ...

  ingestion:
    ...
    volumes:
      ...
      - "${PWD}/adc_share:${ADC_SHARE_DIR}"
      # либо явно задать директории "<директория_на_хосте>:<директория_в_контейнере_ingestion>"

  ...
```
Опционально можно добавить переменную окружения `ADC_SHARE_DIR=<директория_в_контейнере_ingestion>`

+ в соответствующий `.env` файл
+ либо в`docker-compose.yml`

Если такая переменная окружения задана не будет, то используется значение по умолчанию `ADC_SHARE_DIR=/adc_share` .
Если параметры подключения указаны при создании внешней таблицы, например:

```sql
CREATE READABLE EXTERNAL TABLE pxf_sensors_postgresql.temperature (
    ...
)
LOCATION ('pxf://pxf.temperature?PROFILE=JDBC&JDBC_DRIVER=org.postgresql.Driver&DB_URL=jdbc:postgresql://<host>:<port>/<dbname>&USER=<user>&PASS=<password>')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
```
То никаких дополнительных действий предпринимать не нужно.

Если при создании внешних таблиц используются конфигурационные XML-файлы, например:

```sql
CREATE READABLE EXTERNAL TABLE pxf_sensors_postgresql.sensor (
    ...
)
LOCATION ('pxf://pxf.sensor?PROFILE=JDBC&SERVER=sensors_postgresql')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
```
Тогда в директорию ADC_SHARE_DIR скопировать конфигурационные файлы PXF по примеру:

```bash
/adc_share
    /greenplum_pxf  # это наименование сервиса баз данных с Greenplum + PXF
        /pxf_base
            /servers
                /...  # здесь содержимое директории "${PXF_BASE}/servers/"
                /postgresql_adc
                    /jdbc-site.xml
```
Где наименование директории `greenplum_pxf` должно в точности совпадать с наименованием сервиса баз данных для Greenplum.

Для целей построения линеджа достаточно, чтобы конфигурационный файл имел корректную XML-структуру и обязательно содержал два подраздела - `jdbc.driver` и `jdbc.url` , например:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property>
        <name>jdbc.driver</name>
        <value>org.postgresql.Driver</value>
        <description>Class name of the JDBC driver (e.g. org.postgresql.Driver)</description>
    </property>
    <property>
        <name>jdbc.url</name>
        <value>jdbc:postgresql://HOST:PORT/DBNAME</value>
        <description>The URL that the JDBC driver can use to connect to the database (e.g. jdbc:postgresql://localhost/postgres)</description>
    </property>
</configuration>
```
После предварительной настройки вы можете загрузить информацию о происхождении данных.

На текущий момент времени поддержка построения линеджа доступна только для РСУБД (PostgreSQL, MS SQL Server, Oracle, MySQL, Clickhouse)

Для построения автоматического линеджа выполните следующие шаги:
  1. В ADC создать все необходимые сервисы баз данных
  2. Выполнить загрузку метаданных таблиц, которые подключены к Greenplum с использованием PXF
Затем для Greenplum:
  1. Создать в ADC сервис баз данных
  2. Выполнить загрузку метаданных
  3. Добавить и выполнить загрузку "Происхождение"
Если сервисы были созданы ранее, то достаточно повторить загрузку метаданных повторно