Skip to content

Паттерны (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 в различных схемах/БД. Протестировать паттерны регулярных выражений можно тут