Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones para trabajar con diccionarios

Para obtener información sobre cómo conectar y configurar diccionarios, consulta Diccionarios.

Diccionarios de ejemplo

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.

Diccionario de ejemplo para las funciones dictGet\<T\> y dictGet\<T\>OrDefault
-- 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;
-- 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
)
-- 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);
Diccionario de ejemplo para dictGetAll

Cree una tabla para almacenar los datos del diccionario regexp tree:

CREATE TABLE regexp_os(
    id UInt64,
    parent_id UInt64,
    regexp String,
    keys Array(String),
    values Array(String)
)
ENGINE = Memory;

Inserte datos en la tabla:

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:

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);
Ejemplo de diccionario con clave de rango

Cree la tabla de entrada:

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:

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:

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);
Ejemplo de diccionario con clave compleja

Cree la tabla de origen:

CREATE TABLE dict_mult_source
(
id UInt32,
c1 UInt32,
c2 String
) ENGINE = Memory;

Inserte los datos en la tabla de origen:

INSERT INTO dict_mult_source VALUES
(1, 1, '1'),
(2, 2, '2'),
(3, 3, '3');

Cree el diccionario:

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);
Ejemplo de diccionario jerárquico

Cree la tabla de origen:

CREATE TABLE hierarchy_source
(
  id UInt64,
  parent_id UInt64,
  name String
) ENGINE = Memory;

Inserte los datos en la tabla de origen:

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:

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

Pasar claves a las funciones de diccionario

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:
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:
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:
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:

SELECT dictGet('ip_trie_dictionary', 'attr_name', toIPv4('202.79.32.10'));

dictGet

Introducido en: v18.16.0

Obtiene valores de un diccionario.

Sintaxis

dictGet('dict_name', attr_names, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_names — Nombre de la columna del diccionario o tupla de nombres de columnas. String o Tuple(String)
  • 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 o Tuple(T)

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

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
1

Múltiples atributos

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;
┌─val─────┬─type───────────┐
│ (1,'1') │ Tuple(        ↴│
│         │↳    c1 UInt32,↴│
│         │↳    c2 String) │
│ (2,'2') │ Tuple(        ↴│
│         │↳    c1 UInt32,↴│
│         │↳    c2 String) │
│ (3,'3') │ Tuple(        ↴│
│         │↳    c1 UInt32,↴│
│         │↳    c2 String) │
└─────────┴────────────────┘

dictGetAll

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.

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

Sintaxis

dictGetAll(dict_name, attr_names, id_expr[, limit])

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_names — Nombre de la columna del diccionario o tupla de nombres de columnas. String o Tuple(String)
  • 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 o Tuple(T)
  • 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*

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.

Array(T)

Ejemplos

Ejemplo de uso

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;
┌─user_agent─────────────────────────────────────────────────────┬─all_matches─────────────────────────────┬─first_match─┐
│ Mozilla/5.0 (Linux; Android 12; SM-G998B) Mobile Safari/537.36 │ ['Android','Android','Android','Linux'] │ Android     │
└────────────────────────────────────────────────────────────────┴─────────────────────────────────────────┴─────────────┘

dictGetChildren

Introducido en: v21.4.0

Devuelve los hijos de primer nivel como un array de índices. Es la transformación inversa de dictGetHierarchy.

Sintaxis

dictGetChildren(dict_name, key)

Argumentos

  • dict_name — Nombre del diccionario. String
  • key — Clave que se va a comprobar. const String

Valor devuelto

Devuelve los hijos de primer nivel de la clave. Array(UInt64)

Ejemplos

Obtener los hijos de primer nivel de un diccionario

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);
┌─dictGetChildren('hierarchical_dictionary', 2)─┐
│ [4,5]                                         │
└───────────────────────────────────────────────┘

dictGetDate

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.

Sintaxis

