Pular para o conteúdo principal
A fonte YAMLRegExpTree carrega uma árvore de expressões regulares de um arquivo YAML no sistema de arquivos local. Ela foi projetada exclusivamente para uso com o layout de dicionário regexp_tree e fornece mapeamentos hierárquicos de regex para atributos para buscas baseadas em padrões, como a análise de user agent.
A fonte YAMLRegExpTree está disponível apenas no ClickHouse Open Source. Para o ClickHouse Cloud, exporte o dicionário para CSV e carregue-o por meio de uma fonte de tabela do ClickHouse. Consulte Uso de dicionários regexp_tree no ClickHouse Cloud para mais detalhes.

Configuração

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);
Campos de configuração:
ConfiguraçãoDescrição
PATHO caminho absoluto para o arquivo YAML que contém a árvore de expressões regulares. Quando criado via DDL, o arquivo deve estar no diretório user_files.

Estrutura do arquivo YAML

O arquivo YAML contém uma lista de nós de uma árvore de expressões regulares. Cada nó pode ter atributos e nós filhos, formando uma hierarquia:
- 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'
Cada nó tem a seguinte estrutura:
  • regexp: A expressão regular deste nó.
  • attributes: Atributos de dicionário definidos pelo usuário (por exemplo, name, version). Os valores dos atributos podem conter referências retroativas a grupos de captura na expressão regular, escritas como \1 ou $1 (números de 1 a 9). Elas são substituídas pelo grupo de captura correspondente durante a consulta.
  • child nodes: Uma lista de filhos, cada um com seus próprios atributos e, opcionalmente, mais filhos. O nome da lista de filhos é arbitrário (por exemplo, versions acima). A correspondência de strings segue uma busca em profundidade: se uma string corresponder a um nó, seus filhos também serão verificados. Os atributos do nó correspondente mais profundo têm precedência, substituindo os atributos do nó pai com o mesmo nome.
Última modificação em 10 de junho de 2026