如何在 Amazon Athena 中查询 json?
How to query a json in Amazon Athena?
我有一个类似于下面的 json 数组结构:
[elem1
elem2
attr
-- code1
-- code2
]
我能够上传这些 json 并正确保存它们的格式,并使用 AWS Glue 抓取 json 我得到了所有正确的数据结构元素(attr 有很多正确提取的子元素)。
当我去雅典娜的时候;然而,我做了一个 select *
,我得到了 3 个基本列(elem1、elem2、attr),但是这些行有每个 json 作为一个整体:
elem1 |elem2
---------------------------------------------------------------------------------------------------
{elem1:"a",elem2:"b",attr:{code1:"1",code2:"2"}} |{elem1:"a",elem2:"b",attr:{code1:"1",code2:"2"}}
(最后以attr为列名)
有趣的是,当我将数据关联起来并将其制成镶木地板文件时,所有字段都被保留了下来,但我担心某种数据丢失,因为存储了多个 jsons在一行中,因此可能存在某种覆盖问题。
关于如何进行的任何想法?我一直在尝试寻找在 Athena 上查询 json 的方法,但这可能只是 json 本身的问题(我下载了 json 并查看了结构和它视觉上看起来不错)。
我最终不得不完全重新格式化 json 文件,就像我在这个 post. Athena does support doing json queries of course, and I suggest using DBeaver 中所做的那样,以进行更复杂的查询。
您使用的 JSON 格式不起作用的原因是因为 this. The behaviour is expected and for your JSON file to work properly each record has to be present on separate line. Also refer to this 谈到要求 解析 JSON-encoded 数据Athena,确保每个 JSON 文档都在自己的行上,并用新行分隔。
我有一个类似于下面的 json 数组结构:
[elem1
elem2
attr
-- code1
-- code2
]
我能够上传这些 json 并正确保存它们的格式,并使用 AWS Glue 抓取 json 我得到了所有正确的数据结构元素(attr 有很多正确提取的子元素)。
当我去雅典娜的时候;然而,我做了一个 select *
,我得到了 3 个基本列(elem1、elem2、attr),但是这些行有每个 json 作为一个整体:
elem1 |elem2
---------------------------------------------------------------------------------------------------
{elem1:"a",elem2:"b",attr:{code1:"1",code2:"2"}} |{elem1:"a",elem2:"b",attr:{code1:"1",code2:"2"}}
(最后以attr为列名)
有趣的是,当我将数据关联起来并将其制成镶木地板文件时,所有字段都被保留了下来,但我担心某种数据丢失,因为存储了多个 jsons在一行中,因此可能存在某种覆盖问题。
关于如何进行的任何想法?我一直在尝试寻找在 Athena 上查询 json 的方法,但这可能只是 json 本身的问题(我下载了 json 并查看了结构和它视觉上看起来不错)。
我最终不得不完全重新格式化 json 文件,就像我在这个 post. Athena does support doing json queries of course, and I suggest using DBeaver 中所做的那样,以进行更复杂的查询。
您使用的 JSON 格式不起作用的原因是因为 this. The behaviour is expected and for your JSON file to work properly each record has to be present on separate line. Also refer to this 谈到要求 解析 JSON-encoded 数据Athena,确保每个 JSON 文档都在自己的行上,并用新行分隔。