You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery使用UNNEST展开数组后如何按歌曲统计收听用户数量?

实现方案

你可以直接调整查询语句,把UNNEST放到FROM子句中做关联展开,就能得到每行对应单首歌曲+用户ID的结构,查询语句如下:

SELECT
  user_id,
  JSON_EXTRACT_SCALAR(x, '$.Name') AS Name
FROM data,
UNNEST(JSON_EXTRACT_ARRAY(json_col, '$.info.music')) AS x

这里的逗号是BigQuery中CROSS JOIN UNNEST的简写,会自动将数组中的每一个元素和原表对应的user_id做关联,输出你需要的平级表格结构。

统计每首歌曲的收听用户数

不需要单独生成中间表,你可以直接一步完成统计:

SELECT
  JSON_EXTRACT_SCALAR(x, '$.Name') AS Name,
  COUNT(DISTINCT user_id) AS listen_user_count
FROM data,
UNNEST(JSON_EXTRACT_ARRAY(json_col, '$.info.music')) AS x
GROUP BY Name
ORDER BY listen_user_count DESC

基于现有查询结果的统计方法

如果你已经生成了当前user_id+歌曲名字段为数组的结果表(假设表名为current_result,数组字段名为NAME),也可以直接对该表的数组做展开统计:

SELECT
  song_name,
  COUNT(DISTINCT user_id) AS listen_user_count
FROM current_result,
UNNEST(NAME) AS song_name
GROUP BY song_name

内容的提问来源于stack exchange,提问作者monckeyyL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:18:04