Unnest Presto列键值对,值为数组



我有一个表,正在使用Presto SQL进行查询。我需要取消测试一个键值对列。键是一个字符串,值是一个数组。该数组的值是字符串键和int值的键值对。

数据结构看起来像这个

{"key1":[], "key2":[], "key3":[{"nestedKey1":1, "nestedKey2":36}]}

问题是";键3";在这种情况下,基于用户数据来改变值"键3";可能是我事先不知道的多个值之一。我不需要任何有空数组作为值的键,只需要有值的键。

假设您的数据实际上是json,您可以将其解析并处理为键值的map(键将是varchar,值可以是json的数组,或者如果需要更多处理,您可以尝试将其细化为array(map(varchar, integer))(:

-- sample data
WITH dataset(data) AS (
values ('{"key1":[], "key2":[], "key3":[{"nestedKey1":1, "nestedKey2":36}]}')
)
-- query
select k, arr
from(
select cast(json_parse(data) as map(varchar, array(json))) as parsed
from dataset
),
unnest(parsed) as t(k, arr)
where cardinality(arr) > 0;

输出:

karr
键3[{"嵌套键1":1,"嵌套键2":36}]

相关内容

  • 没有找到相关文章

最新更新