如何在Presto中将varchar转换为MAP(VARCHAR,VARCHAR)

时间:2019-03-21 11:47:36

标签: cassandra presto

我在presto中有一张表,一列名为(“ mappings”)的键值对为字符串

从问候中选择映射;

例如:{“ foo”:“ baar”,“ foo1”:“ bar1”}

我想将“映射”列转换为MAP

像从hello中选择CAST(“映射”为MAP);

这将在presto中引发错误。我们如何将其翻译成地图?

2 个答案:

答案 0 :(得分:3)

在Presto中,MAP没有规范的字符串表示形式,因此无法将其直接转换为MAP(VARCHAR, VARCHAR)。但是,如果您的字符串包含JSON映射,则可以使用json_parse函数将字符串转换为JSON类型的值,然后通过{{3将其转换为SQL MAP }}。

示例:

WITH
data(c) AS (
    VALUES '{"foo": "baar", "foo1": "bar1"}'
),
parsed AS (
    SELECT cast(json_parse(c) as map(varchar, varchar)) AS m
    FROM data
)
SELECT m['foo'], m['foo1']
FROM parsed

产生:

 _col0 | _col1
-------+-------
 baar  | bar1

答案 1 :(得分:0)

从hello1中选择cast(json_parse(mappings)as MAP(VARCHAR,VARCHAR));