Новое в presto, любой указатель, как я могу использовать LATERAL VIEW EXPLODE в presto для таблицы ниже.
Мне нужно отфильтровать имена в моем запросе 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'
;
пример значения 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}}





Из документации: https://trino.io/docs/current/migration/from-hive.html
Trino (ранее PrestoSQL) поддерживает UNNEST для расширения массивов и карт. Используйте UNNEST вместо LATERAL VIEW explode ().
Запрос улья:
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);
@MattFenwick t - это псевдоним для таблицы, неявно созданной CROSS JOIN UNNEST(scores). Таким образом, вы можете ссылаться на score как на t.score в операторе SELECT.
Я могу выполнить запрос ниже, чтобы получить сопоставленные данные
select
id
,names['1033']['short'] as srt_nm
from id;
Работает отлично! Что означает
CROSS JOIN UNNEST(scores) AS t (score);вt?