はじめに
BigQueryのStandardSQL では、CREATE [TEMPORARY] FUNCTION
でちょっとした関数を定義できますが、STRUCT型を返すときの書き方がなかなかググれなかったのでメモです。
書き方
STRUCT型の中身を <
>
で囲って指定すればOKです。
例
CREATE TEMPORARY FUNCTION parse_json(json_str STRING)
RETURNS STRUCT<name STRING, birthday STRING, mail STRING>
LANGUAGE js AS """
return JSON.parse(json_str);
""";
SELECT parse_json('{"name": "hogehoge", "birthday": "2000-01-01", "pref": 31}') as user
↓ 結果
Row | user.name | user.birthday | user.mail |
---|---|---|---|
1 | hogehoge | 2000-01-01 | null |
となります。
<>
で指定しなかった列 pref
は出力されませんし、キーが無かったmail
はnull
になります。
さいごに
一応、ここ https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql には書いてあるんですが、みつけるまでに時間がかかりました。。