lcl*_*kyo 7 sql json presto trino
我有一个 json 表,它是由
CREATE TABLE `normaldata_source`(
`column1` int,
`column2` string,
`column3` struct<column4:string>)
Run Code Online (Sandbox Code Playgroud)
样本数据是:
{
"column1": 9,
"column2": "Z",
"column3": {
"column4": "Y"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我做
SELECT column3
FROM normaldata_source
Run Code Online (Sandbox Code Playgroud)
它会产生一个结果{column4=y}
。但是,我希望它是 json 形式{"column4": "y"}
这可能吗?
*编辑此查询给出以下结果:
SELECT CAST(column3 AS JSON) as column3_json
FROM normaldata_source
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,并且完全困惑于如何根据深层组合嵌套/结构进行操作。我正在使用 Athena(使用 AWS 的 Hive 连接器托管 Presto)。最后,我通过执行 CTAS(创建表作为选择)来解决这个问题,在我想要的条件下选择我想要的复杂列)并将其写入具有底层 SerDe 格式 JSON 的外部表。然后,通过 HiveConnector 的 $path 魔法列(或通过列出外部表位置下的文件),我获取结果文件并从中流出。
我知道这不是对当前问题的直接答案 - 我相信我们必须等待https://github.com/trinodb/trino/pull/3613才能支持任意结构/数组组合 -> json。但也许这会帮助那些认为自己能够做到这一点的人。
尽管我最初认为这是一个烦人的解决方法,但我现在开始认为这对于我的应用程序来说是正确的选择