Saltar al contenido principal
Si usa un diccionario con ClickHouse Cloud, utilice la opción de consulta DDL para crear sus diccionarios y cree el diccionario como el usuario default. Además, consulte la lista de orígenes de diccionario compatibles en la guía de compatibilidad de Cloud.
La cláusula structure describe la clave del diccionario y los campos disponibles para las consultas. Descripción XML:
<dictionary>
    <structure>
        <id>
            <name>Id</name>
        </id>

        <attribute>
            <!-- Parámetros de atributo -->
        </attribute>

        ...

    </structure>
</dictionary>
Los atributos se describen en los siguientes elementos:
  • <id> — Columna clave
  • <attribute> — Columna de datos: puede haber varios atributos.
Sentencia DDL:
CREATE DICTIONARY dict_name (
    Id UInt64,
    -- atributos
)
PRIMARY KEY Id
...
Los atributos se describen en el cuerpo de la consulta:
  • PRIMARY KEY — Columna clave
  • AttrName AttrType — Columna de datos. Puede haber múltiples atributos.

Clave

ClickHouse admite los siguientes tipos de claves:
  • Clave numérica. UInt64. Se define en la etiqueta <id> o mediante la palabra clave PRIMARY KEY.
  • Clave compuesta. Conjunto de valores de distintos tipos. Se define en la etiqueta <key> o mediante la palabra clave PRIMARY KEY.
Una estructura XML puede contener <id> o <key>. La sentencia DDL debe contener una única PRIMARY KEY.
No debe describir la clave como un atributo.

Clave numérica

Tipo: UInt64. Ejemplo de configuración:
<id>
    <name>Id</name>
</id>
Campos de configuración:
  • name – El nombre de la columna con claves.
Para la sentencia DDL:
CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY – El nombre de la columna que contiene las claves.

Clave compuesta

La clave puede ser una tuple formada por campos de cualquier tipo. El layout en este caso debe ser complex_key_hashed o complex_key_cache.
Una clave compuesta puede constar de un solo elemento. Esto permite, por ejemplo, usar una cadena como clave.
La estructura de la clave se define en el elemento <key>. Los campos de la clave se especifican en el mismo formato que los atributos del diccionario. Ejemplo:
<structure>
    <key>
        <attribute>
            <name>field1</name>
            <type>String</type>
        </attribute>
        <attribute>
            <name>field2</name>
            <type>UInt32</type>
        </attribute>
        ...
    </key>
...
o
CREATE DICTIONARY (
    field1 String,
    field2 UInt32
    ...
)
PRIMARY KEY field1, field2
...
En una consulta a la función dictGet*, se pasa una tupla como clave. Ejemplo: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

Atributos

Ejemplo de configuración:
<structure>
    ...
    <attribute>
        <name>Name</name>
        <type>ClickHouseDataType</type>
        <null_value></null_value>
        <expression>rand64()</expression>
        <hierarchical>true</hierarchical>
        <injective>true</injective>
        <is_object_id>true</is_object_id>
    </attribute>
</structure>
or
CREATE DICTIONARY somename (
    Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)
Campos de configuración:
EtiquetaDescripciónObligatorio
nameNombre de la columna.
typeTipo de dato de ClickHouse: UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64, UUID, Decimal32, Decimal64, Decimal128, Decimal256,Date, Date32, DateTime, DateTime64, String, Array.
ClickHouse intenta convertir el valor del diccionario al tipo de dato especificado. Por ejemplo, en MySQL, el field puede ser TEXT, VARCHAR o BLOB en la tabla de origen de MySQL, pero puede cargarse como String en ClickHouse.
Actualmente, Nullable se admite para los diccionarios Flat, Hashed, ComplexKeyHashed, Direct, ComplexKeyDirect, RangeHashed, Polygon, Cache, ComplexKeyCache, SSDCache, SSDComplexKeyCache. En los diccionarios IPTrie, no se admiten tipos Nullable.
null_valueValor predeterminado para un elemento que no existe.
En el ejemplo, es una cadena vacía. El valor NULL solo puede usarse para los tipos Nullable (consulte la línea anterior con la descripción de los tipos).
expressionExpresión que ClickHouse ejecuta sobre el valor.
La expresión puede ser un nombre de columna en la base de datos SQL remota. Por lo tanto, puede usarla para crear un alias para la columna remota.

Valor predeterminado: sin expresión.
No
hierarchicalSi es true, el atributo contiene el valor de la clave padre de la clave actual. Consulte Hierarchical Dictionaries.

Valor predeterminado: false.
No
injectiveIndicador que muestra si el mapeo id -> attribute es inyectivo.
Si es true, ClickHouse puede colocar automáticamente, después de la cláusula GROUP BY, las solicitudes a diccionarios con esta propiedad. Por lo general, esto reduce significativamente la cantidad de dichas solicitudes.

Valor predeterminado: false.
No
is_object_idIndicador que muestra si la consulta se ejecuta para un documento de MongoDB mediante ObjectID.

Valor predeterminado: false.
Última modificación el 10 de junio de 2026