首页 > 解决方案 > BigQuery:查询到 GroupBy 数组列

问题描述

我在 BigQuery 表中有 (2) 列:
1. url
2. tags

URL是单个值,TAGS是数组(示例如下):

| 网址    | 标签
1 | x.com | 驴
                     | 驴
                     | 生活
                     | 这里


如何在 BigQuery 中按 TAGS 数组进行分组?

使以下查询工作的诀窍是什么?

SELECT TAGS FROM `URL_TAGS_TABLE` 
group by unnest(TAGS)

我已经尝试按TO_JSON_STRING分组,但它没有给我想要的结果

我想看到以下输出
x.com | 驴 | 数 2
x.com | 生活 | 计数 1
x.com | 这里 | 计数 1

标签: google-bigquery

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
WITH `project.dataset.table` AS (
   SELECT 'x.com' url, ['donkey','donkey','lives','here'] tags UNION ALL
   SELECT 'y.com' url, ['abc','xyz','xyz','xyz'] tags 
)
SELECT url, tag, COUNT(1) AS `count`
FROM `project.dataset.table`, UNNEST(tags) tag
GROUP BY url, tag   

结果

Row url     tag     count    
1   x.com   donkey  2    
2   x.com   lives   1    
3   x.com   here    1    
4   y.com   abc     1    
5   y.com   xyz     3    

推荐阅读