> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Configuración de la clave y de los atributos del diccionario

# Atributos del diccionario

<Tip>
  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](/es/products/cloud/guides/cloud-compatibility).
</Tip>

La cláusula `structure` describe la clave del diccionario y los campos disponibles para las consultas.

Descripción XML:

```xml theme={null}
<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:

```sql theme={null}
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.

<div id="key">
  ## Clave
</div>

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

<Note>
  No debe describir la clave como un atributo.
</Note>

<div id="numeric-key">
  ### Clave numérica
</div>

Tipo: `UInt64`.

Ejemplo de configuración:

```xml theme={null}
<id>
    <name>Id</name>
</id>
```

Campos de configuración:

* `name` – El nombre de la columna con claves.

Para la sentencia DDL:

```sql theme={null}
CREATE DICTIONARY (
    Id UInt64,
    ...
)
PRIMARY KEY Id
...
```

* `PRIMARY KEY` – El nombre de la columna que contiene las claves.

<div id="composite-key">
  ### Clave compuesta
</div>

La clave puede ser una `tuple` formada por campos de cualquier tipo. El [layout](/es/reference/statements/create/dictionary/layouts/overview) en este caso debe ser `complex_key_hashed` o `complex_key_cache`.

<Tip>
  Una clave compuesta puede constar de un solo elemento. Esto permite, por ejemplo, usar una cadena como clave.
</Tip>

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](#attributes) del diccionario. Ejemplo:

```xml theme={null}
<structure>
    <key>
        <attribute>
            <name>field1</name>
            <type>String</type>
        </attribute>
        <attribute>
            <name>field2</name>
            <type>UInt32</type>
        </attribute>
        ...
    </key>
...
```

o

```sql theme={null}
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))`.

<div id="attributes">
  ## Atributos
</div>

Ejemplo de configuración:

```xml theme={null}
<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

```sql theme={null}
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.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Sí          |
| `type`                                             | Tipo de dato de ClickHouse: [UInt8](/es/reference/data-types/int-uint), [UInt16](/es/reference/data-types/int-uint), [UInt32](/es/reference/data-types/int-uint), [UInt64](/es/reference/data-types/int-uint), [Int8](/es/reference/data-types/int-uint), [Int16](/es/reference/data-types/int-uint), [Int32](/es/reference/data-types/int-uint), [Int64](/es/reference/data-types/int-uint), [Float32](/es/reference/data-types/float), [Float64](/es/reference/data-types/float), [UUID](/es/reference/data-types/uuid), [Decimal32](/es/reference/data-types/decimal), [Decimal64](/es/reference/data-types/decimal), [Decimal128](/es/reference/data-types/decimal), [Decimal256](/es/reference/data-types/decimal),[Date](/es/reference/data-types/date), [Date32](/es/reference/data-types/date32), [DateTime](/es/reference/data-types/datetime), [DateTime64](/es/reference/data-types/datetime64), [String](/es/reference/data-types/string), [Array](/es/reference/data-types/array).<br />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.<br />Actualmente, [Nullable](/es/reference/data-types/nullable) se admite para los diccionarios [Flat](/es/reference/statements/create/dictionary/layouts/flat), [Hashed](/es/reference/statements/create/dictionary/layouts/hashed), [ComplexKeyHashed](/es/reference/statements/create/dictionary/layouts/hashed#complex_key_hashed), [Direct](/es/reference/statements/create/dictionary/layouts/direct), [ComplexKeyDirect](/es/reference/statements/create/dictionary/layouts/direct#complex_key_direct), [RangeHashed](/es/reference/statements/create/dictionary/layouts/range-hashed), Polygon, [Cache](/es/reference/statements/create/dictionary/layouts/cache), [ComplexKeyCache](/es/reference/statements/create/dictionary/layouts/cache), [SSDCache](/es/reference/statements/create/dictionary/layouts/ssd-cache), [SSDComplexKeyCache](/es/reference/statements/create/dictionary/layouts/ssd-cache#complex_key_ssd_cache). En los diccionarios [IPTrie](/es/reference/statements/create/dictionary/layouts/ip-trie), no se admiten tipos `Nullable`. | Sí          |
| `null_value`                                       | Valor predeterminado para un elemento que no existe.<br />En el ejemplo, es una cadena vacía. El valor [NULL](/es/reference/syntax#null) solo puede usarse para los tipos `Nullable` (consulte la línea anterior con la descripción de los tipos).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Sí          |
| `expression`                                       | [Expresión](/es/reference/syntax#expressions) que ClickHouse ejecuta sobre el valor.<br />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.<br /><br />Valor predeterminado: sin expresión.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | No          |
| <a name="hierarchical-dict-attr" /> `hierarchical` | Si es `true`, el atributo contiene el valor de la clave padre de la clave actual. Consulte [Hierarchical Dictionaries](/es/reference/statements/create/dictionary/layouts/hierarchical).<br /><br />Valor predeterminado: `false`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | No          |
| `injective`                                        | Indicador que muestra si el mapeo `id -> attribute` es [inyectivo](https://en.wikipedia.org/wiki/Injective_function).<br />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.<br /><br />Valor predeterminado: `false`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | No          |
| `is_object_id`                                     | Indicador que muestra si la consulta se ejecuta para un documento de MongoDB mediante `ObjectID`.<br /><br />Valor predeterminado: `false`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |             |
