Паттерны (Patterns)
При настройке конфигурации рецептов Каталог данных позволяет использовать паттерны, а именно регулярные выражения, для включения или исключения баз данных (database_pattern), схем (schema_pattern), таблиц (table_pattern), представлений (view_pattern) из инджестинга. Ниже можно ознакомиться в правилами использования паттернов.
Важно. Для написания паттернов используются регулярные выражения, поэтому поиск происходит с начала строки.
Типы паттернов
Существует два типа паттернов:
- allow позволяет включать в инджестинг объекты, извлеченные с помощью регулярного выражения,
- deny: позволяет исключать из инджестинга объекты, извлеченные с помощью регулярного выражения. Этот паттерн имеет преимущество над паттерном allow. То есть, если наименование объекта подходит под оба паттерна, то объект будет исключен из инджестинга.
Паттерн allow
database_pattern:
allow: ['my_db']
Данный паттерн включит в загрузку все БД, начинающиеся на my_db (my_db1, my_db_new), но исключит базу с именем new_my_db.
database_pattern:
allow: ['my_db_1$', 'my_db_2$']
Паттерн, приведенный выше позволяет включить только определенные базы данных my_db_1, my_db_2.
Более детальное описание по работе с шаблонами можно найти в руководстве по регулярным выражениям.
Те же правила создания шаблонов применяются и для схем.
Паттерн DENY
Важно. Паттерны DENY преобладают над паттернами ALLOW.
Пример паттерна для схем:
schema_pattern:
allow: ['my_schema', 'other_schema']
deny: ['my']
Данный паттерн исключит все схемы, начинающиеся на my, такие как my_schema (несмотря на то, что паттерн my_schema включен в allow список), my_other_schema, my_schema_1, и включит в загрузку все схемы, начинающиеся на other_schema (other_schema1, other_schemanew). Схема с именем new_other_schema не будет включена в инджестинг.
Паттерны для таблиц (table) и представлений (view)
Паттернами для таблиц и представлений работают иначе, чем паттерны схем и баз данных, поскольку при извлечении метаданных имена (путь до таблиц) таблиц включают названия схемы и/или баз данных.
Для трехуровневых баз данных паттерн состоит из трех частей (database/schema/table). Сюда относятся postgresql и mssql.
table_pattern:
allow: ['my_db\.my_schema\.my_table$']
deny: []
Данный паттерн пропустит только таблицу my_table в схеме my_schema в БД my_db. Для двухуровневых баз данных (таких как mysql и mariadb) паттерн состоит из двух частей.
Для двухуровневых баз данных (таких как mysql и mariadb) паттерн состоит из двух частей (schema/table или database/table).
table_pattern:
allow: ['my_db_or_schema\.my_table']
deny: []
Данный паттерн включит все таблицы из схемы/БД my_db_or_schema, начинающиеся на my_table (например, my_table_1)
Если необходимо извлечь таблицы из разных схем/БД, и неизвестны все имена схем/БД (либо они уже определены в database/schema_pattern и не хочется повторяться), можно применить следующий паттерн:
table_pattern:
allow: ['.*\.my_table']
deny: []
Данный паттерн извлечет все таблицы, начинающиеся с my_table в различных схемах/БД. Протестировать паттерны регулярных выражений можно тут