Clave y campos del diccionario 

El <structure> cláusula describe la clave del diccionario y los campos disponibles para consultas.

Descripción XML:

<dictionary>
    <structure>
        <id>
            <name>Id</name>
        </id>

        <attribute>
            <!-- Attribute parameters -->
        </attribute>

        ...

    </structure>
</dictionary>

Los atributos se describen en los elementos:

Consulta DDL:

CREATE DICTIONARY dict_name (
    Id UInt64,
    -- attributes
)
PRIMARY KEY Id
...

Los atributos se describen en el cuerpo de la consulta:

Clave 

ClickHouse admite los siguientes tipos de claves:

  • Tecla numérica. UInt64. Definido en el <id> etiqueta o usando PRIMARY KEY palabra clave.
  • Clave compuesta. Conjunto de valores de diferentes tipos. Definido en la etiqueta <key> o PRIMARY KEY palabra clave.

Una estructura xml puede contener <id> o <key>. La consulta DDL debe contener PRIMARY KEY.

Tecla numérica 

Tipo: UInt64.

Ejemplo de configuración:

<id>
    <name>Id</name>
</id>

Campos de configuración:

  • name – The name of the column with keys.

Para consulta DDL:

CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
  • PRIMARY KEY – The name of the column with keys.

Clave compuesta 

La clave puede ser un tuple de cualquier tipo de campo. El diseño en este caso debe ser complex_key_hashed o complex_key_cache.

La estructura clave se establece en el elemento <key>. Los campos clave se especifican en el mismo formato que el diccionario atributo. 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 String
    ...
)
PRIMARY KEY field1, field2
...

Para una consulta al dictGet* función, una tupla se pasa como la clave. Ejemplo: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).

Atributo 

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>

o

CREATE DICTIONARY somename (
    Name ClickHouseDataType DEFAULT '' EXPRESSION rand64() HIERARCHICAL INJECTIVE IS_OBJECT_ID
)

Campos de configuración:

EtiquetaDescripciRequerir
nameNombre de columna.
typeTipo de datos ClickHouse.
ClickHouse intenta convertir el valor del diccionario al tipo de datos especificado. Por ejemplo, para MySQL, el campo podría ser TEXT, VARCHAR, o BLOB en la tabla fuente de MySQL, pero se puede cargar como String en ClickHouse.
NULL no es compatible.
null_valueValor predeterminado para un elemento no existente.
En el ejemplo, es una cadena vacía. No se puede utilizar NULL en este campo.
expressionExpresion que ClickHouse ejecuta en el valor.
La expresión puede ser un nombre de columna en la base de datos SQL remota. Por lo tanto, puede usarlo para crear un alias para la columna remota.

Valor predeterminado: sin expresión.
No
hierarchicalSi true el atributo contiene el valor de una clave primaria para la clave actual. Ver Diccionarios jerárquicos.

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

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

Valor predeterminado: false.
No

Ver también 

Clasificación: 1 - 1 voto

¿Este contenido fue útil?
★☆☆☆☆