雅典娜嵌套结构查询-如何在SQL中查询Value_counts

时间:2020-05-17 16:49:56

标签: sql ddl amazon-athena

我在AWS Athena中有一个很大的嵌套结构。表格中的一列名为“ petowners”:

{_id=5e6b531a412345e0e86aeae0, status=NotAnalyzed, animalcategories=[{categoryname=mammals, matches=1}, {categoryname=birds, matches=2}, {categoryname= UnknownField, matches=4}], ...many-other-values}

我正在寻找:

  1. 该列中的python函数value_counts的等效项。 意思是我正在寻找将输出的SQL Athena命令 此行:[mammals:1, birds:2, UnknownField:4]
  2. 查询聚合的一种方法-创建总数的直方图 每个row = 7
  3. 的每只宠物数量
  4. 有多少宠物主人的“动物类别”中有UnknownField
  5. 整个桌子上有几种动物?

1 个答案:

答案 0 :(得分:2)

这是解决方案的开始: 我们将表称为“ entire_table”

 SELECT t.entire_table._id,
         t.petowners.animalcategories,
         ac.categoryname,
         ac.matches
FROM entire_table t, UNNEST(t.petowners.animalcategories) AS t(ac)

此查询将输出一个包含名为“ categoryname”和“ matches”的列的表,其中每行的重复类别名称与每个user_id的数目相同:

| _id                      | animalcategories                                                                                              | categoryname | matches |
|--------------------------|---------------------------------------------------------------------------------------------------------------|--------------|---------|
| 5e6b531a412345e0e86aeae0 | [{categoryname=mammals, matches=1}, {categoryname=birds, matches=2}, {categoryname= UnknownField, matches=4}] | mammals      | 1       |
| 5e6b531a412345e0e86aeae0 | [{categoryname=mammals, matches=1}, {categoryname=birds, matches=2}, {categoryname= UnknownField, matches=4}] | birds        | 2       |
| 5e6b531a412345e0e86aeae0 | [{categoryname=mammals, matches=1}, {categoryname=birds, matches=2}, {categoryname= UnknownField, matches=4}] | UnknownField | 4       |

以下是启用解决方案的按重要性排序最相关的链接:

在兔子洞下,我遇到了一些不那么有用的链接,这些链接值得一提,为了进行全面的审查,我将其添加到此处:

我希望某天某人会发现这篇文章有用,并且可以从浏览网络以获取我必须经历的答案的几个小时中获得捷径。祝你好运。