Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Source de dictionnaire YAMLRegExpTree

Non pris en charge par ClickHouse Cloud

La source YAMLRegExpTree charge un arbre d’expressions régulières à partir d’un fichier YAML situé sur le système de fichiers local. Elle est conçue exclusivement pour être utilisée avec le layout du dictionnaire regexp_tree et fournit des correspondances hiérarchiques entre regex et attributs pour des lookups basés sur des motifs, comme l’analyse des user agents.

Configuration

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);

Champs des paramètres :

Paramètre Description
PATH Chemin absolu vers le fichier YAML contenant l’arbre d’expression régulière. Lorsqu’il est créé via DDL, le fichier doit se trouver dans le répertoire user_files.

Structure du fichier YAML

Le fichier YAML contient une liste de nœuds d’un arbre d’expressions régulières. Chaque nœud peut comporter des attributs et des nœuds enfants, formant une hiérarchie :

- 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'

Chaque nœud a la structure suivante :

  • regexp: L’expression régulière de ce nœud.
  • attributes: Attributs de dictionnaire définis par l’utilisateur (par ex. name, version). Les valeurs des attributs peuvent contenir des références arrière à des groupes de capture dans l’expression régulière, notées \1 ou $1 (nombres de 1 à 9). Elles sont remplacées par le groupe de capture correspondant au moment de l’exécution de la requête.
  • child nodes: Une liste de nœuds enfants, chacun avec ses propres attributs et, éventuellement, d’autres enfants. Le nom de la liste des enfants est arbitraire (par ex. versions ci-dessus). La correspondance des chaînes s’effectue par parcours en profondeur : si une chaîne correspond à un nœud, ses enfants sont eux aussi vérifiés. Les attributs du nœud correspondant le plus profond ont priorité et remplacent les attributs du parent portant le même nom.
Navigation