> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentación de las funciones para trabajar con diccionarios

# Funciones para trabajar con diccionarios

<Note>
  Para los diccionarios creados mediante [consultas DDL](/docs/es/reference/statements/create/dictionary), el parámetro `dict_name` debe especificarse por completo, como `<database>.<dict_name>`. De lo contrario, se usa la base de datos actual.
</Note>

Para obtener información sobre cómo conectar y configurar diccionarios, consulta [Diccionarios](/docs/es/reference/statements/create/dictionary).

<div id="example-dictionary">
  ## Diccionarios de ejemplo
</div>

Los ejemplos de esta sección usan los siguientes diccionarios. Puede crearlos en ClickHouse
para ejecutar los ejemplos de las funciones que se describen a continuación.

<Accordion title="Diccionario de ejemplo para las funciones dictGet\<T\> y dictGet\<T\>OrDefault">
  ```sql theme={null}
  -- Crear una tabla con todos los tipos de datos requeridos
  CREATE TABLE all_types_test (
      `id` UInt32,
      
      -- Tipo String
      `String_value` String,
      
      -- Tipos enteros sin signo
      `UInt8_value` UInt8,
      `UInt16_value` UInt16,
      `UInt32_value` UInt32,
      `UInt64_value` UInt64,
      
      -- Tipos enteros con signo
      `Int8_value` Int8,
      `Int16_value` Int16,
      `Int32_value` Int32,
      `Int64_value` Int64,
      
      -- Tipos de punto flotante
      `Float32_value` Float32,
      `Float64_value` Float64,
      
      -- Tipos de fecha y hora
      `Date_value` Date,
      `DateTime_value` DateTime,
      
      -- Tipos de red
      `IPv4_value` IPv4,
      `IPv6_value` IPv6,
      
      -- Tipo UUID
      `UUID_value` UUID
  ) ENGINE = MergeTree() 
  ORDER BY id;
  ```

  ```sql theme={null}
  -- Insertar datos de prueba
  INSERT INTO all_types_test VALUES
  (
      1,                              -- id
      'ClickHouse',                   -- String
      100,                            -- UInt8
      5000,                           -- UInt16
      1000000,                        -- UInt32
      9223372036854775807,            -- UInt64
      -100,                           -- Int8
      -5000,                          -- Int16
      -1000000,                       -- Int32
      -9223372036854775808,           -- Int64
      123.45,                         -- Float32
      987654.123456,                  -- Float64
      '2024-01-15',                   -- Date
      '2024-01-15 10:30:00',          -- DateTime
      '192.168.1.1',                  -- IPv4
      '2001:db8::1',                  -- IPv6
      '550e8400-e29b-41d4-a716-446655440000' -- UUID
  )
  ```

  ```sql theme={null}
  -- Crear diccionario
  CREATE DICTIONARY all_types_dict
  (
      id UInt32,
      String_value String,
      UInt8_value UInt8,
      UInt16_value UInt16,
      UInt32_value UInt32,
      UInt64_value UInt64,
      Int8_value Int8,
      Int16_value Int16,
      Int32_value Int32,
      Int64_value Int64,
      Float32_value Float32,
      Float64_value Float64,
      Date_value Date,
      DateTime_value DateTime,
      IPv4_value IPv4,
      IPv6_value IPv6,
      UUID_value UUID
  )
  PRIMARY KEY id
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' TABLE 'all_types_test' DB 'default'))
  LAYOUT(HASHED())
  LIFETIME(MIN 300 MAX 600);
  ```
</Accordion>

<Accordion title="Diccionario de ejemplo para dictGetAll">
  Cree una tabla para almacenar los datos del diccionario regexp tree:

  ```sql theme={null}
  CREATE TABLE regexp_os(
      id UInt64,
      parent_id UInt64,
      regexp String,
      keys Array(String),
      values Array(String)
  )
  ENGINE = Memory;
  ```

  Inserte datos en la tabla:

  ```sql theme={null}
  INSERT INTO regexp_os 
  SELECT *
  FROM s3(
      'https://datasets-documentation.s3.eu-west-3.amazonaws.com/' ||
      'user_agent_regex/regexp_os.csv'
  );
  ```

  Cree el diccionario regexp tree:

  ```sql theme={null}
  CREATE DICTIONARY regexp_tree
  (
      regexp String,
      os_replacement String DEFAULT 'Other',
      os_v1_replacement String DEFAULT '0',
      os_v2_replacement String DEFAULT '0',
      os_v3_replacement String DEFAULT '0',
      os_v4_replacement String DEFAULT '0'
  )
  PRIMARY KEY regexp
  SOURCE(CLICKHOUSE(TABLE 'regexp_os'))
  LIFETIME(MIN 0 MAX 0)
  LAYOUT(REGEXP_TREE);
  ```
</Accordion>

<Accordion title="Ejemplo de diccionario con clave de rango">
  Cree la tabla de entrada:

  ```sql theme={null}
  CREATE TABLE range_key_dictionary_source_table
  (
      key UInt64,
      start_date Date,
      end_date Date,
      value String,
      value_nullable Nullable(String)
  )
  ENGINE = TinyLog();
  ```

  Inserte los datos en la tabla de entrada:

  ```sql theme={null}
  INSERT INTO range_key_dictionary_source_table VALUES(1, toDate('2019-05-20'), toDate('2019-05-20'), 'First', 'First');
  INSERT INTO range_key_dictionary_source_table VALUES(2, toDate('2019-05-20'), toDate('2019-05-20'), 'Second', NULL);
  INSERT INTO range_key_dictionary_source_table VALUES(3, toDate('2019-05-20'), toDate('2019-05-20'), 'Third', 'Third');
  ```

  Cree el diccionario:

  ```sql theme={null}
  CREATE DICTIONARY range_key_dictionary
  (
      key UInt64,
      start_date Date,
      end_date Date,
      value String,
      value_nullable Nullable(String)
  )
  PRIMARY KEY key
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT tcpPort() TABLE 'range_key_dictionary_source_table'))
  LIFETIME(MIN 1 MAX 1000)
  LAYOUT(RANGE_HASHED())
  RANGE(MIN start_date MAX end_date);
  ```
</Accordion>

<Accordion title="Ejemplo de diccionario con clave compleja">
  Cree la tabla de origen:

  ```sql theme={null}
  CREATE TABLE dict_mult_source
  (
  id UInt32,
  c1 UInt32,
  c2 String
  ) ENGINE = Memory;
  ```

  Inserte los datos en la tabla de origen:

  ```sql theme={null}
  INSERT INTO dict_mult_source VALUES
  (1, 1, '1'),
  (2, 2, '2'),
  (3, 3, '3');
  ```

  Cree el diccionario:

  ```sql theme={null}
  CREATE DICTIONARY ext_dict_mult
  (
      id UInt32,
      c1 UInt32,
      c2 String
  )
  PRIMARY KEY id
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' TABLE 'dict_mult_source' DB 'default'))
  LAYOUT(FLAT())
  LIFETIME(MIN 0 MAX 0);
  ```
