カテゴリ:

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

OBJECT_PICK

既存のオブジェクトからのキーと値のペアのいくつかを含む新しい OBJECT を返します。

新しいオブジェクトに含めるキーと値のペアを識別するには、キーを引数として渡すか、キーを含む配列を渡します。

指定されたキーが入力オブジェクトに存在しない場合、キーは無視されます。

構文

OBJECT_PICK( <object>, <key1> [, <key2>, ... ] )

OBJECT_PICK( <object>, <array> )
Copy

引数

object

入力オブジェクト。

key1key2

返されるオブジェクトに含める必要があるキーと値のペアを識別する1つ以上のキー。

array

返されるオブジェクトに含める必要があるキーと値のペアを識別するキーの配列。

戻り値

指定されたキーと値のペアを含む新しい OBJECT を返します。

使用上の注意

構造化 OBJECTs の場合:

  • キーとなる引数には、定数を指定する必要があります。

  • キーの ARRAY を第2引数として渡すことはできません。各キーを個別の引数として指定する必要があります。

  • この関数は構造化 OBJECT を返します。OBJECT の型には、指定された順序のキーが含まれます。

    例えば、 statecity のキーをこの順序で選択するとします。

    SELECT
      OBJECT_PICK(
        {'city':'San Mateo','state':'CA','zip_code':94402}::OBJECT(city VARCHAR,state VARCHAR,zip_code DOUBLE),
        'state',
        'city') AS new_object,
      SYSTEM$TYPEOF(new_object);
    
    Copy

    この関数は OBJECT(state VARCHAR, city VARCHAR) 型の OBJECT を返します。

    +-----------------------+--------------------------------------------------------------+
    | NEW_OBJECT            | SYSTEM$TYPEOF(NEW_OBJECT)                                    |
    |-----------------------+--------------------------------------------------------------|
    | {                     | OBJECT(state VARCHAR(16777216), city VARCHAR(16777216))[LOB] |
    |   "state": "CA",      |                                                              |
    |   "city": "San Mateo" |                                                              |
    | }                     |                                                              |
    +-----------------------+--------------------------------------------------------------+
    

次の例では、 OBJECT_PICK を呼び出して、既存のオブジェクトから、3つのキーと値のペアのうち2つを含む新しいオブジェクトを作成します。

SELECT OBJECT_PICK(
    OBJECT_CONSTRUCT(
        'a', 1,
        'b', 2,
        'c', 3
    ),
    'a', 'b'
) AS new_object;
+------------+
| NEW_OBJECT |
|------------|
| {          |
|   "a": 1,  |
|   "b": 2   |
| }          |
+------------+
Copy

上記の例では、キーは引数として OBJECT_PICK に渡されます。以下に示すように、配列を使用してキーを指定することもできます。

SELECT OBJECT_PICK(
    OBJECT_CONSTRUCT(
        'a', 1,
        'b', 2,
        'c', 3
    ),
    ARRAY_CONSTRUCT('a', 'b')
) AS new_object;
+------------+
| NEW_OBJECT |
|------------|
| {          |
|   "a": 1,  |
|   "b": 2   |
| }          |
+------------+
Copy