Перейти к основному содержимому
Перейти к основному содержимому

Источник словаря YAMLRegExpTree

Not supported in ClickHouse Cloud

Источник YAMLRegExpTree загружает дерево регулярных выражений из YAML-файла на локальной файловой системе. Он предназначен исключительно для использования с макетом словаря regexp_tree и предоставляет иерархические сопоставления регулярных выражений с атрибутами для поиска по шаблонам, например для разбора заголовка User-Agent.

Примечание

Источник YAMLRegExpTree доступен только в ClickHouse Open Source. Для ClickHouse Cloud экспортируйте словарь в CSV и загрузите его через источник таблицы ClickHouse. Подробнее см. раздел Using regexp_tree dictionaries in ClickHouse Cloud.

Конфигурация

CREATE DICTIONARY regexp_dict
(
    regexp String,
    name String,
    version String
)
PRIMARY KEY(regexp)
SOURCE(YAMLRegExpTree(PATH '/var/lib/clickhouse/user_files/regexp_tree.yaml'))
LAYOUT(regexp_tree)
LIFETIME(0);

Поля параметров:

НастройкаОписание
PATHАбсолютный путь к YAML-файлу, содержащему дерево регулярных выражений. При создании через DDL файл должен находиться в каталоге user_files.

Структура YAML-файла

YAML-файл содержит список узлов дерева регулярных выражений. Каждый узел может иметь атрибуты и дочерние узлы, образуя иерархию:

- regexp: 'Linux/(\d+[\.\d]*).+tlinux'
  name: 'TencentOS'
  version: '\1'

- regexp: '\d+/tclwebkit(?:\d+[\.\d]*)'
  name: 'Android'
  versions:
    - regexp: '33/tclwebkit'
      version: '13'
    - regexp: '3[12]/tclwebkit'
      version: '12'
    - regexp: '30/tclwebkit'
      version: '11'
    - regexp: '29/tclwebkit'
      version: '10'

Каждый узел имеет следующую структуру:

  • regexp: Регулярное выражение, соответствующее этому узлу.
  • attributes: Определяемые пользователем атрибуты словаря (например, name, version). Значения атрибутов могут содержать обратные ссылки на группы захвата в регулярном выражении, записанные как \1 или $1 (числа 1–9). Эти значения заменяются соответствующей группой захвата во время выполнения запроса.
  • child nodes: Список дочерних узлов, каждый со своими атрибутами и, при необходимости, с дополнительными потомками. Имя списка дочерних узлов произвольное (например, versions выше). Сопоставление строк выполняется в порядке обхода в глубину: если строка соответствует узлу, его дочерние узлы также проверяются. Атрибуты самого глубокого соответствующего узла имеют приоритет и переопределяют одноимённые атрибуты родительских узлов.
  • regexp_tree dictionary layout — конфигурация размещения, примеры запросов и режимы сопоставления
  • dictGet, dictGetAll — функции для выполнения запросов к словарям regexp_tree