OBJECT_TRANSFORM 関数 - Amazon Redshift

OBJECT_TRANSFORM 関数

SUPER オブジェクトを変換します。

構文

OBJECT_TRANSFORM( input [KEEP path1, ...] [SET path1, value1, ..., ... ] )

引数

input

SUPER 型オブジェクトに解決される式。

KEEP

この句で指定された path 値はすべて保持され、出力オブジェクトに引き継がれます。

この句はオプションです。

path1, path2, ...

二重引用符で囲まれたパスコンポーネントをピリオドで区切った形式の定数文字列リテラル。例えば、'"a"."b"."c"' は有効なパス値です。これは KEEP 句と SET 句の両方のパスパラメーターに当てはまります。

SET

pathvalue のペアを使用して既存のパスを変更するか、新しいパスを追加し、出力オブジェクトにそのパスの値を設定します。

この句はオプションです。

value1, value2, ...

SUPER 型の値に解決される式。数値型、テキスト型、ブール型は SUPER に解決可能であることに注意してください。

戻り型

SUPER

使用に関する注意事項

OBJECT_TRANSFORM は、KEEP で指定された input からのパス値と、SET で指定された pathvalue のペアを含む SUPER 型のオブジェクトを返します。

KEEP と SET の両方が空の場合、OBJECT_TRANSFORM は input を返します。

input が SUPER 型の object でない場合、OBJECT_TRANSFORM は KEEP 値や SET 値に関係なく input を返します。

次の例では、SUPER オブジェクトを別の SUPER オブジェクトに変換します。

CREATE TABLE employees ( col_person SUPER ); INSERT INTO employees VALUES ( json_parse(' { "name": { "first": "John", "last": "Doe" }, "age": 25, "ssn": "111-22-3333", "company": "Company Inc.", "country": "U.S." } ') ), ( json_parse(' { "name": { "first": "Jane", "last": "Appleseed" }, "age": 34, "ssn": "444-55-7777", "company": "Organization Org.", "country": "Ukraine" } ') ) ; SELECT OBJECT_TRANSFORM( col_person KEEP '"name"."first"', '"age"', '"company"', '"country"' SET '"name"."first"', UPPER(col_person.name.first::TEXT), '"age"', col_person.age + 5, '"company"', 'Amazon' ) AS col_person_transformed FROM employees; --This result is formatted for ease of reading. col_person_transformed ------------------------------------------------------------- { "name": { "first": "JOHN" }, "age": 30, "company": "Amazon", "country": "U.S." } { "name": { "first": "JANE" }, "age": 39, "company": "Amazon", "country": "Ukraine" }