カテゴリ:

半構造化データ関数と構造化データ関数 (配列/オブジェクト)

OBJECT_KEYS

入力オブジェクトの最上位レベルにあるキーのリストを含む配列を返します。

構文

OBJECT_KEYS( <object> )
Copy

引数

object

必要なキーの値。入力値は次のいずれかでなければなりません。

戻り値

この関数は、キーを含む ARRAY を返します。

object構造化 OBJECT の場合、この関数は ARRAY(VARCHAR) を返します。

使用上の注意

  • オブジェクトにネストされたオブジェクト(例: オブジェクト内のオブジェクト)が含まれている場合、最上位レベルのキーのみが返されます。

基本的な例

次の例は、 OBJECT 型の値を含んだ OBJECTVARIANT の両方を処理する OBJECT_KEYS を示しています。

OBJECT 型および VARIANT 型の列を含むテーブルを作成します。

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

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

OBJECT と 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

ネストされたオブジェクトの例

この例は、オブジェクトにネストされたオブジェクトが含まれている場合、最上位レベルのキーのみが返されることを示しています。

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