如何根据bigquery中另一列中的重复值计算一列

Posted

技术标签:

【中文标题】如何根据bigquery中另一列中的重复值计算一列【英文标题】:How to count a column based on repeated values in another column in bigquery 【发布时间】:2021-02-28 15:33:36 【问题描述】:

我有下表

student_id subjects
1 math
english
2 math

我需要计算每个学科有多少学生

我尝试执行以下查询,但在 +4TB 数据上出现“超出资源”错误(主题数组在实际数据中很大)

选择主题,计数(不同的 id) 从 my_table t, unnest(t.subjects) 主题 按主题分组

我认为未嵌套和太大数据的问题是什么?有什么建议吗?

【问题讨论】:

【参考方案1】:

尝试使用 APPROX_COUNT_DISTINCT,如下例所示

select subject, approx_count_distinct(student_id) students
from my_table t,
unnest(t.subjects) subject
group by subject

【讨论】:

以上是关于如何根据bigquery中另一列中的重复值计算一列的主要内容,如果未能解决你的问题,请参考以下文章

将 Google BigQuery 中一个表中的 XML 数据转换为同一表中另一列中的 JSON 数据

使用 Filter 或 If Else 根据 R 中另一列中的值过滤指标

如何根据Python中另一列中的日期查找最频繁的值

如果同一行中另一列中的值匹配,如何比较列的两个值

Google BigQuery - 根据另一列中的值减去一列的 SUM

根据另一列中的值更新 BigQuery 中的嵌套数组