</Accordion>

<Accordion title="Ejemplo de diccionario jerárquico">
  Cree la tabla de origen:

  ```sql theme={null}
  CREATE TABLE hierarchy_source
  (
    id UInt64,
    parent_id UInt64,
    name String
  ) ENGINE = Memory;
  ```

  Inserte los datos en la tabla de origen:

  ```sql theme={null}
  INSERT INTO hierarchy_source VALUES
  (0, 0, 'Root'),
  (1, 0, 'Level 1 - Node 1'),
  (2, 1, 'Level 2 - Node 2'),
  (3, 1, 'Level 2 - Node 3'),
  (4, 2, 'Level 3 - Node 4'),
  (5, 2, 'Level 3 - Node 5'),
  (6, 3, 'Level 3 - Node 6');

  -- 0 (Raíz)
  -- └── 1 (Nivel 1 - Nodo 1)
  --     ├── 2 (Nivel 2 - Nodo 2)
  --     │   ├── 4 (Nivel 3 - Nodo 4)
  --     │   └── 5 (Nivel 3 - Nodo 5)
  --     └── 3 (Nivel 2 - Nodo 3)
  --         └── 6 (Nivel 3 - Nodo 6)
  ```

  Cree el diccionario:

  ```sql theme={null}
  CREATE DICTIONARY hierarchical_dictionary
  (
      id UInt64,
      parent_id UInt64 HIERARCHICAL,
      name String
  )
  PRIMARY KEY id
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' TABLE 'hierarchy_source' DB 'default'))
  LAYOUT(HASHED())
  LIFETIME(MIN 300 MAX 600);
  ```
</Accordion>

<div id="passing-keys">
  ## Pasar claves a las funciones de diccionario
</div>

El argumento de clave (`id_expr`) de funciones como `dictGet`, `dictGetOrDefault`, `dictGetOrNull` y `dictHas` depende de la clave del diccionario:

* Para un diccionario con una **clave simple** (`UInt64`), pase directamente el valor de la clave:

```sql theme={null}
SELECT dictGet('simple_key_dictionary', 'attr_name', toUInt64(1));
```

* Para un diccionario con una **clave compuesta (compleja)** de más de un atributo, pase los valores de la clave como una tupla:

```sql theme={null}
SELECT dictGet('complex_key_dictionary', 'attr_name', ('value_for_field1', 42));
```

* Cuando la **clave compuesta consta de un único atributo**, el valor de la clave puede pasarse directamente, sin envolverlo en `tuple`. Ambos ejemplos siguientes son válidos y equivalentes:

```sql theme={null}
SELECT dictGet('complex_key_dictionary', 'attr_name', 'key');
SELECT dictGet('complex_key_dictionary', 'attr_name', tuple('key'));
```

Esto también se aplica a los diccionarios `ip_trie`, cuya clave es un único atributo. La dirección IP que se va a consultar puede pasarse directamente:

```sql theme={null}
SELECT dictGet('ip_trie_dictionary', 'attr_name', toIPv4('202.79.32.10'));
```

{/*AUTOGENERATED_START*/}

<div id="dictGet">
  ## dictGet
</div>

Introducido en: v18.16.0

Obtiene valores de un diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGet('dict_name', attr_names, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_names` — Nombre de la columna del diccionario o tupla de nombres de columnas. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Para un diccionario con una clave simple, una expresión que devuelve un valor `UInt64`. Para un diccionario con una clave compuesta (compleja), una expresión que devuelve una tupla con los valores de la clave. Si la clave compuesta consta de un único atributo, su valor puede pasarse directamente, sin envolverlo en `tuple`. [`UInt64`](/docs/es/reference/data-types/int-uint) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a id\_expr si se encuentra la clave.
Si no se encuentra la clave, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

**Ejemplos**

**Obtener un único atributo**

```sql title=Query theme={null}
CREATE TABLE ext_dict_test_source (id UInt32, c1 UInt32, c2 String) ENGINE = Memory;
INSERT INTO ext_dict_test_source VALUES (1, 1, '1'), (2, 2, '2'), (3, 3, '3');
CREATE DICTIONARY ext_dict_test (id UInt32, c1 UInt32, c2 String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'ext_dict_test_source' DB currentDatabase())) LAYOUT(FLAT()) LIFETIME(MIN 0 MAX 0);
SELECT dictGet('ext_dict_test', 'c1', toUInt64(1)) AS val
```

```response title=Response theme={null}
1
```

**Múltiples atributos**

```sql title=Query theme={null}
CREATE TABLE dict_mult_source (id UInt32, c1 UInt32, c2 String) ENGINE = Memory;
INSERT INTO dict_mult_source VALUES (1, 1, '1'), (2, 2, '2'), (3, 3, '3');
CREATE DICTIONARY ext_dict_mult (id UInt32, c1 UInt32, c2 String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'dict_mult_source' DB currentDatabase())) LAYOUT(FLAT()) LIFETIME(MIN 0 MAX 0);
SELECT
    dictGet('ext_dict_mult', ('c1','c2'), number + 1) AS val,
    toTypeName(val) AS type
