Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BigQuery-将结果转换为JSON数组_Json_Google Bigquery - Fatal编程技术网

BigQuery-将结果转换为JSON数组

BigQuery-将结果转换为JSON数组,json,google-bigquery,Json,Google Bigquery,假设我有以下输入数据: id | val1 | val2 1 | 1v1 | 1v2 1 | 1v3 | 2v4 2 | 2v1 | 2v2 我希望在输出中实现的目标: id | json 1 | [{"val1":"1v1","val2":"1v2"}, {"val1":"1v3","val2":"1v4"}] 2 | [{"val1":"2v1","val2":"2v2"}] 所以所有结果都按id分组,在JSON数组中。每个ID多行在JSON数组中生成多个结构。 作

假设我有以下输入数据:

id | val1 | val2
 1 |  1v1 |  1v2
 1 |  1v3 |  2v4
 2 |  2v1 |  2v2
我希望在输出中实现的目标:

id | json
 1 | [{"val1":"1v1","val2":"1v2"}, {"val1":"1v3","val2":"1v4"}]
 2 | [{"val1":"2v1","val2":"2v2"}]
所以所有结果都按id分组,在JSON数组中。每个ID多行在JSON数组中生成多个结构。
作为第一步,我尝试使用
to_JSON_STRING
函数将行分组到JSON中,并以如下代码结束:

WITH Input AS ( 
  SELECT id, val1, val2
  from My_Table
)
SELECT
  t.id,
  TO_JSON_STRING(t) AS json_row
FROM Input AS t
但它也将
id
放入目标JSON中,这是我想要避免的。

对于如何从BigQuery获得理想结果的任何帮助或提示,我们将不胜感激。

请参阅以下代码:

with data as (
  select 1 as id, '1v1' as val1, '1v2' as val2 union all 
  select 1, '1v3', '2v4' union all 
  select 2, '2v1', '2v2'
),
grouped as (
  select id, array_agg(struct(val1,val2)) x
  from data
  group by 1
)
select id, to_json_string(x) as json 
from grouped

或更详细版本的上述
选择id,从数据组中按id选择JSON字符串(ARRAY_AGG((val1,val2)))JSON