7.5 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 3e185d24c9 |
58 | Trabajar con diccionarios externos |
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
— Name of the dictionary. Literal de cadena.attr_name
— Name of the column of the dictionary. Literal de cadena.id_expr
— Key value. Expresion devolviendo un UInt64 o Tuplavalor -type dependiendo de la configuración del diccionario.default_value_expr
— Value returned if the dictionary doesn't contain a row with theid_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
— Name of the dictionary. Literal de cadena.id_expr
— Key value. 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
— Name of the dictionary. Literal de cadena.key
— Key value. 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
— Name of the dictionary. Literal de cadena.child_id_expr
— Key to be checked. Expresion devolviendo un UInt64-tipo de valor.ancestor_id_expr
— Alleged ancestor of thechild_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
— Name of the dictionary. Literal de cadena.attr_name
— Name of the column of the dictionary. Literal de cadena.id_expr
— Key value. Expresion devolviendo un UInt64-tipo de valor.default_value_expr
— Value which is returned if the dictionary doesn't contain a row with theid_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.