Catégories :

Fonctions de données semi-structurées et structurées (tableau/objet)

OBJECT_KEYS

Renvoie un tableau contenant la liste des clés du niveau le plus élevé de l’objet d’entrée.

Syntaxe

OBJECT_KEYS( <object> )
Copy

Arguments

object

La valeur pour laquelle vous souhaitez les clés. La valeur d’entrée doit être l’une des suivantes :

Renvoie

La fonction renvoie un ARRAY contenant les clés.

Si object est un OBJECT structuré, la fonction renvoie un ARRAY(VARCHAR).

Notes sur l’utilisation

  • Si l’objet contient des objets imbriqués (par exemple, des objets dans des objets), cela renvoie uniquement les clés du niveau le plus élevé.

Exemples

Exemple de base

L’exemple suivant montre que OBJECT_KEYS fonctionne à la fois avec un OBJECT et un VARIANT qui contient une valeur de type OBJECT.

Créez une table contenant des colonnes de types OBJECT et VARIANT.

CREATE TABLE objects_1 (id INTEGER, object1 OBJECT, variant1 VARIANT);
Copy

Valeurs INSERT :

INSERT INTO objects_1 (id, object1, variant1) 
  SELECT
    1,
    OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3),
    TO_VARIANT(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3))
    ;
Copy

Récupérez les clés du OBJECT et du VARIANT :

SELECT OBJECT_KEYS(object1), OBJECT_KEYS(variant1) 
    FROM objects_1
    ORDER BY id;
+----------------------+-----------------------+
| OBJECT_KEYS(OBJECT1) | OBJECT_KEYS(VARIANT1) |
|----------------------+-----------------------|
| [                    | [                     |
|   "a",               |   "a",                |
|   "b",               |   "b",                |
|   "c"                |   "c"                 |
| ]                    | ]                     |
+----------------------+-----------------------+
Copy

Exemple d’objets imbriqués

Cet exemple montre que si l’objet contient des objets imbriqués, seules les clés du niveau le plus élevé sont renvoyées.

SELECT OBJECT_KEYS (
           PARSE_JSON (
               '{
                    "level_1_A": {
                                 "level_2": "two"
                                 },
                    "level_1_B": "one"
                    }'
               )
           ) AS keys
    ORDER BY 1;
+----------------+
| KEYS           |
|----------------|
| [              |
|   "level_1_A", |
|   "level_1_B"  |
| ]              |
+----------------+
Copy