【发布时间】:2020-01-27 22:25:29
【问题描述】:
我使用 Athena 在 S3 中查询存储在 JSON 对象中的数据。
一些 JSON 属性的名称中包含点,它们代表 Android 应用程序名称。
属性看起来是这样的:
{
"MessageTime": "2019-09-24T16:07:16+00:00",
"Memory": {
"com.google.android.gms.maps": {
"Min": 0,
"Max": 0,
"Avg": 0
}
}
}
具有该列的 AWS Athena 表创建成功,可以查询。 有没有办法在 SQL 查询中引用 Memory.com.google.android.gms.maps.Min 属性?
也许我可以在创建表等时以某种方式重命名此列?
我可以轻松查询其他嵌入式属性(名称中不带点)。
【问题讨论】:
-
根据 SQL 标准,当引用带有点的列时,您需要
"-引用名称。例如。SELECT "Memory.com.google.android.gms.maps.Min" FROM .... -
试过了,Athena 返回 - SYNTAX_ERROR: line 9:40: Column '...' cannot be resolved
-
当你
SHOW COLUMNS(docs.aws.amazon.com/athena/latest/ug/show-columns.html)时,这个栏目是怎么列出来的? -
在这种情况下只显示外部列名,我看到
Memory -
试试
"Memory"."com.companyname.appname1"."Min"(或"Memory"."com.google.android.gms.maps"."Min")。
标签: amazon-web-services amazon-athena