私のようなテーブルがあります
name string
address string
timezone string
one_key_value array<struct<key:string,value:array<string>>
two_key_value array<struct<key:string,value:array<string>>
そしてそれを変換したい
name string
address string
timezone string
one_key_value map<string,array<string>>
two_key_value map<string,array<string>>
prestoを使用します。有る lateral view inline
しかし、prestoでは実際には機能しません。これどうやってするの?
提供された情報に基づいて、基本的に2つのものが必要です。
map_from_entries(one_key_value)
を使用(docs: https://prestosql.io/docs/current/functions/map.html#map_from_entries )私は思考をテストしていませんが、以下の表現が役立つはずです:
map( transform(one_key_value, e -> e.key), transform(one_key_value, e -> e.value))
map( transform(two_key_value, e -> e.key), transform(two_key_value, e -> e.value))
AS Presto 0.175 docs :
map(array、array)→map指定されたキー/値配列を使用して作成されたマップを返します。
SELECT map(ARRAY [1,3]、ARRAY [2,4]); -{1-> 2、3-> 4}
array transform function を使用して、入力フィールドからキーと値の配列を作成できます(array<struct<key:string,value:array<string>>
)
transform(array、function)→ARRAY関数を配列の各要素に適用する配列を返します