在查询athena时将结构转换为json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在查询athena时将结构转换为json相关的知识,希望对你有一定的参考价值。

我有一个athena表,我没有创建或管理,但可以查询。其中一个字段是结构类型。为了这个例子,让我们假设它看起来像这样:

my_field struct<a:string,
                b:string,
                c:struct<d:string,e:string>
                >

现在,我知道如何查询此结构中的特定字段。但在我的一个查询中,我需要提取完整的结构。所以我只是用:

select my_field from my_table

结果看起来像一个字符串:

{a=aaa, b=bbb, c={d=ddd, e=eee}}

我想将结果作为json字符串:

{"a":"aaa", "b":"bbb","c":{"d":"ddd", "e":"eee"}}

然后这个字符串将由另一个应用程序处理,这就是为什么我需要它以json格式。

我怎样才能做到这一点?

编辑:更好的是,有没有办法以一种扁平化的方式查询结构?所以结果看起来像:

a   |   b   |   c.d  |  c.e   |
-------------------------------
aaa |   bbb |   ddd  |  eee   |
答案

您可以使用parent_field.child_field表示法直接引用嵌套字段。尝试:

SELECT
  my_field,
  my_field.a,
  my_field.b,
  my_field.c.d,
  my_field.c.e
FROM 
  my_table

以上是关于在查询athena时将结构转换为json的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 Bigquery 查询转换为 AWS Athena 查询?

如何从 Amazon Athena 查询镶木地板数据?

aws athena - 转换为 json 不返回 json 对象

Athena/Presto:复杂结构/数组

来自字符串字段的 AWS Athena json_extract 查询返回空值

SQL(雅典娜)中的取消嵌套:如何将结构数组转换为从结构中提取的值数组?