FROM system.numbers
LIMIT 3;
```

```response title=Response theme={null}
┌─val─────┬─type───────────┐
│ (1,'1') │ Tuple(        ↴│
│         │↳    c1 UInt32,↴│
│         │↳    c2 String) │
│ (2,'2') │ Tuple(        ↴│
│         │↳    c1 UInt32,↴│
│         │↳    c2 String) │
│ (3,'3') │ Tuple(        ↴│
│         │↳    c1 UInt32,↴│
│         │↳    c2 String) │
└─────────┴────────────────┘
```

<div id="dictGetAll">
  ## dictGetAll
</div>

Introducido en: v23.5.0

Recupera los valores de los atributos de todos los nodos que coincidieron con cada clave en un [diccionario regexp tree](/docs/es/reference/statements/create/dictionary/layouts/regexp-tree).

Además de devolver valores del tipo `Array(T)` en lugar de `T`, esta función se comporta de manera similar a [`dictGet`](#dictGet).

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetAll(dict_name, attr_names, id_expr[, limit])
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_names` — Nombre de la columna del diccionario o tupla de nombres de columnas. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `limit` — Opcional. Longitud máxima de cada array de valores devuelto. Al truncar, los nodos hijo tienen prioridad sobre los nodos padre; en caso contrario, se respeta el orden de lista definido para el diccionario regexp tree. Si no se especifica, la longitud del array es ilimitada. [`UInt*`](/docs/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un array de valores de los atributos del diccionario que corresponden a `id_expr` para cada atributo especificado en `attr_names`.
Si no hay ninguna clave correspondiente a `id_expr` en el diccionario, se devuelve un array vacío.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

[`Array(T)`](/docs/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE regexp_os (id UInt64, parent_id UInt64, regexp String, keys Array(String), values Array(String)) ENGINE = Memory;
INSERT INTO regexp_os VALUES
    (1, 0, 'Linux',      ['os_replacement'], ['Linux']),
    (2, 1, 'Android',    ['os_replacement'], ['Android']),
    (3, 2, 'Android 1',  ['os_replacement'], ['Android']),
    (4, 3, 'Android 12', ['os_replacement'], ['Android']);
CREATE DICTIONARY regexp_tree (regexp String, os_replacement String DEFAULT 'Other') PRIMARY KEY regexp SOURCE(CLICKHOUSE(TABLE 'regexp_os' DB currentDatabase())) LIFETIME(MIN 0 MAX 0) LAYOUT(REGEXP_TREE);
SELECT
    'Mozilla/5.0 (Linux; Android 12; SM-G998B) Mobile Safari/537.36' AS user_agent,

    -- This will match ALL applicable patterns
    dictGetAll('regexp_tree', 'os_replacement', 'Mozilla/5.0 (Linux; Android 12; SM-G998B) Mobile Safari/537.36') AS all_matches,

    -- This returns only the first match
    dictGet('regexp_tree', 'os_replacement', 'Mozilla/5.0 (Linux; Android 12; SM-G998B) Mobile Safari/537.36') AS first_match;
```

```response title=Response theme={null}
┌─user_agent─────────────────────────────────────────────────────┬─all_matches─────────────────────────────┬─first_match─┐
│ Mozilla/5.0 (Linux; Android 12; SM-G998B) Mobile Safari/537.36 │ ['Android','Android','Android','Linux'] │ Android     │
└────────────────────────────────────────────────────────────────┴─────────────────────────────────────────┴─────────────┘
```

<div id="dictGetChildren">
  ## dictGetChildren
</div>

Introducido en: v21.4.0

Devuelve los hijos de primer nivel como un array de índices. Es la transformación inversa de [dictGetHierarchy](#dictGetHierarchy).

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetChildren(dict_name, key)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `key` — Clave que se va a comprobar. [`const String`](/docs/es/reference/data-types/string)

**Valor devuelto**

Devuelve los hijos de primer nivel de la clave. [`Array(UInt64)`](/docs/es/reference/data-types/array)

**Ejemplos**

**Obtener los hijos de primer nivel de un diccionario**

```sql title=Query theme={null}
CREATE TABLE hierarchy_source (id UInt64, parent_id UInt64, name String) ENGINE = Memory;
INSERT INTO hierarchy_source VALUES (0, 0, 'Root'), (1, 0, 'Level 1 - Node 1'), (2, 1, 'Level 2 - Node 2'), (3, 1, 'Level 2 - Node 3'), (4, 2, 'Level 3 - Node 4'), (5, 2, 'Level 3 - Node 5'), (6, 3, 'Level 3 - Node 6');
CREATE DICTIONARY hierarchical_dictionary (id UInt64, parent_id UInt64 HIERARCHICAL, name String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'hierarchy_source' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetChildren('hierarchical_dictionary', 2);
```

```response title=Response theme={null}
┌─dictGetChild⋯ionary', 2)─┐
│ [4,5]                    │
└──────────────────────────┘
```

<div id="dictGetDate">
  ## dictGetDate
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo del diccionario al tipo de dato `Date`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetDate(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
en caso contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Date_value Date) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '2020-01-01');
CREATE DICTIONARY all_types_dict (id UInt32, Date_value Date) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetDate('all_types_dict', 'Date_value', 1)
```

```response title=Response theme={null}
┌─dictGetDate(⋯_value', 1)─┐
│               2020-01-01 │
└──────────────────────────┘
```

<div id="dictGetDateOrDefault">
  ## dictGetDateOrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo del diccionario al tipo de dato `Date`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetDateOrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Date_value Date) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '2024-01-15');
CREATE DICTIONARY all_types_dict (id UInt32, Date_value Date) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetDate('all_types_dict', 'Date_value', 1);

-- for key which does not exist, returns the provided default value
SELECT dictGetDateOrDefault('all_types_dict', 'Date_value', 999, toDate('1970-01-01'));
```

```response title=Response theme={null}
┌─dictGetDate(⋯_value', 1)─┐
│               2024-01-15 │
└──────────────────────────┘
┌─dictGetDateO⋯70-01-01'))─┐
│               1970-01-01 │
└──────────────────────────┘
```

<div id="dictGetDateTime">
  ## dictGetDateTime
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo del diccionario al tipo de dato `DateTime`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetDateTime(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, DateTime_value DateTime) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '2024-01-15 10:30:00');
CREATE DICTIONARY all_types_dict (id UInt32, DateTime_value DateTime) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetDateTime('all_types_dict', 'DateTime_value', 1)
```

```response title=Response theme={null}
┌─dictGetDateT⋯_value', 1)─┐
│      2024-01-15 10:30:00 │
└──────────────────────────┘
```

<div id="dictGetDateTimeOrDefault">
  ## dictGetDateTimeOrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo del diccionario al tipo de dato `DateTime`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetDateTimeOrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor(es) que se devuelve(n) si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el valor proporcionado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, DateTime_value DateTime) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '2024-01-15 10:30:00');
CREATE DICTIONARY all_types_dict (id UInt32, DateTime_value DateTime) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetDateTime('all_types_dict', 'DateTime_value', 1);

-- for key which does not exist, returns the provided default value
SELECT dictGetDateTimeOrDefault('all_types_dict', 'DateTime_value', 999, toDateTime('1970-01-01 00:00:00'));
```

```response title=Response theme={null}
┌─dictGetDateT⋯_value', 1)─┐
│      2024-01-15 10:30:00 │
└──────────────────────────┘
┌─dictGetDateT⋯0:00:00'))──┐
│      1970-01-01 00:00:00 │
└──────────────────────────┘
```

<div id="dictGetDescendants">
  ## dictGetDescendants
</div>

Introducido en: v21.4.0

Devuelve todos los descendientes como si la función [`dictGetChildren`](#dictGetChildren) se aplicara recursivamente `level` veces.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetDescendants(dict_name, key, level)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `key` — Clave que se va a comprobar. [`const String`](/docs/es/reference/data-types/string)
* `level` — Nivel de jerarquía de la clave que se va a comprobar. Si `level = 0`, devuelve todos los descendientes hasta el final. [`UInt8`](/docs/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve los descendientes de la clave. [`Array(UInt64)`](/docs/es/reference/data-types/array)

**Ejemplos**

**Obtener los hijos de primer nivel de un diccionario**

```sql title=Query theme={null}
CREATE TABLE hierarchy_source (id UInt64, parent_id UInt64, name String) ENGINE = Memory;
INSERT INTO hierarchy_source VALUES (0, 0, 'Root'), (1, 0, 'Level 1 - Node 1'), (2, 1, 'Level 2 - Node 2'), (3, 1, 'Level 2 - Node 3'), (4, 2, 'Level 3 - Node 4'), (5, 2, 'Level 3 - Node 5'), (6, 3, 'Level 3 - Node 6');
CREATE DICTIONARY hierarchical_dictionary (id UInt64, parent_id UInt64 HIERARCHICAL, name String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'hierarchy_source' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- consider the following hierarchical dictionary:
-- 0 (Root)
-- └── 1 (Level 1 - Node 1)
--     ├── 2 (Level 2 - Node 2)
--     │   ├── 4 (Level 3 - Node 4)
--     │   └── 5 (Level 3 - Node 5)
--     └── 3 (Level 2 - Node 3)
--         └── 6 (Level 3 - Node 6)

SELECT dictGetDescendants('hierarchical_dictionary', 0, 2)
```

```response title=Response theme={null}
┌─dictGetDesce⋯ary', 0, 2)─┐
│ [3,2]                    │
└──────────────────────────┘
```

<div id="dictGetFloat32">
  ## dictGetFloat32
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Float32`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetFloat32(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Float32_value Float32) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -123.123);
CREATE DICTIONARY all_types_dict (id UInt32, Float32_value Float32) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetFloat32('all_types_dict', 'Float32_value', 1)
```

```response title=Response theme={null}
┌─dictGetFloat⋯_value', 1)─┐
│               -123.123   │
└──────────────────────────┘
```

<div id="dictGetFloat32OrDefault">
  ## dictGetFloat32OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Float32`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes con los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetFloat32OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor proporcionado como parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Float32_value Float32) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 123.45);
CREATE DICTIONARY all_types_dict (id UInt32, Float32_value Float32) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetFloat32('all_types_dict', 'Float32_value', 1);

-- for key which does not exist, returns the provided default value (-1.0)
SELECT dictGetFloat32OrDefault('all_types_dict', 'Float32_value', 999, -1.0);
```

```response title=Response theme={null}
┌─dictGetFloat32('all_types_dict', 'Float32_value', 1)─┐
│                                               123.45 │
└──────────────────────────────────────────────────────┘
┌─dictGetFloat32OrDefault('all_types_dict', 'Float32_value', 999, -1.)─┐
│                                                                   -1 │
└──────────────────────────────────────────────────────────────────────┘
```

<div id="dictGetFloat64">
  ## dictGetFloat64
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Float64`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados distintos para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetFloat64(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Float64_value Float64) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -123.123);
CREATE DICTIONARY all_types_dict (id UInt32, Float64_value Float64) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetFloat64('all_types_dict', 'Float64_value', 1)
```

```response title=Response theme={null}
┌─dictGetFloat⋯_value', 1)─┐
│                 -123.123 │
└──────────────────────────┘
```

<div id="dictGetFloat64OrDefault">
  ## dictGetFloat64OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Float64`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetFloat64OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor proporcionado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Float64_value Float64) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 987654.123456);
