Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Atributos del diccionario

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.

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.

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)).

Cuando la clave compuesta consta de un solo atributo, el valor de la clave puede pasarse directamente, sin necesidad de envolverlo en tuple. Por ejemplo, tanto dictGetString('dict_name', 'attr_name', 'key') como dictGetString('dict_name', 'attr_name', tuple('key')) son válidos.

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:

Etiqueta Descripción Obligatorio
name Nombre de la columna.
type Tipo 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_value Valor 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).
expression Expresió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
hierarchical Si es true, el atributo contiene el valor de la clave padre de la clave actual. Consulte Hierarchical Dictionaries.

Valor predeterminado: false.
No
injective Indicador 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_id Indicador que muestra si la consulta se ejecuta para un documento de MongoDB mediante ObjectID.

Valor predeterminado: false.
Navigation