Инджестор Microsoft SQL Server
Настройка, предварительные условия и разрешения
Для учетной записи, под которой инджестор будет обращаться в базу данных, необходим доступ к следующих схемам и таблицам в них:
INFORMATION_SCHEMA: SCHEMATA, TABLES, COLUMNS, TABLE_CONSTRAINTS, CONSTRAINT_COLUMN_USAGE, KEY_COLUMN_USAGE, REFERENTIAL_CONSTRAINTS, VIEWS, SEQUENCES
sys: computed_columns, identity_columns
tempdb.INFORMATION_SCHEMA: COLUMNS
Для выдачи необходимых прав достаточно выполнить следующую команду:
GRANT VIEW DEFINITION ON database::my_database TO my_user;
Доступ необходим для всех БД, чьи метаданные планируется извлекать.
Дополнительно, для извлечения привилегий пользователей инжестору необходимы гранты: IMPERSONATE ANY LOGIN на СУБД, для вызова HAS_PERMS_BY_NAME
ALTER ANY USER для всех БД, чьи метаданные планируется извлекать, для получения списка пользователей БД.
Возможности платформы (Important Capabilities)
| Название | Описание | Поддерживается | Настройки |
|---|---|---|---|
| Schema Metadata | Вкладка Schema: схема датасета | Да | Включено по умолчанию. |
| Descriptions | Вкладка Documentation: текстовое описание объекта | Да | Включено по умолчанию. Можно редактировать через Excel. |
| Data Lineage | Вкладка Lineage: внутренний lineage источника | Да | Настраивается в рецепте. |
| Properties | Вкладка Properties: системные поля | Да | Включено по умолчанию. Настраивается в рецепте с помощью трансформеров. |
| Dataset Usage & Query History | Вкладка Queries: запросы и историческая информация о датасете. | Да | Включено по умолчанию. |
| Data Profiling (Профилирование данных) | Вкладка Stats: количество строк, столбцов, статистики и графики | Да | Отключено по умолчанию. Настраивается в рецепте, в разделе profiling или при создании источника с помощью Form. |
| DQ Checks | Вкладка DQ Checks: проверка качества данных | Да | Отключено по умолчанию. Настраивается с помощью дополнительного инджестора. |
| Platform Instance | Наличие у объекта связи с платформ инстансом | Да | Включено по умолчанию. Настраивается в рецепте. |
| Critical data | Чекбокс Critical полей | Да | Включено по умолчанию. Можно редактировать через Excel. |
| Ownership | Наличие у объекта владельца | Да | Включено по умолчанию. Можно редактировать через Excel или с помощью трансформеров. |
| Detect deleted entities | Проверка удалены ли данные в источнике. | Да | Отключено по умолчанию. Настраивается в рецепте, в разделе stateful ingestion. |
| Status | Пометить удаленным | Да | Включено по умолчанию. Можно редактировать с помощью трансформеров. |
| Tags | Наличие у объекта тега | Да | Включено по умолчанию. Можно редактировать через Excel и с помощью трансформеров. |
| Glossary Term | Наличие у объекта связи с термином | Да | Включено по умолчанию. Можно редактировать через Excel или с помощью трансформеров. |
| Domains (Домены) | Наличие у объекта связи с доменом | Да | Настраивается в рецепте, в разделе stateful ingestion. Можно редактировать через Excel или с помощью трансформеров. |
Пример рецепта MS SQL
Для получения деталей о добавлении паттернов для баз данных, схем, представлений, таблиц можно обратиться к странице паттернов
source:
type: mssql
config:
host_port: localhost:1433 # Хост и порт сервера БД
username: user # Пользователь
password: pass # Пароль
database: my_database # ОПЦИОНАЛЬНО: имя базы данных. Если не указывать данный параметр (убрать данную строку) будут загружены метаданные всех БД на источнике.
platform_instance: 'Сюда_подставить_platform_instance'
stateful_ingestion:
enabled: true # Признак включения режима 'Stateful ingesting' - загружаемые данные имеют приоритет над загруженными ранее. Если в загружаемых отсутствуют таблицы/поля - они не будут отображаться в Каталоге
database_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения баз, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: ['']
ignoreCase: True
schema_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения схем, по умолчанию allow: ['.*'], deny: ['information_schema'], ignoreCase: True
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: ['information_schema']
ignoreCase: True
table_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения таблиц, по умолчанию allow: ['.*'], deny: [], ignoreCase: True. Формат - база.схема.паттерн_таблицы, например, для извлечения таблиц из базы customers, начинающихся с mobile_ - customers.public.mobile_*
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: []
ignoreCase: True
view_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения представлений, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: []
ignoreCase: True
# Опционально: конфигурация SSL для подключения к источнику
# options:
# connect_args:
# cafile: server-ca.pem
# validate_host: true
pipeline_name: 'Сюда_подставить_имя_pipeline'
sink:
type: catalog-rest
config:
server: 'https://demo-gms.datacatalog.mts.ru'
token: '********'
transformers:
- type: 'add_digital_products'
config:
digital_products: ['PRODUCT_ID1','PRODUCT_ID2'] # Список продуктов из мастер-системы, с которыми будут связаны все объекты, создаваемые по результатам инджестинга.
Пример рецепта MS SQL ODBC
source:
type: mssql-odbc
config:
host_port: localhost:1433 # Хост и порт сервера БД
username: user # Пользователь
password: pass # Пароль
database: my_database # Имя БД. Вместо database следует указать параметр initial_database (Имя БД, к которой у пользователя есть доступ), если необходимо извлекать данные обо всех БД на источнике
platform_instance: 'Сюда_подставить_platform_instance'
stateful_ingestion:
enabled: true # Признак включения режима 'Stateful ingesting' - загружаемые данные имеют приоритет над загруженными ранее. Если в загружаемых отсутствуют таблицы/поля - они не будут отображаться в Каталоге
database_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения баз, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: ['']
ignoreCase: True
schema_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения схем, по умолчанию allow: ['.*'], deny: ['information_schema'], ignoreCase: True
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: ['information_schema']
ignoreCase: True
table_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения таблиц, по умолчанию allow: ['.*'], deny: [], ignoreCase: True. Формат - база.схема.паттерн_таблицы, например, для извлечения таблиц из базы customers, начинающихся с mobile_ - customers.public.mobile_*
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: []
ignoreCase: True
view_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения представлений, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
allow: ['.*'] # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов)
deny: []
ignoreCase: True
# Опционально: конфигурация SSL для подключения к источнику
# options:
# connect_args:
# cafile: server-ca.pem
# validate_host: true
# For ODBC only
use_odbc: 'True'
uri_args:
driver: 'ODBC Driver 17 for SQL Server'
Encrypt: "yes"
TrustServerCertificate: "Yes"
ssl: "True"
pipeline_name: 'Сюда_подставить_имя_pipeline'
sink:
type: catalog-rest
config:
server: 'https://demo-gms.datacatalog.mts.ru'
token: '********'
transformers:
- type: 'add_digital_products'
config:
digital_products: ['PRODUCT_ID1','PRODUCT_ID2'] # Список продуктов из мастер-системы, с которыми будут связаны все объекты, создаваемые по результатам инджестинга.
Пример рецепта для подключения MS SQL с использованием Kerberos
Перед запуском необходимо выполнить kinit в системе:
kinit <ваша техническая учетная запись>@MSK.MTS.RU -kt ~/<ваша техническая учетная запись>.keytab
pipeline_name: "mssql-pn"
source:
type: mssql
config:
database: db_test
host_port: 'localhost:1433'
username: <ваша техническая учетная запись>
platform_instance: 'mssql-pi'
include_jobs: False
include_stored_procedures: False
include_stored_procedures_code: False
options:
connect_args:
use_sso: True
stateful_ingestion:
enabled: true
sink:
type: catalog-rest
config:
server: 'https://gms.datacatalog.ru'
token: '********'
Создание keytab-файла
Для запуска kinit внутри контейнера нужно смонтировать krb5.conf & keytab, например:
docker run --rm -v /etc/krb5.conf:/etc/krb5.conf -v $(pwd)/mssql_2_datahub.yml:/mssql_2_datahub.yml -v $(pwd)/<ваша техническая учетная запись>.keytab:/<ваша техническая учетная запись>.keytab -it --name mssql_ingestor --entrypoint="/bin/bash" sregistry.mts.ru/datacatalog/metadata-ingestion:stable -c 'kinit <ваша техническая учетная запись>@MSK.MTS.RU -kt /<ваша техническая учетная запись>.keytab && catalog ingest run -c /mssql_2_datahub.yml'