CREATE DICTIONARY all_types_dict (id UInt32, Float64_value Float64) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetFloat64('all_types_dict', 'Float64_value', 1);

-- for key which does not exist, returns the provided default value (nan)
SELECT dictGetFloat64OrDefault('all_types_dict', 'Float64_value', 999, nan);
```

```response title=Response theme={null}
┌─dictGetFloat⋯_value', 1)─┐
│            987654.123456 │
└──────────────────────────┘
┌─dictGetFloat⋯, 999, nan)─┐
│                      nan │
└──────────────────────────┘
```

<div id="dictGetHierarchy">
  ## dictGetHierarchy
</div>

Introducido en: v1.1.0

Crea un array que contiene todos los ancestros de una clave en el [diccionario jerárquico](/docs/es/reference/statements/create/dictionary/layouts/hierarchical#hierarchical-dictionaries).

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetHierarchy(dict_name, key)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `key` — Valor de la clave. [`const String`](/docs/es/reference/data-types/string)

**Valor devuelto**

Devuelve los padres para la clave. [`Array(UInt64)`](/docs/es/reference/data-types/array)

**Ejemplos**

**Obtener la jerarquía para una clave**

```sql title=Query theme={null}
CREATE TABLE hierarchy_source (id UInt64, parent_id UInt64, name String) ENGINE = Memory;
INSERT INTO hierarchy_source VALUES (0, 0, 'Root'), (1, 0, 'Level 1 - Node 1'), (2, 1, 'Level 2 - Node 2'), (3, 1, 'Level 2 - Node 3'), (4, 2, 'Level 3 - Node 4'), (5, 2, 'Level 3 - Node 5'), (6, 3, 'Level 3 - Node 6');
CREATE DICTIONARY hierarchical_dictionary (id UInt64, parent_id UInt64 HIERARCHICAL, name String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'hierarchy_source' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetHierarchy('hierarchical_dictionary', 5)
```

```response title=Response theme={null}
┌─dictGetHiera⋯ionary', 5)─┐
│ [5,2,1]                  │
└──────────────────────────┘
```

<div id="dictGetIPv4">
  ## dictGetIPv4
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `IPv4`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetIPv4(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, IPv4_value IPv4) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '192.168.0.1');
CREATE DICTIONARY all_types_dict (id UInt32, IPv4_value IPv4) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetIPv4('all_types_dict', 'IPv4_value', 1)
```

```response title=Response theme={null}
┌─dictGetIPv4('all_⋯ 'IPv4_value', 1)─┐
│ 192.168.0.1                         │
└─────────────────────────────────────┘
```

<div id="dictGetIPv4OrDefault">
  ## dictGetIPv4OrDefault
</div>

Introducido en: v23.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `IPv4`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetIPv4OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, IPv4_value IPv4) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '192.168.0.1');
CREATE DICTIONARY all_types_dict (id UInt32, IPv4_value IPv4) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetIPv4('all_types_dict', 'IPv4_value', 1);

