在BigQuery上连接嵌套字段的值

时间:2015-04-07 07:43:35

标签: google-bigquery

我有以下架构:

[
   {
        'name': 'id',
        'type': 'INTEGER' 
   }
   {
        'name': 'record',
        'type': 'RECORD',
        'fields': [
            {
                'name': 'repeated',
                'type': 'STRING',
                'mode': 'REPEATED'
            }
         ]
   }
]

以下数据:

+--------------------+
|id  |record.repeated|
+--------------------+
|1   |'a'            |
|    |'b'            |
|    |'c'            |
+--------------------+
|2   |'a'            |
|    |'c'            |
+--------------------+
|3   |'d'            |
+--------------------+

我需要创建一个返回此内容的查询:

+--------------------+
|id  |record.repeated|
+--------------------+
|1   |'a,b,c'        |
+--------------------+
|2   |'a,c'          |
+--------------------+
|3   |'d'            |
+--------------------+

换句话说,我需要查询,允许我使用分隔符(在本例中为逗号)连接嵌套字段的值。像MySQL的GROUP_CONCAT函数,但在BigQuery上。

相关提示:Concat all column values in sql

这可能吗?

感谢。

2 个答案:

答案 0 :(得分:7)

这很简单

select group_concat(record.repeated) from table

来自publicdata的一个例子是

SELECT group_concat(payload.shas.encoded)
FROM [publicdata:samples.github_nested]
WHERE repository.url='https://github.com/dreamerslab/workspace'

答案 1 :(得分:0)

对于标准 sql:

select id, string_agg(record.field)
from your_table, unnest(record)

select id, string_agg(record.field)
from your_table left join unnest(record)