* replace exit with assert in test_single_page * improve save_raw_single_page docs option * More grammar fixes * "Built from" link in new tab * fix mistype * Example of include in docs * add anchor to meeting form * Draft of translation helper * WIP on translation helper * Replace some fa docs content with machine translation * add normalize-en-markdown.sh * normalize some en markdown * normalize some en markdown * admonition support * normalize * normalize * normalize * support wide tables * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * lightly edited machine translation of introdpection.md * lightly edited machhine translation of lazy.md * WIP on translation utils * Normalize ru docs * Normalize other languages * some fixes * WIP on normalize/translate tools * add requirements.txt * [experimental] add es docs language as machine translated draft * remove duplicate script * Back to wider tab-stop (narrow renders not so well)
7.0 KiB
Funciones para trabajar con diccionarios externos
Para obtener información sobre cómo conectar y configurar diccionarios externos, consulte Diccionarios externos.
dictGet
Recupera un valor de un diccionario externo.
dictGet('dict_name', 'attr_name', id_expr)
dictGetOrDefault('dict_name', 'attr_name', id_expr, default_value_expr)
Parámetros
dict_name
— Nombre del diccionario. Literal de cadena.attr_name
— Nombre de la columna del diccionario. Literal de cadena.id_expr
— Valor clave. Expresion devolviendo un UInt64 o Tuplavalor -type dependiendo de la configuración del diccionario.default_value_expr
— Valor devuelto si el diccionario no contiene una filaid_expr
clave. Expresion devolviendo el valor en el tipo de datos configurado paraattr_name
atributo.
Valor devuelto
-
Si ClickHouse analiza el atributo correctamente en el tipo de datos del atributo, funciones devuelven el valor del atributo de diccionario que corresponde a
id_expr
. -
Si no hay la clave, correspondiente a
id_expr
en el diccionario, entonces:- `dictGet` returns the content of the `<null_value>` element specified for the attribute in the dictionary configuration. - `dictGetOrDefault` returns the value passed as the `default_value_expr` parameter.
ClickHouse produce una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de datos del atributo.
Ejemplo
Crear un archivo de texto ext-dict-text.csv
que contiene los siguientes:
1,1
2,2
La primera columna es id
la segunda columna es c1
.
Configurar el diccionario externo:
<yandex>
<dictionary>
<name>ext-dict-test</name>
<source>
<file>
<path>/path-to/ext-dict-test.csv</path>
<format>CSV</format>
</file>
</source>
<layout>
<flat />
</layout>
<structure>
<id>
<name>id</name>
</id>
<attribute>
<name>c1</name>
<type>UInt32</type>
<null_value></null_value>
</attribute>
</structure>
<lifetime>0</lifetime>
</dictionary>
</yandex>
Realizar la consulta:
SELECT
dictGetOrDefault('ext-dict-test', 'c1', number + 1, toUInt32(number * 10)) AS val,
toTypeName(val) AS type
FROM system.numbers
LIMIT 3
┌─val─┬─type───┐
│ 1 │ UInt32 │
│ 2 │ UInt32 │
│ 20 │ UInt32 │
└─────┴────────┘
Ver también
dictHas
Comprueba si hay una clave en un diccionario.
dictHas('dict_name', id_expr)
Parámetros
dict_name
— Nombre del diccionario. Literal de cadena.id_expr
— Valor clave. Expresion devolviendo un UInt64-tipo de valor.
Valor devuelto
- 0, si no hay clave.
- 1, si hay una llave.
Tipo: UInt8
.
dictGetHierarchy
Crea una matriz, que contiene todos los padres de una clave diccionario jerárquico.
Sintaxis
dictGetHierarchy('dict_name', key)
Parámetros
dict_name
— Nombre del diccionario. Literal de cadena.key
— Valor clave. Expresion devolviendo un UInt64-tipo de valor.
Valor devuelto
- Padres por la llave.
Tipo: Matriz (UInt64).
DictIsIn
Comprueba el antecesor de una clave a través de toda la cadena jerárquica en el diccionario.
dictIsIn('dict_name', child_id_expr, ancestor_id_expr)
Parámetros
dict_name
— Nombre del diccionario. Literal de cadena.child_id_expr
— Clave a comprobar. Expresion devolviendo un UInt64-tipo de valor.ancestor_id_expr
— Presunto ancestro de lachild_id_expr
clave. Expresion devolviendo un UInt64-tipo de valor.
Valor devuelto
- 0, si
child_id_expr
no es un niño deancestor_id_expr
. - 1, si
child_id_expr
es un niño deancestor_id_expr
o sichild_id_expr
es unaancestor_id_expr
.
Tipo: UInt8
.
Otras funciones
ClickHouse admite funciones especializadas que convierten los valores de atributo de diccionario a un tipo de datos específico, independientemente de la configuración del diccionario.
Función:
dictGetInt8
,dictGetInt16
,dictGetInt32
,dictGetInt64
dictGetUInt8
,dictGetUInt16
,dictGetUInt32
,dictGetUInt64
dictGetFloat32
,dictGetFloat64
dictGetDate
dictGetDateTime
dictGetUUID
dictGetString
Todas estas funciones tienen el OrDefault
modificación. Por ejemplo, dictGetDateOrDefault
.
Sintaxis:
dictGet[Type]('dict_name', 'attr_name', id_expr)
dictGet[Type]OrDefault('dict_name', 'attr_name', id_expr, default_value_expr)
Parámetros
dict_name
— Nombre del diccionario. Literal de cadena.attr_name
— Nombre de la columna del diccionario. Literal de cadena.id_expr
— Valor clave. Expresion devolviendo un UInt64-tipo de valor.default_value_expr
— Valor que se devuelve si el diccionario no contiene una filaid_expr
clave. Expresion devolviendo un valor en el tipo de datos configurado paraattr_name
atributo.
Valor devuelto
-
Si ClickHouse analiza el atributo correctamente en el tipo de datos del atributo, funciones devuelven el valor del atributo de diccionario que corresponde a
id_expr
. -
Si no se solicita
id_expr
en el diccionario entonces:- `dictGet[Type]` returns the content of the `<null_value>` element specified for the attribute in the dictionary configuration. - `dictGet[Type]OrDefault` returns the value passed as the `default_value_expr` parameter.
ClickHouse produce una excepción si no puede analizar el valor del atributo o si el valor no coincide con el tipo de datos del atributo.