dictGetDate(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetDate('all_types_dict', 'Date_value', 1)─┐
│                                     2020-01-01 │
└────────────────────────────────────────────────┘

dictGetDateOrDefault

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.

Sintaxis

dictGetDateOrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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'));
┌─dictGetDate('all_types_dict', 'Date_value', 1)─┐
│                                     2024-01-15 │
└────────────────────────────────────────────────┘
┌─dictGetDateOrDefault('all_types_dict', 'Date_value', 999, toDate('1970-01-01'))─┐
│                                                                      1970-01-01 │
└─────────────────────────────────────────────────────────────────────────────────┘

dictGetDateTime

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.

Sintaxis

dictGetDateTime(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetDateTime('all_types_dict', 'DateTime_value', 1)─┐
│                                    2024-01-15 10:30:00 │
└────────────────────────────────────────────────────────┘

dictGetDateTimeOrDefault

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.

Sintaxis

dictGetDateTimeOrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor(es) que se devuelve(n) si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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'));
┌─dictGetDateTime('all_types_dict', 'DateTime_value', 1)─┐
│                                    2024-01-15 10:30:00 │
└────────────────────────────────────────────────────────┘
┌─dictGetDateTimeOrDefault('all_types_dict', 'DateTime_value', 999, toDateTime('1970-01-01 00:00:00'))─┐
│                                                                                  1970-01-01 00:00:00 │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘

dictGetDescendants

Introducido en: v21.4.0

Devuelve todos los descendientes como si la función dictGetChildren se aplicara recursivamente level veces.

Sintaxis

dictGetDescendants(dict_name, key, level)

Argumentos

  • dict_name — Nombre del diccionario. String
  • key — Clave que se va a comprobar. const 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

Valor devuelto

Devuelve los descendientes de la clave. Array(UInt64)

Ejemplos

Obtener los hijos de primer nivel de un diccionario

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)
┌─dictGetDescendants('hierarchical_dictionary', 0, 2)─┐
│ [3,2]                                               │
└─────────────────────────────────────────────────────┘

dictGetFloat32

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.

Sintaxis

dictGetFloat32(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetFloat32('all_types_dict', 'Float32_value', 1)─┐
│                                             -123.123 │
└──────────────────────────────────────────────────────┘

dictGetFloat32OrDefault

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.

Sintaxis

dictGetFloat32OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetFloat32('all_types_dict', 'Float32_value', 1)─┐
│                                               123.45 │
└──────────────────────────────────────────────────────┘
┌─dictGetFloat32OrDefault('all_types_dict', 'Float32_value', 999, -1.)─┐
│                                                                   -1 │
└──────────────────────────────────────────────────────────────────────┘

dictGetFloat64

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.

Sintaxis

dictGetFloat64(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetFloat64('all_types_dict', 'Float64_value', 1)─┐
│                                             -123.123 │
└──────────────────────────────────────────────────────┘

dictGetFloat64OrDefault

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.

Sintaxis

dictGetFloat64OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetFloat64('all_types_dict', 'Float64_value', 1)─┐
│                                        987654.123456 │
└──────────────────────────────────────────────────────┘
┌─dictGetFloat64OrDefault('all_types_dict', 'Float64_value', 999, nan)─┐
│                                                                  nan │
└──────────────────────────────────────────────────────────────────────┘

dictGetHierarchy

Introducido en: v1.1.0

Crea un array que contiene todos los ancestros de una clave en el diccionario jerárquico.

Sintaxis

dictGetHierarchy(dict_name, key)

Argumentos

Valor devuelto

Devuelve los ancestros para la clave. Array(UInt64)

Ejemplos

Obtener la jerarquía para una clave

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)
┌─dictGetHierarchy('hierarchical_dictionary', 5)─┐
│ [5,2,1]                                        │
└────────────────────────────────────────────────┘

dictGetIPv4

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.

Sintaxis

dictGetIPv4(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetIPv4('all_types_dict', 'IPv4_value', 1)─┐
│ 192.168.0.1                                    │
└────────────────────────────────────────────────┘

dictGetIPv4OrDefault

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.

Sintaxis

dictGetIPv4OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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'));
┌─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                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘

dictGetIPv6

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.

Sintaxis

dictGetIPv6(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetIPv6('all_types_dict', 'IPv6_value', 1)─┐
│ 2001:db8:85a3::8a2e:370:7334                   │
└────────────────────────────────────────────────┘

dictGetIPv6OrDefault

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.

Sintaxis

dictGetIPv6OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetIPv6('all_types_dict', 'IPv6_value', 1)─┐
│ 2001:db8:85a3::8a2e:370:7334                   │
└────────────────────────────────────────────────┘
┌─dictGetIPv6OrDefault('all_types_dict', 'IPv6_value', 999, CAST('::1', 'IPv6'))─┐
│ ::1                                                                            │
└────────────────────────────────────────────────────────────────────────────────┘

dictGetInt16

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.

Sintaxis

dictGetInt16(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetInt16('all_types_dict', 'Int16_value', 1)─┐
│                                            -5000 │
└──────────────────────────────────────────────────┘

dictGetInt16OrDefault

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.

Sintaxis

dictGetInt16OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetInt16('all_types_dict', 'Int16_value', 1)─┐
│                                            -5000 │
└──────────────────────────────────────────────────┘
┌─dictGetInt16OrDefault('all_types_dict', 'Int16_value', 999, -1)─┐
│                                                              -1 │
└─────────────────────────────────────────────────────────────────┘

dictGetInt32

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.

Sintaxis

dictGetInt32(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetInt32('all_types_dict', 'Int32_value', 1)─┐
│                                         -1000000 │
└──────────────────────────────────────────────────┘

dictGetInt32OrDefault

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.

Sintaxis

dictGetInt32OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetInt32('all_types_dict', 'Int32_value', 1)─┐
│                                         -1000000 │
└──────────────────────────────────────────────────┘
┌─dictGetInt32OrDefault('all_types_dict', 'Int32_value', 999, -1)─┐
│                                                              -1 │
└─────────────────────────────────────────────────────────────────┘

dictGetInt64

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.

Sintaxis

dictGetInt64(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetInt64('all_types_dict', 'Int64_value', 1)─┐
│                             -9223372036854775807 │
└──────────────────────────────────────────────────┘

dictGetInt64OrDefault

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.

Sintaxis

dictGetInt64OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetInt64('all_types_dict', 'Int64_value', 1)─┐
│                             -9223372036854775808 │
└──────────────────────────────────────────────────┘
┌─dictGetInt64OrDefault('all_types_dict', 'Int64_value', 999, -1)─┐
│                                                              -1 │
└─────────────────────────────────────────────────────────────────┘

dictGetInt8

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.

Sintaxis

dictGetInt8(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetInt8('all_types_dict', 'Int8_value', 1)─┐
│                                           -100 │
└────────────────────────────────────────────────┘

dictGetInt8OrDefault

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.

Sintaxis

dictGetInt8OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetInt8('all_types_dict', 'Int8_value', 1)─┐
│                                           -100 │
└────────────────────────────────────────────────┘
┌─dictGetInt8OrDefault('all_types_dict', 'Int8_value', 999, -1)─┐
│                                                            -1 │
└───────────────────────────────────────────────────────────────┘

dictGetKeys

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

Sintaxis

dictGetKeys('dict_name', 'attr_name', value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Atributo con el que debe coincidir. String
  • value_expr — Valor que debe coincidir con el atributo. 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

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;
┌─ids───┐
│ [2,4] │
└───────┘

dictGetOrDefault

Introducido en: v18.16.0

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

Sintaxis

dictGetOrDefault('dict_name', attr_names, id_expr, default_value)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_names — Nombre de la columna del diccionario o tupla de nombres de columna. String o Tuple(String)
  • 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 o Tuple(T)
  • 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

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
0

dictGetOrNull

Introducido en: v21.4.0

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

Sintaxis

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

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;
(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

dictGetRoot

Introducido en: v26.7.0

Devuelve el ancestro superior (la raíz) de una clave en un diccionario jerárquico.

Es un equivalente práctico de tomar el último elemento del array que devuelve 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.

Sintaxis

dictGetRoot(dict_name, key)

Argumentos

  • dict_name — Nombre del diccionario. String
  • key — Valor de la clave. UInt64

Valor devuelto

Devuelve el ancestro superior (la raíz) de la clave. UInt64

Ejemplos

Obtener la raíz de una clave

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)
┌─dictGetRoot('hierarchical_dictionary', 5)─┐
│                                         1 │
└───────────────────────────────────────────┘

dictGetString

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.

Sintaxis

dictGetString(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetString('all_types_dict', 'String_value', 1)─┐
│ test string                                        │
└────────────────────────────────────────────────────┘

dictGetStringOrDefault

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.

Sintaxis

dictGetStringOrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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');
┌─dictGetString('all_types_dict', 'String_value', 1)─┐
│ test string                                        │
└────────────────────────────────────────────────────┘
┌─dictGetStringOrDefault('all_types_dict', 'String_value', 999, 'default')─┐
│ default                                                                  │
└──────────────────────────────────────────────────────────────────────────┘

dictGetUInt16

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.

Sintaxis

dictGetUInt16(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetUInt16('all_types_dict', 'UInt16_value', 1)─┐
│                                               5000 │
└────────────────────────────────────────────────────┘

dictGetUInt16OrDefault

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.

Sintaxis

dictGetUInt16OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetUInt16('all_types_dict', 'UInt16_value', 1)─┐
│                                               5000 │
└────────────────────────────────────────────────────┘
┌─dictGetUInt16OrDefault('all_types_dict', 'UInt16_value', 999, 0)─┐
│                                                                0 │
└──────────────────────────────────────────────────────────────────┘

dictGetUInt32

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.

Sintaxis

dictGetUInt32(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetUInt32('all_types_dict', 'UInt32_value', 1)─┐
│                                            1000000 │
└────────────────────────────────────────────────────┘

dictGetUInt32OrDefault

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.

Sintaxis

dictGetUInt32OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetUInt32('all_types_dict', 'UInt32_value', 1)─┐
│                                            1000000 │
└────────────────────────────────────────────────────┘
┌─dictGetUInt32OrDefault('all_types_dict', 'UInt32_value', 999, 0)─┐
│                                                                0 │
└──────────────────────────────────────────────────────────────────┘

dictGetUInt64

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.

Sintaxis

dictGetUInt64(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetUInt64('all_types_dict', 'UInt64_value', 1)─┐
│                                9223372036854775807 │
└────────────────────────────────────────────────────┘

dictGetUInt64OrDefault

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.

Sintaxis

dictGetUInt64OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetUInt64('all_types_dict', 'UInt64_value', 1)─┐
│                                9223372036854775807 │
└────────────────────────────────────────────────────┘
┌─dictGetUInt64OrDefault('all_types_dict', 'UInt64_value', 999, 0)─┐
│                                                                0 │
└──────────────────────────────────────────────────────────────────┘

dictGetUInt8

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.

Sintaxis

dictGetUInt8(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetUInt8('all_types_dict', 'UInt8_value', 1)─┐
│                                              100 │
└──────────────────────────────────────────────────┘

dictGetUInt8OrDefault

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.

Sintaxis

dictGetUInt8OrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores devueltos si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─dictGetUInt8('all_types_dict', 'UInt8_value', 1)─┐
│                                              100 │
└──────────────────────────────────────────────────┘
┌─dictGetUInt8OrDefault('all_types_dict', 'UInt8_value', 999, 0)─┐
│                                                              0 │
└────────────────────────────────────────────────────────────────┘

dictGetUUID

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.

Sintaxis

dictGetUUID(dict_name, attr_name, id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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)
┌─dictGetUUID('all_types_dict', 'UUID_value', 1)─┐
│ 123e4567-e89b-12d3-a456-426614174000           │
└────────────────────────────────────────────────┘

dictGetUUIDOrDefault

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.

Sintaxis

dictGetUUIDOrDefault(dict_name, attr_name, id_expr, default_value_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • attr_name — Nombre de la columna del diccionario. String o Tuple(String)
  • 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 o Tuple(T)
  • default_value_expr — Valor o valores que se devuelven si el diccionario no contiene una fila con la clave id_expr. Expression o Tuple(T)

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.

Ejemplos

Ejemplo de uso

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);
┌─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                                                                            │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

dictHas

Introducido en: v1.1.0

Comprueba si una clave está presente en un diccionario.

Sintaxis

dictHas('dict_name', id_expr)

Argumentos

Valor devuelto

Devuelve 1 si la clave existe; de lo contrario, 0. UInt8

Ejemplos

Comprobar si existe una clave en un diccionario

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);
┌─dictHas('hierarchical_dictionary', 2)─┐
│                                     1 │
└───────────────────────────────────────┘
┌─dictHas('hierarchical_dictionary', 7)─┐
│                                     0 │
└───────────────────────────────────────┘

dictIsIn

Introducido en: v1.1.0

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

Sintaxis

dictIsIn(dict_name, child_id_expr, ancestor_id_expr)

Argumentos

  • dict_name — Nombre del diccionario. String
  • child_id_expr — Clave que se debe comprobar. String
  • ancestor_id_expr — Supuesto ancestro de la clave child_id_expr. const 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

Ejemplos

Comprobar la relación jerárquica

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);
┌─dictIsIn('hierarchical_dictionary', 6, 3)─┐
│                                         1 │
└───────────────────────────────────────────┘
┌─dictIsIn('hierarchical_dictionary', 3, 5)─┐
│                                         0 │
└───────────────────────────────────────────┘
Navigation