Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Fonte de dicionário YAMLRegExpTree

Sem suporte no ClickHouse Cloud

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.

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ção Descrição
PATH O 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.
Navigation