7.7 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | f865c9653f |
58 | Travailler avec des dictionnaires externes |
Fonctions Pour Travailler Avec Des Dictionnaires Externes
Pour plus d'informations sur la connexion et la configuration de dictionnaires externes, voir Dictionnaires externes.
dictGet
Récupère une valeur d'un dictionnaire externe.
dictGet('dict_name', 'attr_name', id_expr)
dictGetOrDefault('dict_name', 'attr_name', id_expr, default_value_expr)
Paramètre
dict_name
— Name of the dictionary. Chaîne littérale.attr_name
— Name of the column of the dictionary. Chaîne littérale.id_expr
— Key value. Expression de retour d'un UInt64 ou Tuple- tapez la valeur en fonction de la configuration du dictionnaire.default_value_expr
— Value returned if the dictionary doesn't contain a row with theid_expr
clé. Expression renvoyer la valeur dans le type de données configuré pourattr_name
attribut.
Valeur renvoyée
-
Si ClickHouse analyse l'attribut avec succès dans le l'attribut type de données, les fonctions renvoient la valeur du dictionnaire de l'attribut qui correspond à
id_expr
. -
Si il n'y a pas la clé, correspondant à
id_expr
dans le dictionnaire, puis:- `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 lève une exception si elle ne peut pas analyser la valeur de l'attribut ou si la valeur ne correspond pas au type de données d'attribut.
Exemple
Créer un fichier texte ext-dict-text.csv
contenant les éléments suivants:
1,1
2,2
La première colonne est id
la deuxième colonne est c1
.
Configurer le dictionnaire externe:
<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>
Effectuer la requête:
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 │
└─────┴────────┘
Voir Aussi
dictHas
Vérifie si une clé est présente dans un dictionnaire.
dictHas('dict_name', id_expr)
Paramètre
dict_name
— Name of the dictionary. Chaîne littérale.id_expr
— Key value. Expression de retour d'un UInt64-le type de la valeur.
Valeur renvoyée
- 0, si il n'y a pas de clé.
- 1, si il y a une clé.
Type: UInt8
.
dictGetHierarchy
Crée un tableau contenant tous les parents d'une clé dans le hiérarchique dictionnaire.
Syntaxe
dictGetHierarchy('dict_name', key)
Paramètre
dict_name
— Name of the dictionary. Chaîne littérale.key
— Key value. Expression de retour d'un UInt64-le type de la valeur.
Valeur renvoyée
- Les Parents pour la clé.
Type: Tableau (UInt64).
dictisine
Vérifie l'ancêtre d'une clé à travers toute la chaîne hiérarchique dans le dictionnaire.
dictIsIn('dict_name', child_id_expr, ancestor_id_expr)
Paramètre
dict_name
— Name of the dictionary. Chaîne littérale.child_id_expr
— Key to be checked. Expression de retour d'un UInt64-le type de la valeur.ancestor_id_expr
— Alleged ancestor of thechild_id_expr
clé. Expression de retour d'un UInt64-le type de la valeur.
Valeur renvoyée
- 0, si
child_id_expr
n'est pas un enfant deancestor_id_expr
. - 1, si
child_id_expr
est un enfant deancestor_id_expr
ou sichild_id_expr
est unancestor_id_expr
.
Type: UInt8
.
D'Autres Fonctions
ClickHouse prend en charge des fonctions spécialisées qui convertissent les valeurs d'attribut de dictionnaire en un type de données spécifique, quelle que soit la configuration du dictionnaire.
Fonction:
dictGetInt8
,dictGetInt16
,dictGetInt32
,dictGetInt64
dictGetUInt8
,dictGetUInt16
,dictGetUInt32
,dictGetUInt64
dictGetFloat32
,dictGetFloat64
dictGetDate
dictGetDateTime
dictGetUUID
dictGetString
Toutes ces fonctions ont le OrDefault
modification. Exemple, dictGetDateOrDefault
.
Syntaxe:
dictGet[Type]('dict_name', 'attr_name', id_expr)
dictGet[Type]OrDefault('dict_name', 'attr_name', id_expr, default_value_expr)
Paramètre
dict_name
— Name of the dictionary. Chaîne littérale.attr_name
— Name of the column of the dictionary. Chaîne littérale.id_expr
— Key value. Expression de retour d'un UInt64-le type de la valeur.default_value_expr
— Value which is returned if the dictionary doesn't contain a row with theid_expr
clé. Expression renvoyer une valeur dans le type de données configuré pourattr_name
attribut.
Valeur renvoyée
-
Si ClickHouse analyse l'attribut avec succès dans le l'attribut type de données, les fonctions renvoient la valeur du dictionnaire de l'attribut qui correspond à
id_expr
. -
Si il n'est pas demandé
id_expr
dans le dictionnaire,:- `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 lève une exception si elle ne peut pas analyser la valeur de l'attribut ou si la valeur ne correspond pas au type de données d'attribut.