有没有办法在 AWS Athena 中展平结构字段?
Posted
技术标签:
【中文标题】有没有办法在 AWS Athena 中展平结构字段?【英文标题】:Is there a way to flatten a struct field in AWS Athena? 【发布时间】:2020-08-24 14:13:15 【问题描述】:我正在尝试编写一个 Athena 查询,它允许我在 select 语句中扩展一个结构。
假设我有一个表 my_table,它看起来像:
id string,
metadata struct<field1:varchar,field2:int>
我知道通过将名称 field1
放在查询中,我可以从结构中提取字段,但我想要更通用的东西,例如 metadata.*
,因此架构可以是抽象的。
这可以通过 Python 和一些库轻松完成,但想检查 Athena 内部是否有任何事情可以完成。
谢谢!
【问题讨论】:
【参考方案1】:如果
select results.id, results.scores.* from my_table results
之类的东西可以工作,我希望它,但不幸的是它没有。
您要求的是“通用所有字段参考”。 它自 Presto 323 起在 Presto 中可用。 您可以从https://trino.io/download.html 下载最新的 Presto 版本。
不幸的是,Athena 目前基于 Presto .172(3 年前发布),因此该功能不可用。在 Athena 升级之前,您无法在 SQL 级别应用任何解决方法。您需要在从 Athena 读取数据的应用程序中对此进行补偿。或者,您可以deploy recent Presto version on AWS easily。
【讨论】:
Athena 引擎 2 现在基于 presto0.217
,但这仍然是 0.323,所以没有骰子!以上是关于有没有办法在 AWS Athena 中展平结构字段?的主要内容,如果未能解决你的问题,请参考以下文章
来自字符串字段的 AWS Athena json_extract 查询返回空值
在 AWS Athena 中查询第一个非空值的动态 JSON 字段