Amazon web services 雅典娜分区投影未按预期工作

Amazon web services 雅典娜分区投影未按预期工作,amazon-web-services,aws-glue,amazon-athena,Amazon Web Services,Aws Glue,Amazon Athena,我正在从注册分区转移到分区投影 以前我的数据是按p_year={yyyy}/p_month={MM}/p_day={dd}/p_hour={HH}/..进行分区的,现在我将这些分区移到p_date={yyyyy}-{MM}-{dd HH}:00/。 我有一个最近的事件表,它存储了过去两天的事件。所以我的p_日期范围是NOW-2天,NOW。完整的表格参数如下所示- projection.enabled: 'True' projection.p_date.type: 'date' projectio

我正在从注册分区转移到分区投影

以前我的数据是按
p_year={yyyy}/p_month={MM}/p_day={dd}/p_hour={HH}/..
进行分区的,现在我将这些分区移到
p_date={yyyyy}-{MM}-{dd HH}:00/。

我有一个最近的事件表,它存储了过去两天的事件。所以我的
p_日期
范围是
NOW-2天,NOW
。完整的表格参数如下所示-

projection.enabled: 'True'
projection.p_date.type: 'date'
projection.p_date.range: NOW-2DAYS,NOW
projection.p_date.format: 'yyyy-MM-dd HH:mm:ss'
projection.p_date.interval: 1
projection.p_date.interval.unit: 'HOURS'
但是当我试图查询这个时,我没有得到任何结果

SELECT COUNT(*) FROM recent_events_2d_v2
> 0
但是,如果我将日期范围更改为
2020-09-01 00:00:00,现在就可以得到结果了


分区投影的相对日期范围似乎有问题。有人能看到我可能做错了什么,或者这是一个bug吗?

如果您确定您的bucket
p_date={yyyy}-{MM}-{dd}{HH}:00:00/。
包含数据,那么您需要确保正确加载了分区。试着跑步

MSCK REPAIR TABLE recent_events_2d_v2

然后重新运行查询。

您需要将日期格式更改为
'yyyy-MM-dd HH:\'00:00\'
(即文字“00:00”而不是分钟和秒占位符)

分区投影处理日期的方式留下了一些需要改进的地方。如果你说时间间隔是一小时,那么时间戳四舍五入到最近的一小时似乎是合理的,但事实并非如此。Athena将使用实际的“now”来生成分区值,如果您的日期格式包含分钟和秒的字段,这些字段也将被填充


我假设,当您使用硬编码时间戳时,它起作用的原因是雅典娜使用该值作为序列的种子,并且所有其他时间戳也将与小时对齐。

我使用的是分区投影()因此,我不需要加载分区。我也确定其中有数据,因为在我的原始帖子中,我提到,当我将投影范围从
NOW-2day
更改为set datetime时,我能够获取数据。您的set datetime范围与您的相对范围不同。能否尝试将设置的日期时间范围设置为与相对值相等?是否尝试更长的相对范围?像现在-20年?或者在
NOW-2DAYS,NOW
Yes周围使用引号-时间范围是有效的,因此将此
2YEARS
设置为无效。添加引号还会导致分析异常
一般性内部错误:无法在索引0处分析文本“NOW-2YEARS”