要通过查询转换如下所示的列吗
flat_json (one record) = {"a": 1, "b": "banana", "c": 3.14}
变成这样的表格结构
+---+--------+------+
| a | b | c |
+---+--------+------+
| 1 | banana | 3.14 |
+---+--------+------+
| 2 | beans | 2.72 |
+---+--------+------+
这样我就可以把它和与同一条记录相关联的其他字段“取消装箱”。我不一定知道json字段名。如果我把这个函数叫做“unbox”,我在寻找类似于 select * from unbox(flat_json)
我试过这种款式
WITH dataset AS (
SELECT '{"a": 1, "b": "banana", "c": 3.14}'
AS flat_json
)
SELECT
json_extract(blob, '$.*')
FROM flat_json
以及在无效的json路径上出错的变体。但使用相同的语法,我可以提取单个元素。
另一种方式似乎可以与另一个步骤一起工作,但对于目的来说是如此复杂。
WITH flat_json AS (
SELECT '{"a": 1, "b": "banana", "c": 3.14}' as flat_json
)
SELECT
cast(json_parse(flat_json) as map<varchar, json>)
FROM flat_json
输出:
+---------------------------+
| flat_json |
+---------------------------+
| {a=1, b="banana", c=3.14} |
+---------------------------+
这将是一个大数据集查询,所以我需要它是有效的。谢谢。
1条答案
按热度按时间aor9mmx11#
presto不支持通配符:
https://github.com/prestodb/presto/issues/7005