ClickHouse/docs/fr/query_language/functions/ext_dict_functions.md
2020-03-30 15:48:55 +03:00

7.3 KiB

machine_translated
true

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 the id_expr clé. Expression renvoyer la valeur dans le type de données configuré pour attr_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

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

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 the child_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 de ancestor_id_expr.
  • 1, si child_id_expr est un enfant de ancestor_id_expr ou si child_id_expr est un ancestor_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 the id_expr clé. Expression renvoyer une valeur dans le type de données configuré pour attr_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.

Article Original