Un diccionario es una asignación (key -> attributes) útil para diversos tipos de listas de referencia.
ClickHouse admite funciones especiales para trabajar con diccionarios que pueden usarse en consultas. Es más fácil y eficiente usar diccionarios con funciones que hacer un JOIN con tablas de referencia.
Los diccionarios pueden crearse de dos formas:
- Con una consulta DDL (recomendado)
- Con un archivo de configuración
Creación de un diccionario con una consulta DDL
Disponible en ClickHouse Cloud
Los diccionarios pueden crearse con consultas DDL. Este es el método recomendado porque, con los diccionarios creados mediante DDL:
- No se agregan registros adicionales a los archivos de configuración del servidor.
- Los diccionarios pueden usarse como entidades de primera clase, como tablas o vistas.
- Los datos pueden leerse directamente mediante la sintaxis habitual de
SELECT, en lugar de funciones de tabla de diccionario. Tenga en cuenta que, al acceder directamente a un diccionario mediante una instrucciónSELECT, un diccionario en caché devolverá solo los datos almacenados en caché, mientras que un diccionario sin caché devolverá todos los datos que almacena. - Los diccionarios pueden cambiarse de nombre fácilmente.
Sintaxis
CREATE [OR REPLACE] DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster]
(
key1 type1 [DEFAULT | EXPRESSION expr1] [IS_OBJECT_ID],
key2 type2 [DEFAULT | EXPRESSION expr2],
attr1 type2 [DEFAULT | EXPRESSION expr3] [HIERARCHICAL|INJECTIVE],
attr2 type2 [DEFAULT | EXPRESSION expr4] [HIERARCHICAL|INJECTIVE]
)
PRIMARY KEY key1, key2
SOURCE(SOURCE_NAME([param1 value1 ... paramN valueN]))
LAYOUT(LAYOUT_NAME([param_name param_value]))
LIFETIME({MIN min_val MAX max_val | max_val})
SETTINGS(setting_name = setting_value, setting_name = setting_value, ...)
COMMENT 'Comment'| Cláusula | Descripción |
|---|---|
| Atributos | Los atributos del diccionario se especifican de forma similar a las columnas de una tabla. La única propiedad obligatoria es el tipo; todas las demás pueden tener valores predeterminados. |
| PRIMARY KEY | Define la(s) columna(s) clave para las búsquedas en el diccionario. Según el layout, se pueden especificar uno o más atributos como claves. |
SOURCE |
Define la fuente de datos del diccionario (p. ej., una tabla de ClickHouse, HTTP, PostgreSQL). |
LAYOUT |
Controla cómo se almacena el diccionario en memoria (p. ej., FLAT, HASHED, CACHE). |
LIFETIME |
Establece el intervalo de actualización del diccionario. |
ON CLUSTER |
Crea el diccionario en un clúster. Opcional. |
SETTINGS |
Ajustes adicionales del diccionario. Opcional. |
COMMENT |
Añade un comentario de texto al diccionario. Opcional. |
Crear un diccionario con un archivo de configuración
El archivo de configuración del diccionario tiene el siguiente formato:
<clickhouse>
<comment>An optional element with any content. Ignored by the ClickHouse server.</comment>
<!--Optional element. File name with substitutions-->
<include_from>/etc/clickhouse-server/substitutions.xml</include_from>
<dictionary>
<!-- Dictionary configuration. -->
<!-- There can be any number of dictionary sections in a configuration file. -->
</dictionary>
</clickhouse>Puede configurar tantos diccionarios como quiera en el mismo archivo.
- Layouts — Cómo se almacenan los diccionarios en memoria
- Fuentes — Conexión con fuentes de datos
- Tiempo de vida — Configuración de actualización automática
- Atributos — Configuración de claves y atributos
- Diccionarios integrados — Diccionarios geobase integrados
- system.dictionaries — Tabla del sistema con información sobre diccionarios