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
y proporciona correspondencias jerárquicas entre expresiones regulares y atributos para búsquedas basadas en patrones, como el análisis de user agent.
Configuración
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. |
Estructura del archivo YAML
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:
- 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\1o$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.,
versionsarriba). 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.
- layout del diccionario regexp_tree — configuración del layout, ejemplos de consultas y modos de coincidencia
- dictGet, dictGetAll — funciones para consultar diccionarios regexp tree