从 AWS Athena 中的数组元素分组

Posted

技术标签:

【中文标题】从 AWS Athena 中的数组元素分组【英文标题】:Group by from the elements of array in AWS Athena 【发布时间】:2020-11-22 05:20:59 【问题描述】:

我有一个有两列的表。该表具有以下架构

column_name ---> type
student_id  ---> int
subjects    ---> array<string>

样本数据为:

student_id  --->  subjects
10          --->  [Math, Science]
20          --->  [Math, English]
30          --->  [English, French]

我想按个别科目分组,即我想计算所有学生所学科目的数量。所以我的预期结果是

Math     ---> 2
Science  ---> 1
English  ---> 2
French   ---> 1

我听说unnest 是一个数组,但无法得到这个结果。

我应该如何处理这个问题?

【问题讨论】:

【参考方案1】:

我想你只需要unnest:

select subject, count(*)
from t cross join
     unnest(subjects) as u(subject)
group by subject;

【讨论】:

谢谢。上面的查询给了我预期的结果。如果您可以通过对上述查询的一些解释来编辑您的答案,那就太好了。查询的语法不是那么直观,因此要求解释。 @AjayKrChoudhary 请参阅 Presto 文档中的 unnest:prestosql.io/docs/current/sql/select.html#unnest 了解更多信息。

以上是关于从 AWS Athena 中的数组元素分组的主要内容,如果未能解决你的问题,请参考以下文章

AWS Athena 将结构数组导出到 JSON

aws athena & java - 在结构类型列中获取数据

如何在 Presto Athena 中将 varchar 转换为数组

将数据从 Google Analytics 迁移到 AWS Athena

在 AWS Athena 的 json 文件中存储多个元素

AWS Athena:不支持的相关子查询类型,但它适用于 Mysql 和其他风格