【发布时间】:2021-04-29 22:06:28
【问题描述】:
如何在 Presto 中过滤 json 数组?
WITH dataset AS (
SELECT * FROM (VALUES
(JSON '{"turnovers": [{"purpose": "Bla Bla", "amount": 3, "tag": "E"},
{"purpose": "Blub", "amount": 3, "tag": "F"}]}'),
(JSON '{"turnovers": [{"purpose": "Palim", "amount": 3, "tag": "E"},
{"purpose": "Palim Palim", "amount": 3, "tag": "E"}]}')
) AS t (snapshot)
)
SELECT
json_extract(snapshot, '$.turnovers')
FROM
dataset
我只想获得带有标签E 的营业额,而不是所有交易。在本例中,应排除标签为F 的一笔交易。
这可能吗?
我希望像这样使用某物,但这不起作用
WITH dataset AS (
SELECT * FROM (VALUES
(JSON '{"turnovers": [{"purpose": "Bla Bla", "amount": 3, "tag": "E"},
{"purpose": "Blub", "amount": 3, "tag": "F"}]}'),
(JSON '{"turnovers": [{"purpose": "Palim", "amount": 3, "tag": "E"},
{"purpose": "Palim Palim", "amount": 3, "tag": "E"}]}')
) AS t (snapshot)
)
SELECT
filter(json_extract(snapshot, '$.turnovers'), x -> json_extract_scalar(x, '$.tag')='E')
FROM
dataset
【问题讨论】:
标签: presto