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.Stringattr_names— Nombre de la columna del diccionario o tupla de nombres de columnas.StringoTuple(String)id_expr— Valor de la clave. Para un diccionario con una clave simple, una expresión que devuelve un valorUInt64. 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 entuple.UInt64oTuple(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 val1Mú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.Stringattr_names— Nombre de la columna del diccionario o tupla de nombres de columnas.StringoTuple(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).ExpressionoTuple(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.
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.Stringkey— 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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores que se devuelven si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor(es) que se devuelve(n) si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringkey— Clave que se va a comprobar.const Stringlevel— Nivel de jerarquía de la clave que se va a comprobar. Silevel = 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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores que se devuelven si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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
dict_name— Nombre del diccionario.Stringkey— Valor de la clave.const String
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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Atributo con el que debe coincidir.Stringvalue_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.Stringattr_names— Nombre de la columna del diccionario o tupla de nombres de columna.StringoTuple(String)id_expr— Valor de la clave. Para un diccionario con una clave simple, una expresión que devuelve un valorUInt64. 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 entuple.UInt64oTuple(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 val0dictGetOrNull
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') \NdictGetRoot
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
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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores que se devuelven si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores que se devuelven si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores devueltos si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(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.Stringattr_name— Nombre de la columna del diccionario.StringoTuple(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).ExpressionoTuple(T)default_value_expr— Valor o valores que se devuelven si el diccionario no contiene una fila con la claveid_expr.ExpressionoTuple(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
dict_name— Nombre del diccionario.Stringid_expr— Valor de la claveconst String
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.Stringchild_id_expr— Clave que se debe comprobar.Stringancestor_id_expr— Supuesto ancestro de la clavechild_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 │
└───────────────────────────────────────────┘