Как отлить варчар на КАРТУ (VARCHAR, VARCHAR) в Presto - PullRequest
1 голос
/ 21 марта 2019

У меня есть таблица в presto, один столбец с именем ("сопоставления") имеет пару ключ-значение в виде строки

выберите сопоставления из привет;

Пример: {"foo": "baar"," foo1 ":" bar1 "}

Я хочу преобразовать столбец" mappings "в MAP

, как select CAST (" mappings "as MAP) из hello;

Это приведет к ошибке в Presto.Как мы можем перевести это на карту?

Ответы [ 2 ]

4 голосов
/ 21 марта 2019

В Presto нет канонического строкового представления для MAP, поэтому нет возможности напрямую привести его к MAP(VARCHAR, VARCHAR).Но если ваша строка содержит карту JSON, вы можете использовать функцию json_parse, чтобы преобразовать строку в значение типа JSON и преобразовать ее в 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
0 голосов
/ 21 марта 2019

выберите приведение (json_parse (отображения) как MAP (VARCHAR, VARCHAR)) из hello1;

...