Athena presto查询带有动态键名的map类型列



我使用雅典娜presto查询从映射类型列查找值。我想找到一个动态键名的键/值对。具体来说,我的键是这样的abc_1 abc_2 ....例如abc_100,它总是以一个前缀开始,然后是一个动态部分,最后以一些字母结束。有许多可能的组合,我无法一一列举。所以我想知道我是否可以在键中使用正则表达式或通配符,就像下面的东西:

selelct map_var1['abc_**'] from tab1.

我也标记了hive和spark,请用其他语言提出解决方案。我可以用其他语言。

谢谢!

您可以使用map_filter:

-- sample data
with dataset(id, map_col) as
(values (1, map(array['abc_1', 'abc_2', 'skip'], array[1, 2, 3])))
-- query
select map_filter(map_col, (k, v) -> k like 'abc_%')
from dataset;

输出:

_col0
--------------------
{abc_1=1, abc_2=2}