Passer au contenu principal
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.
La source YAMLRegExpTree n’est disponible que dans ClickHouse Open Source. Avec ClickHouse Cloud, exportez le dictionnaire au format CSV et chargez-le à la place via une source de ClickHouse table. Voir Using regexp_tree dictionaries in ClickHouse Cloud pour en savoir plus.

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ètreDescription
PATHChemin 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.
Dernière modification le 29 juin 2026