web-dev-qa-db-ja.com

LASTERAL VIEW EXPLODE in presto

Prestoの新機能です。下の表のprestoでLATERAL VIEW EXPLODEをどのように使用すればよいでしょうか。

私のプレストクエリで名前をフィルターする必要があります

CREATE EXTERNAL TABLE `id`(
 `id` string,
 `names` map<string,map<string,string>>,
 `tags` map<string,map<string,string>>)
ROW FORMAT SERDE
 'org.Apache.hadoop.Hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT
 'org.Apache.hadoop.Hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT
 'org.Apache.hadoop.Hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
 's3://test'

;

サンプルnames値:

{3081={short=Abbazia 81427 - Milan}, 2057={short=Abbazia 81427 - Milan}, 1033={short=Abbazia 81427 - Milan}, 4105={short=Abbazia 81427 - Milan}, 5129={short=Abbazia 81427 - Milan}}
8
rkj

ドキュメントから: https://prestosql.io/docs/current/migration/from-Hive.html

Prestoは、配列とマップを拡張するためのUNNESTをサポートしています。 LATERAL VIEW explode()の代わりにUNNESTを使用してください。

Hiveクエリ:

SELECT student, score
FROM tests
LATERAL VIEW explode(scores) t AS score;

Prestoクエリ:

SELECT student, score
FROM tests
CROSS JOIN UNNEST(scores) AS t (score);
25
Dain Sundstrom