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

# Fuente del diccionario YAMLRegExpTree

> Configure un archivo YAML como fuente para diccionarios de árbol de expresiones regulares.

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>
            Not supported in ClickHouse Cloud
        </div>;
};

La fuente `YAMLRegExpTree` carga un árbol de expresiones regulares desde un archivo YAML en el sistema de archivos local.
Está diseñada exclusivamente para usarse con el layout de diccionario [`regexp_tree`](/es/reference/statements/create/dictionary/layouts/regexp-tree)
y proporciona correspondencias jerárquicas entre expresiones regulares y atributos para búsquedas basadas en patrones, como el análisis de user agent.

<Note>
  La fuente `YAMLRegExpTree` solo está disponible en ClickHouse Open Source.
  En ClickHouse Cloud, exporte el diccionario a CSV y cárguelo mediante una [fuente de tabla de ClickHouse](/es/reference/statements/create/dictionary/sources/clickhouse).
  Consulte [Uso de diccionarios regexp\_tree en ClickHouse Cloud](/es/reference/statements/create/dictionary/layouts/regexp-tree#use-regular-expression-tree-dictionary-in-clickhouse-cloud) para obtener más información.
</Note>

<div id="configuration">
  ## Configuración
</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);
```

Campos de ajuste:

| Ajuste | Descripción                                                                                                                                                    |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PATH` | La ruta absoluta al archivo YAML que contiene el árbol de expresiones regulares. Si se crea mediante DDL, el archivo debe estar en el directorio `user_files`. |

<div id="yaml-file-structure">
  ## Estructura del archivo YAML
</div>

El archivo YAML contiene una lista de nodos de un árbol de expresiones regulares. Cada nodo puede tener atributos y nodos hijo, formando una jerarquía:

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

Cada nodo tiene la siguiente estructura:

* **`regexp`**: La expresión regular de este nodo.
* **attributes**: Atributos de diccionario definidos por el usuario (p. ej., `name`, `version`). Los valores de los atributos pueden contener **retroreferencias** a grupos de captura en la expresión regular, escritas como `\1` o `$1` (números del 1 al 9). Estas se sustituyen por el grupo de captura coincidente durante la consulta.
* **nodos hijo**: Una lista de nodos hijo, cada uno con sus propios atributos y, opcionalmente, más nodos hijo. El nombre de la lista de hijos es arbitrario (p. ej., `versions` arriba). La coincidencia de cadenas se realiza en profundidad: si una cadena coincide con un nodo, también se comprueban sus nodos hijo. Los atributos del nodo coincidente más profundo tienen prioridad y sobrescriben los atributos del nodo padre con el mismo nombre.

<div id="related-pages">
  ## Páginas relacionadas
</div>

* [layout del diccionario regexp\_tree](/es/reference/statements/create/dictionary/layouts/regexp-tree) — configuración del layout, ejemplos de consultas y modos de coincidencia
* [dictGet](/es/reference/functions/regular-functions/ext-dict-functions#dictGet), [dictGetAll](/es/reference/functions/regular-functions/ext-dict-functions#dictGetAll) — funciones para consultar diccionarios regexp tree