-- for key which does not exist, returns the provided default value
SELECT dictGetIPv4OrDefault('all_types_dict', 'IPv4_value', 999, toIPv4('0.0.0.0'));
```

```response title=Response theme={null}
┌─dictGetIPv4('all_types_dict', 'IPv4_value', 1)─┐
│ 192.168.0.1                                    │
└────────────────────────────────────────────────┘
┌─dictGetIPv4OrDefault('all_types_dict', 'IPv4_value', 999, toIPv4('0.0.0.0'))─┐
│ 0.0.0.0                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘
```

<div id="dictGetIPv6">
  ## dictGetIPv6
</div>

Introducido en: v23.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `IPv6`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetIPv6(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`,
en caso contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, IPv6_value IPv6) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '2001:db8:85a3::8a2e:370:7334');
CREATE DICTIONARY all_types_dict (id UInt32, IPv6_value IPv6) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetIPv6('all_types_dict', 'IPv6_value', 1)
```

```response title=Response theme={null}
┌─dictGetIPv6('all_⋯ 'IPv6_value', 1)─┐
│ 2001:db8:85a3::8a2e:370:7334        │
└─────────────────────────────────────┘
```

<div id="dictGetIPv6OrDefault">
  ## dictGetIPv6OrDefault
</div>

Introducido en: v23.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `IPv6`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetIPv6OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado como parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, IPv6_value IPv6) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '2001:db8:85a3::8a2e:370:7334');
CREATE DICTIONARY all_types_dict (id UInt32, IPv6_value IPv6) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetIPv6('all_types_dict', 'IPv6_value', 1);

-- for key which does not exist, returns the provided default value
SELECT dictGetIPv6OrDefault('all_types_dict', 'IPv6_value', 999, '::1'::IPv6);
```

```response title=Response theme={null}
┌─dictGetIPv6('all_types_dict', 'IPv6_value', 1)─┐
│ 2001:db8:85a3::8a2e:370:7334                   │
└────────────────────────────────────────────────┘
┌─dictGetIPv6OrDefault('all_types_dict', 'IPv6_value', 999, CAST('::1', 'IPv6'))─┐
│ ::1                                                                            │
└────────────────────────────────────────────────────────────────────────────────┘
```

<div id="dictGetInt16">
  ## dictGetInt16
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int16`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados distintos para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt16(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int16_value Int16) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -5000);
CREATE DICTIONARY all_types_dict (id UInt32, Int16_value Int16) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetInt16('all_types_dict', 'Int16_value', 1)
```

```response title=Response theme={null}
┌─dictGetInt16⋯_value', 1)─┐
│                    -5000 │
└──────────────────────────┘
```

<div id="dictGetInt16OrDefault">
  ## dictGetInt16OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int16`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt16OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor proporcionado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si este no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int16_value Int16) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -5000);
CREATE DICTIONARY all_types_dict (id UInt32, Int16_value Int16) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetInt16('all_types_dict', 'Int16_value', 1);

-- for key which does not exist, returns the provided default value (-1)
SELECT dictGetInt16OrDefault('all_types_dict', 'Int16_value', 999, -1);
```

```response title=Response theme={null}
┌─dictGetInt16⋯_value', 1)─┐
│                    -5000 │
└──────────────────────────┘
┌─dictGetInt16⋯', 999, -1)─┐
│                       -1 │
└──────────────────────────┘
```

<div id="dictGetInt32">
  ## dictGetInt32
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int32`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt32(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
en caso contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int32_value Int32) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -1000000);
CREATE DICTIONARY all_types_dict (id UInt32, Int32_value Int32) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetInt32('all_types_dict', 'Int32_value', 1)
```

```response title=Response theme={null}
┌─dictGetInt32⋯_value', 1)─┐
│                -1000000  │
└──────────────────────────┘
```

<div id="dictGetInt32OrDefault">
  ## dictGetInt32OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int32`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt32OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el valor pasado como parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de datos del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int32_value Int32) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -1000000);
CREATE DICTIONARY all_types_dict (id UInt32, Int32_value Int32) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetInt32('all_types_dict', 'Int32_value', 1);

-- for key which does not exist, returns the provided default value (-1)
SELECT dictGetInt32OrDefault('all_types_dict', 'Int32_value', 999, -1);
```

```response title=Response theme={null}
┌─dictGetInt32⋯_value', 1)─┐
│                -1000000  │
└──────────────────────────┘
┌─dictGetInt32⋯', 999, -1)─┐
│                       -1 │
└──────────────────────────┘
```

<div id="dictGetInt64">
  ## dictGetInt64
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int64`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt64(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int64_value Int64) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -9223372036854775807);
CREATE DICTIONARY all_types_dict (id UInt32, Int64_value Int64) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetInt64('all_types_dict', 'Int64_value', 1)
```

```response title=Response theme={null}
┌─dictGetInt64⋯_value', 1)───┐
│       -9223372036854775807 │
└────────────────────────────┘
```

<div id="dictGetInt64OrDefault">
  ## dictGetInt64OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int64`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt64OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
en caso contrario, devuelve el valor pasado como parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int64_value Int64) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -9223372036854775808);
CREATE DICTIONARY all_types_dict (id UInt32, Int64_value Int64) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetInt64('all_types_dict', 'Int64_value', 1);

