BigQuery - 将结果转换为 JSON 数组
Posted
技术标签:
【中文标题】BigQuery - 将结果转换为 JSON 数组【英文标题】:BigQuery - Convert result into array of JSONs 【发布时间】:2019-12-16 15:10:13 【问题描述】:假设我有以下输入数据:
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 获得理想结果的任何帮助或提示,我们将不胜感激。
【问题讨论】:
【参考方案1】:见以下代码:
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
【讨论】:
或上面SELECT id, TO_JSON_STRING(ARRAY_AGG((val1,val2))) json FROM data GROUP BY id
的简洁版以上是关于BigQuery - 将结果转换为 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 将 bigquery 返回的结果转换为 Json 格式?
有没有办法使用 Python 将 bigquery 返回的结果转换为 Json 格式?
“将循环结构转换为 JSON”来自 Cloud Function NodeJs 的 BigQuery 插入
在 BigQuery 中,将对象的字符串化数组转换为非字符串化
Google BigQuery:将 ExecuteQuery 结果以 json 格式上传到 Google Cloud Storage