Prestoにテーブルがあり、( "mappings")という名前の1つの列にキーと値のペアが文字列として含まれています
こんにちはからマッピングを選択します。
例:{"foo": "baar"、 "foo1": "bar1"}
「マッピング」列をMAPにキャストしたい
こんにちはからCAST( "maps"をMAPとして)を選択します。
これはprestoでエラーをスローします。これをどのようにマップに変換できますか?
PrestoにはMAP
の正規の文字列表現がないため、MAP(VARCHAR, VARCHAR)
に直接キャストする方法はありません。ただし、文字列にJSONマップが含まれている場合は、 json_parse
関数は、文字列をJSON
タイプの値に変換し、それをSQL MAP
に cast を介して変換します。
例:
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
hello1からcast(json_parse(mappings)as MAP(VARCHAR、VARCHAR))を選択します。