-- for key which does not exist, returns the provided default value (-1)
SELECT dictGetInt64OrDefault('all_types_dict', 'Int64_value', 999, -1);
```

```response title=Response theme={null}
┌─dictGetInt64⋯_value', 1)─┐
│     -9223372036854775808 │
└──────────────────────────┘
┌─dictGetInt64⋯', 999, -1)─┐
│                       -1 │
└──────────────────────────┘
```

<div id="dictGetInt8">
  ## dictGetInt8
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int8`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt8(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para ese atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int8_value Int8) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -100);
CREATE DICTIONARY all_types_dict (id UInt32, Int8_value Int8) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetInt8('all_types_dict', 'Int8_value', 1)
```

```response title=Response theme={null}
┌─dictGetInt8(⋯_value', 1)─┐
│                     -100 │
└──────────────────────────┘
```

<div id="dictGetInt8OrDefault">
  ## dictGetInt8OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `Int8`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetInt8OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado como parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, Int8_value Int8) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, -100);
CREATE DICTIONARY all_types_dict (id UInt32, Int8_value Int8) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetInt8('all_types_dict', 'Int8_value', 1);

-- for key which does not exist, returns the provided default value (-1)
SELECT dictGetInt8OrDefault('all_types_dict', 'Int8_value', 999, -1);
```

```response title=Response theme={null}
┌─dictGetInt8(⋯_value', 1)─┐
│                     -100 │
└──────────────────────────┘
┌─dictGetInt8O⋯', 999, -1)─┐
│                       -1 │
└──────────────────────────┘
```

<div id="dictGetKeys">
  ## dictGetKeys
</div>

Introducido en: v25.12.0

Devuelve la(s) clave(s) del diccionario cuyo atributo coincide con el valor especificado. Es la inversa de la función `dictGet` para un único atributo.

Use la configuración `max_reverse_dictionary_lookup_cache_size_bytes` para limitar el tamaño de la caché de búsqueda inversa por consulta que utiliza `dictGetKeys`.
La caché almacena tuplas de claves serializadas para cada valor de atributo, a fin de evitar volver a recorrer el diccionario dentro de la misma consulta.
La caché no es persistente entre consultas. Cuando se alcanza el límite, las entradas se eliminan mediante LRU.
Esto resulta más eficaz con diccionarios grandes cuando la entrada tiene baja cardinalidad y el conjunto de trabajo cabe en la caché. Establézcalo en `0` para desactivar la caché.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetKeys('dict_name', 'attr_name', value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Atributo con el que debe coincidir. [`String`](/docs/es/reference/data-types/string)
* `value_expr` — Valor que debe coincidir con el atributo. [`Expression`](/docs/es/reference/data-types/special-data-types/expression)

**Valor devuelto**

Para diccionarios de clave única: un array de claves cuyo atributo es igual a `value_expr`. Para diccionarios de varias claves: un array de tuplas de claves cuyo atributo es igual a `value_expr`. Si no hay ningún atributo correspondiente a `value_expr` en el diccionario, se devuelve un array vacío. ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no puede convertirse al tipo de dato del atributo.

**Ejemplos**

**Uso de ejemplo**

```sql title=Query theme={null}
CREATE TABLE task_priority_source (task_id UInt64, priority_level String) ENGINE = Memory;
INSERT INTO task_priority_source VALUES (1, 'low'), (2, 'high'), (3, 'medium'), (4, 'high');
CREATE DICTIONARY task_id_to_priority_dictionary (task_id UInt64, priority_level String) PRIMARY KEY task_id SOURCE(CLICKHOUSE(TABLE 'task_priority_source' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 0 MAX 0);
SELECT arraySort(dictGetKeys('task_id_to_priority_dictionary', 'priority_level', 'high')) AS ids;
```

```response title=Response theme={null}
┌─ids───┐
│ [2,4] │
└───────┘
```

<div id="dictGetOrDefault">
  ## dictGetOrDefault
</div>

Introducido en: v18.16.0

Obtiene valores de un diccionario y devuelve un valor predeterminado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetOrDefault('dict_name', attr_names, id_expr, default_value)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_names` — Nombre de la columna del diccionario o tupla de nombres de columna. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Para un diccionario con una clave simple, una expresión que devuelve un valor `UInt64`. Para un diccionario con una clave compuesta (compleja), una expresión que devuelve una tupla con los valores de la clave. Si la clave compuesta consta de un solo atributo, su valor puede pasarse directamente, sin envolverlo en `tuple`. [`UInt64`](/docs/es/reference/data-types/int-uint) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value` — Valor predeterminado que se devuelve si no se encuentra la clave. El tipo debe coincidir con el tipo de dato del atributo.

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr` si se encuentra la clave.
Si no se encuentra la clave, devuelve el `default_value` proporcionado.

**Ejemplos**

**Obtener un valor con valor predeterminado**

```sql title=Query theme={null}
CREATE TABLE dict_mult_source (id UInt32, c1 UInt32, c2 String) ENGINE = Memory;
INSERT INTO dict_mult_source VALUES (1, 1, '1'), (2, 2, '2'), (3, 3, '3');
CREATE DICTIONARY ext_dict_mult (id UInt32, c1 UInt32, c2 String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'dict_mult_source' DB currentDatabase())) LAYOUT(FLAT()) LIFETIME(MIN 0 MAX 0);
SELECT dictGetOrDefault('ext_dict_mult', 'c1', toUInt64(999), 0) AS val
```

```response title=Response theme={null}
0
```

<div id="dictGetOrNull">
  ## dictGetOrNull
</div>

Introducido en: v21.4.0

Obtiene valores de un diccionario y devuelve NULL si la clave no se encuentra.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetOrNull('dict_name', 'attr_name', id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. Literal de cadena. - `attr_name` — Nombre de la columna que se quiere obtener. Literal de cadena. - `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario.

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr` si se encuentra la clave.
Si no se encuentra la clave, devuelve `NULL`.

**Ejemplos**

**Ejemplo con el diccionario con clave de rango**

```sql title=Query theme={null}
CREATE TABLE range_key_dictionary_source_table (key UInt64, start_date Date, end_date Date, value String, value_nullable Nullable(String)) ENGINE = TinyLog();
INSERT INTO range_key_dictionary_source_table VALUES(1, toDate('2019-05-20'), toDate('2019-05-20'), 'First', 'First');
INSERT INTO range_key_dictionary_source_table VALUES(2, toDate('2019-05-20'), toDate('2019-05-20'), 'Second', NULL);
INSERT INTO range_key_dictionary_source_table VALUES(3, toDate('2019-05-20'), toDate('2019-05-20'), 'Third', 'Third');
CREATE DICTIONARY range_key_dictionary (key UInt64, start_date Date, end_date Date, value String, value_nullable Nullable(String)) PRIMARY KEY key SOURCE(CLICKHOUSE(TABLE 'range_key_dictionary_source_table' DB currentDatabase())) LIFETIME(MIN 1 MAX 1000) LAYOUT(RANGE_HASHED()) RANGE(MIN start_date MAX end_date);
SELECT
    (number, toDate('2019-05-20')),
    dictGetOrNull('range_key_dictionary', 'value', number, toDate('2019-05-20')),
FROM system.numbers LIMIT 5 FORMAT TabSeparated;
```

```response title=Response theme={null}
(0,'2019-05-20')  \N
(1,'2019-05-20')  First
(2,'2019-05-20')  Second
(3,'2019-05-20')  Third
(4,'2019-05-20')  \N
```

<div id="dictGetRoot">
  ## dictGetRoot
</div>

Introducido en: v26.7.0

Devuelve el ancestro superior (la raíz) de una clave en un [diccionario jerárquico](/docs/es/reference/statements/create/dictionary/layouts/hierarchical#hierarchical-dictionaries).

Es un equivalente práctico de tomar el último elemento del array que devuelve [dictGetHierarchy](#dictGetHierarchy), es decir, `dictGetHierarchy(dict_name, key)[-1]`.

Si la clave es un nodo de nivel superior de la jerarquía, se devuelve la propia clave. Si la clave no está presente en el diccionario, se devuelve `0`.

<Note>
  Esta función es no determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetRoot(dict_name, key)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `key` — Valor de la clave. [`UInt64`](/docs/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve el ancestro superior (la raíz) de la clave. [`UInt64`](/docs/es/reference/data-types/int-uint)

**Ejemplos**

**Obtener la raíz de una clave**

```sql title=Query theme={null}
CREATE TABLE hierarchy_source (id UInt64, parent_id UInt64, name String) ENGINE = Memory;
INSERT INTO hierarchy_source VALUES (0, 0, 'Root'), (1, 0, 'Level 1 - Node 1'), (2, 1, 'Level 2 - Node 2'), (3, 1, 'Level 2 - Node 3'), (4, 2, 'Level 3 - Node 4'), (5, 2, 'Level 3 - Node 5'), (6, 3, 'Level 3 - Node 6');
CREATE DICTIONARY hierarchical_dictionary (id UInt64, parent_id UInt64 HIERARCHICAL, name String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'hierarchy_source' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetRoot('hierarchical_dictionary', 5)
```

```response title=Response theme={null}
┌─dictGetRoot(⋯ionary', 5)─┐
│                        1 │
└──────────────────────────┘
```

<div id="dictGetString">
  ## dictGetString
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `String`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetString(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, String_value String) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 'test string');
CREATE DICTIONARY all_types_dict (id UInt32, String_value String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetString('all_types_dict', 'String_value', 1)
```

```response title=Response theme={null}
┌─dictGetString(⋯_value', 1)─┐
│ test string                │
└────────────────────────────┘
```

<div id="dictGetStringOrDefault">
  ## dictGetStringOrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `String`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetStringOrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, String_value String) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 'test string');
CREATE DICTIONARY all_types_dict (id UInt32, String_value String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetString('all_types_dict', 'String_value', 1);

-- for key which does not exist, returns the provided default value
SELECT dictGetStringOrDefault('all_types_dict', 'String_value', 999, 'default');
```

```response title=Response theme={null}
┌─dictGetString('all_types_dict', 'String_value', 1)─┐
│ test string                                        │
└────────────────────────────────────────────────────┘
┌─dictGetStringOrDefault('all_types_dict', 'String_value', 999, 'default')─┐
│ default                                                                  │
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="dictGetUInt16">
  ## dictGetUInt16
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt16`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt16(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario que corresponde a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede interpretar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt16_value UInt16) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 5000);
CREATE DICTIONARY all_types_dict (id UInt32, UInt16_value UInt16) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetUInt16('all_types_dict', 'UInt16_value', 1)
```

```response title=Response theme={null}
┌─dictGetUInt1⋯_value', 1)─┐
│                     5000 │
└──────────────────────────┘
```

<div id="dictGetUInt16OrDefault">
  ## dictGetUInt16OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt16`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt16OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
en caso contrario, devuelve el valor pasado como parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt16_value UInt16) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 5000);
CREATE DICTIONARY all_types_dict (id UInt32, UInt16_value UInt16) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetUInt16('all_types_dict', 'UInt16_value', 1);

-- for key which does not exist, returns the provided default value (0)
SELECT dictGetUInt16OrDefault('all_types_dict', 'UInt16_value', 999, 0);
```

```response title=Response theme={null}
┌─dictGetUInt1⋯_value', 1)─┐
│                     5000 │
└──────────────────────────┘
┌─dictGetUInt1⋯e', 999, 0)─┐
│                        0 │
└──────────────────────────┘
```

<div id="dictGetUInt32">
  ## dictGetUInt32
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt32`, independientemente de la configuración del diccionario.

<Note>
  Esta función es no determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt32(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt32_value UInt32) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 1000000);
CREATE DICTIONARY all_types_dict (id UInt32, UInt32_value UInt32) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetUInt32('all_types_dict', 'UInt32_value', 1)
```

```response title=Response theme={null}
┌─dictGetUInt3⋯_value', 1)─┐
│                  1000000 │
└──────────────────────────┘
```

<div id="dictGetUInt32OrDefault">
  ## dictGetUInt32OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt32`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función es no determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt32OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt32_value UInt32) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 1000000);
