我是BigQuery和SQL的新手。我有一张包含以下细节的表格
ID : String : Nullable
BCats : String : Repeated
ID可以重复
ID BCats
|-----------------------|
| ABCD | BCat25 |
| | BCat24 |
| | BCat23 |
|_______________________|
| PQRS | BCat8 |
| | BCat9 |
|_______________________|
| ABCD | BCat23 |
| | BCat25 |
| | BCat24 |
|_______________________|
| MNOP | BCat12 |
| | BCat13 |
|_______________________|
| PQRS | BCat8 |
| | BCat9 |
|-----------------------|
我正在尝试使用以下查询基于ID对表进行分组
SELECT BCats,ID
FROM (SELECT (GROUP_CONCAT(BCats)) as BCats,ID
FROM(
SELECT
UNIQUE(BCats) as BCats,ID FROM
my_table
GROUP BY
ID
)
GROUP BY
ID
)
来自JSON格式的查询的输出是
{"BCats":"BCat25,BCat24,BCat23","ID":"ABCD"}
{"BCats":"BCat8,BCat9","ID":"PQRS"}
{"BCats":"BCat12,BCat13","ID":"MNOP"}
我的问题是如何从查询输出数组,如此
{"BCats" : ["BCat25","BCat24","BCat23"],"ID":"ABCD"}
目前我将BCats作为String。
我需要将这些数据输出到新表中,并将BCats作为重复。
请帮助。
预览:
答案 0 :(得分:2)
请尝试以下操作。注意:在网络用户界面中,您不仅需要设置Destination Table
,还需要设置/选中Allow Large Results
复选框,并取消选中Flatten Results
复选框
SELECT NEST(UNIQUE(BCats)) AS BCats, ID
FROM my_table
GROUP BY ID
答案 1 :(得分:1)
您应该使用standard SQL。如果您熟悉遗留SQL,那么有一个migration guide可以解释两种方言之间的差异。启用标准SQL(取消选中"使用旧版SQL"在"显示选项"在UI中)后,您可以运行例如:
Runnable