在presto的侧面视图爆炸

rkj*_*rkj 6 cloud hive amazon-web-services presto

presto的新功能,任何指针我如何在下表中使用LATERAL VIEW EXPLODE.

我需要在我的presto查询中过滤名称

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'
Run Code Online (Sandbox Code Playgroud)

;

样本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}}
Run Code Online (Sandbox Code Playgroud)

Dai*_*rom 21

从文档:https://prestodb.io/docs/current/migration/from-hive.html

Presto支持UNNEST扩展阵列和地图.使用UNNEST而不是LATERAL VIEW explode().

Hive查询:

SELECT student, score
FROM tests
LATERAL VIEW explode(scores) t AS score;
Run Code Online (Sandbox Code Playgroud)

Presto查询:

SELECT student, score
FROM tests
CROSS JOIN UNNEST(scores) AS t (score);
Run Code Online (Sandbox Code Playgroud)

  • 效果很好!在“CROSS JOIN UNNEST(scores) A​​S t (score);”中,“t”是什么意思? (2认同)

rkj*_*rkj -8

我可以运行下面的查询来获取映射的数据

select
id
,names['1033']['short'] as srt_nm
from id;
Run Code Online (Sandbox Code Playgroud)