CREATE DICTIONARY all_types_dict (id UInt32, UInt32_value UInt32) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetUInt32('all_types_dict', 'UInt32_value', 1);

-- for key which does not exist, returns the provided default value (0)
SELECT dictGetUInt32OrDefault('all_types_dict', 'UInt32_value', 999, 0);
```

```response title=Response theme={null}
┌─dictGetUInt3⋯_value', 1)─┐
│                  1000000 │
└──────────────────────────┘
┌─dictGetUInt3⋯e', 999, 0)─┐
│                        0 │
└──────────────────────────┘
```

<div id="dictGetUInt64">
  ## dictGetUInt64
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt64`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt64(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt64_value UInt64) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 9223372036854775807);
CREATE DICTIONARY all_types_dict (id UInt32, UInt64_value UInt64) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetUInt64('all_types_dict', 'UInt64_value', 1)
```

```response title=Response theme={null}
┌─dictGetUInt6⋯_value', 1)─┐
│      9223372036854775807 │
└──────────────────────────┘
```

<div id="dictGetUInt64OrDefault">
  ## dictGetUInt64OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt64`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado indicado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt64OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`,
en caso contrario, devuelve el valor pasado como parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt64_value UInt64) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 9223372036854775807);
CREATE DICTIONARY all_types_dict (id UInt32, UInt64_value UInt64) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetUInt64('all_types_dict', 'UInt64_value', 1);

-- for key which does not exist, returns the provideddefault value (0)
SELECT dictGetUInt64OrDefault('all_types_dict', 'UInt64_value', 999, 0);
```

```response title=Response theme={null}
┌─dictGetUInt6⋯_value', 1)─┐
│      9223372036854775807 │
└──────────────────────────┘
┌─dictGetUInt6⋯e', 999, 0)─┐
│                        0 │
└──────────────────────────┘
```

<div id="dictGetUInt8">
  ## dictGetUInt8
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt8`, independientemente de la configuración del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt8(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
en caso contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt8_value UInt8) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 100);
CREATE DICTIONARY all_types_dict (id UInt32, UInt8_value UInt8) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetUInt8('all_types_dict', 'UInt8_value', 1)
```

```response title=Response theme={null}
┌─dictGetUInt8⋯_value', 1)─┐
│                      100 │
└──────────────────────────┘
```

<div id="dictGetUInt8OrDefault">
  ## dictGetUInt8OrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UInt8`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función es no determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUInt8OrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores devueltos si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UInt8_value UInt8) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, 100);
CREATE DICTIONARY all_types_dict (id UInt32, UInt8_value UInt8) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetUInt8('all_types_dict', 'UInt8_value', 1);

-- for key which does not exist, returns the provided default value (0)
SELECT dictGetUInt8OrDefault('all_types_dict', 'UInt8_value', 999, 0);
```

```response title=Response theme={null}
┌─dictGetUInt8⋯_value', 1)─┐
│                      100 │
└──────────────────────────┘
┌─dictGetUInt8⋯e', 999, 0)─┐
│                        0 │
└──────────────────────────┘
```

<div id="dictGetUUID">
  ## dictGetUUID
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UUID`, independientemente de la configuración del diccionario.

<Note>
  Esta función es no determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUUID(dict_name, attr_name, id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Una expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el contenido del elemento `<null_value>` especificado para el atributo en la configuración del diccionario.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UUID_value UUID) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '123e4567-e89b-12d3-a456-426614174000');
