Как запросить таблицу, разбитую на столбцы в AWS Athena, использующей Presto - PullRequest
0 голосов
/ 17 ноября 2018

Если я создал такую ​​таблицу в AWS Athena:

CREATE EXTERNAL TABLE table (
         `timestamp` BIGINT,
         `id` STRING,
)PARTITIONED BY (
        date_column 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://bucket/key' TBLPROPERTIES ( 'parquet.compress'='SNAPPY', 'CrawlerSchemaDeserializerVersion'='1.0', 'CrawlerSchemaSerializerVersion'='1.0', 'classification'='parquet')

И после добавления данных date_column выглядит так:

date_column
date=2018102300
date=2018091500 //(so Sept 15, 2018)

Я хочу получить данные только длямесяц сентября, но не в состоянии сформировать правильный запрос:

Пока у меня есть это, которое выдает ошибку формата даты:

SELECT * FROM table 
where date_parse(date_column, 'date=%Y%m%d') >= date_parse('date=2018090100', 'date=%Y%m%d') and date_parse(date_column, 'date=%Y%m%d') < date_parse('date=2018100100', 'date=%Y%m%d')

1 Ответ

0 голосов
/ 21 декабря 2018

Параметры, которые вы передаете в функцию date_parse (), неверны. Для получения правильного формата отметки времени он должен быть в следующем формате

select date_parse('2018091500', '%Y%m%d%H') will fetch you 2018-09-15 00:00:00.000

Вы можете переписать свой запрос, чтобы получить результаты за сентябрь

select * from  table where date_parse(date_column, '%Y%m%d%H') between date '2018-09-01' and date '2018-09-30'
...