Athena 嵌套结构查询 - 如何在 SQL 中查询 Value_counts

Sha*_*nio 4 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}
Run Code Online (Sandbox Code Playgroud)

我在找:

  1. 相当于value_counts专栏中的python 函数。这意味着我正在寻找将为该行输出的 SQL Athena 命令:[mammals:1, birds:2, UnknownField:4]
  2. 一种查询聚合的方法 - 为此创建每个主人的宠物总数的直方图row = 7
  3. 有多少宠物主人拥有UnknownField“动物类别”
  4. 整个表中有多少种动物?

Sha*_*nio 5

这是解决方案的开始:让我们将该表称为“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)
Run Code Online (Sandbox Code Playgroud)

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

| _id | 动物类别 | 类别名称 | 比赛|
|--------------------------|---------------------- -------------------------------------------------- ---------------------------------------------------|---------- ----|---------|
| 5e6b531a412345e0e86aeae0 | [{categoryname=哺乳动物,matches=1},{categoryname=鸟类,matches=2},{categoryname= UnknownField,matches=4}] | 哺乳动物 | 1 |
| 5e6b531a412345e0e86aeae0 | [{categoryname=哺乳动物,matches=1},{categoryname=鸟类,matches=2},{categoryname= UnknownField,matches=4}] | 鸟类 | 2 |
| 5e6b531a412345e0e86aeae0 | [{categoryname=哺乳动物,matches=1},{categoryname=鸟类,matches=2},{categoryname= UnknownField,matches=4}] | 未知领域 | 4 |

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

在深入研究的过程中,我遇到了一些不太有用的链接,我认为这些链接值得一提,为了进行彻底的审查,我将它们添加到此处:

我希望有一天有人会发现这篇文章很有用,并通过几个小时的浏览网络找到我必须经历的答案的捷径。祝你好运。