CREATE DICTIONARY all_types_dict (id UInt32, UUID_value UUID) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
SELECT dictGetUUID('all_types_dict', 'UUID_value', 1)
```

```response title=Response theme={null}
┌─dictGetUUID(⋯_value', 1)─────────────┐
│ 123e4567-e89b-12d3-a456-426614174000 │
└──────────────────────────────────────┘
```

<div id="dictGetUUIDOrDefault">
  ## dictGetUUIDOrDefault
</div>

Introducido en: v1.1.0

Convierte el valor de un atributo de diccionario al tipo de dato `UUID`, independientemente de la configuración del diccionario, o devuelve el valor predeterminado proporcionado si no se encuentra la clave.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes con los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictGetUUIDOrDefault(dict_name, attr_name, id_expr, default_value_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `attr_name` — Nombre de la columna del diccionario. [`String`](/docs/es/reference/data-types/string) o [`Tuple(String)`](/docs/es/reference/data-types/tuple)
* `id_expr` — Valor de la clave. Expresión que devuelve un valor del tipo de clave del diccionario o un valor de tupla (según la configuración del diccionario). [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)
* `default_value_expr` — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave `id_expr`. [`Expression`](/docs/es/reference/data-types/special-data-types/expression) o [`Tuple(T)`](/docs/es/reference/data-types/tuple)

**Valor devuelto**

Devuelve el valor del atributo del diccionario correspondiente a `id_expr`;
de lo contrario, devuelve el valor pasado en el parámetro `default_value_expr`.

<Note>
  ClickHouse lanza una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de dato del atributo.
</Note>

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
CREATE TABLE all_types_test (id UInt32, UUID_value UUID) ENGINE = MergeTree() ORDER BY id;
INSERT INTO all_types_test VALUES (1, '550e8400-e29b-41d4-a716-446655440000');
CREATE DICTIONARY all_types_dict (id UInt32, UUID_value UUID) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'all_types_test' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- for key which exists
SELECT dictGetUUID('all_types_dict', 'UUID_value', 1);

-- for key which does not exist, returns the provided default value
SELECT dictGetUUIDOrDefault('all_types_dict', 'UUID_value', 999, '00000000-0000-0000-0000-000000000000'::UUID);
```

```response title=Response theme={null}
┌─dictGetUUID('all_types_dict', 'UUID_value', 1)─┐
│ 550e8400-e29b-41d4-a716-446655440000           │
└────────────────────────────────────────────────┘
┌─dictGetUUIDOrDefault('all_types_dict', 'UUID_value', 999, CAST('00000000-0000-0000-0000-000000000000', 'UUID'))─┐
│ 00000000-0000-0000-0000-000000000000                                                                            │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="dictHas">
  ## dictHas
</div>

Introducido en: v1.1.0

Comprueba si una clave está presente en un diccionario.

<Note>
  Esta función es no determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictHas('dict_name', id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `id_expr` — Valor de la clave [`const String`](/docs/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si la clave existe; de lo contrario, `0`. [`UInt8`](/docs/es/reference/data-types/int-uint)

**Ejemplos**

**Comprobar si existe una clave en un diccionario**

```sql title=Query theme={null}
CREATE TABLE hierarchy_source (id UInt64, parent_id UInt64, name String) ENGINE = Memory;
INSERT INTO hierarchy_source VALUES (0, 0, 'Root'), (1, 0, 'Level 1 - Node 1'), (2, 1, 'Level 2 - Node 2'), (3, 1, 'Level 2 - Node 3'), (4, 2, 'Level 3 - Node 4'), (5, 2, 'Level 3 - Node 5'), (6, 3, 'Level 3 - Node 6');
CREATE DICTIONARY hierarchical_dictionary (id UInt64, parent_id UInt64 HIERARCHICAL, name String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'hierarchy_source' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- consider the following hierarchical dictionary:
-- 0 (Root)
-- └── 1 (Level 1 - Node 1)
--     ├── 2 (Level 2 - Node 2)
--     │   ├── 4 (Level 3 - Node 4)
--     │   └── 5 (Level 3 - Node 5)
--     └── 3 (Level 2 - Node 3)
--         └── 6 (Level 3 - Node 6)

SELECT dictHas('hierarchical_dictionary', 2);
SELECT dictHas('hierarchical_dictionary', 7);
```

```response title=Response theme={null}
┌─dictHas('hie⋯ionary', 2)─┐
│                        1 │
└──────────────────────────┘
┌─dictHas('hie⋯ionary', 7)─┐
│                        0 │
└──────────────────────────┘
```

<div id="dictIsIn">
  ## dictIsIn
</div>

Introducido en: v1.1.0

Comprueba el ancestro de una clave en toda la cadena jerárquica del diccionario.

<Note>
  Esta función no es determinista: puede devolver resultados diferentes para los mismos argumentos.
</Note>

**Sintaxis**

```sql theme={null}
dictIsIn(dict_name, child_id_expr, ancestor_id_expr)
```

**Argumentos**

* `dict_name` — Nombre del diccionario. [`String`](/docs/es/reference/data-types/string)
* `child_id_expr` — Clave que se debe comprobar. [`String`](/docs/es/reference/data-types/string)
* `ancestor_id_expr` — Supuesto ancestro de la clave `child_id_expr`. [`const String`](/docs/es/reference/data-types/string)

**Valor devuelto**

Devuelve `0` si `child_id_expr` no es hijo de `ancestor_id_expr`, y `1` si `child_id_expr` es hijo de `ancestor_id_expr` o si `child_id_expr` es igual a `ancestor_id_expr`. [`UInt8`](/docs/es/reference/data-types/int-uint)

**Ejemplos**

**Comprobar la relación jerárquica**

```sql title=Query theme={null}
CREATE TABLE hierarchy_source (id UInt64, parent_id UInt64, name String) ENGINE = Memory;
INSERT INTO hierarchy_source VALUES (0, 0, 'Root'), (1, 0, 'Level 1 - Node 1'), (2, 1, 'Level 2 - Node 2'), (3, 1, 'Level 2 - Node 3'), (4, 2, 'Level 3 - Node 4'), (5, 2, 'Level 3 - Node 5'), (6, 3, 'Level 3 - Node 6');
CREATE DICTIONARY hierarchical_dictionary (id UInt64, parent_id UInt64 HIERARCHICAL, name String) PRIMARY KEY id SOURCE(CLICKHOUSE(TABLE 'hierarchy_source' DB currentDatabase())) LAYOUT(HASHED()) LIFETIME(MIN 300 MAX 600);
-- valid hierarchy
SELECT dictIsIn('hierarchical_dictionary', 6, 3);

-- invalid hierarchy
SELECT dictIsIn('hierarchical_dictionary', 3, 5);
```

```response title=Response theme={null}
┌─dictIsIn('hi⋯ary', 6, 3)─┐
│                        1 │
└──────────────────────────┘
┌─dictIsIn('hi⋯ary', 3, 5)─┐
│                        0 │
└──────────────────────────┘
```
