> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Source de dictionnaire YAMLRegExpTree

> Configurer un fichier YAML comme source pour les dictionnaires à arbre d'expressions régulières.

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Non pris en charge par ClickHouse Cloud
        </div>;
};

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`](/fr/reference/statements/create/dictionary/layouts/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.

<Note>
  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](/fr/reference/statements/create/dictionary/sources/clickhouse).
  Voir [Using regexp\_tree dictionaries in ClickHouse Cloud](/fr/reference/statements/create/dictionary/layouts/regexp-tree#use-regular-expression-tree-dictionary-in-clickhouse-cloud) pour en savoir plus.
</Note>

<div id="configuration">
  ## Configuration
</div>

```sql theme={null}
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`. |

<div id="yaml-file-structure">
  ## Structure du fichier YAML
</div>

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 :

```yaml theme={null}
- 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.

<div id="related-pages">
  ## Pages connexes
</div>

* [layout du dictionnaire regexp\_tree](/fr/reference/statements/create/dictionary/layouts/regexp-tree) — configuration du layout, exemples de requêtes et modes de correspondance
* [dictGet](/fr/reference/functions/regular-functions/ext-dict-functions#dictGet), [dictGetAll](/fr/reference/functions/regular-functions/ext-dict-functions#dictGetAll) — fonctions pour interroger les dictionnaires regexp tree
