Javascript UDF の例です。
Javascript
1CREATE TEMPORARY FUNCTION my_parse_json(json_str STRING)
2RETURNS STRUCT<id1 INT64, id2 INT64, id3 INT64>
3LANGUAGE js AS """
4 var obj = {id1: 0, id2: 0, id3: 0};
5 var json = JSON.parse(json_str);
6 json.forEach(function(v){
7 if ( v.hasOwnProperty('id1') ){ obj['id1'] = v.id1; }
8 if ( v.hasOwnProperty('id2') ){ obj['id2'] = v.id2; }
9 if ( v.hasOwnProperty('id3') ){ obj['id3'] = v.id3; }
10 });
11 return obj;
12""";
13
14SELECT my_parse_json('[{"id1":1111},{"id2":2222},{"id3":3333}]')
あるいは json_query_array を使った例です。
with x as (
select * from
unnest(json_query_array('[{"id1":1111},{"id2":2222},{"id3":3333}]')) as j
)
select
(select json_extract_scalar(j, '$.id1') from x where json_extract_scalar(j, '$.id1') is not null) as id1,
(select json_extract_scalar(j, '$.id2') from x where json_extract_scalar(j, '$.id2') is not null) as id2,
(select json_extract_scalar(j, '$.id3') from x where json_extract_scalar(j, '$.id3') is not null) as id3
どっちも何か変な書き方になってしまいましたが、もっとスマートなやり方がありそうですね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/23 02:54
2021/04/23 03:07 編集
2021/04/23 05:42