amazon-web-services - Athena 分区投影未按预期工作

标签 amazon-web-services aws-glue amazon-athena

我正在从注册分区转移到分区投影。
以前我的数据被 p_year={yyyy}/p_month={MM}/p_day={dd}/p_hour={HH}/... 分区。我将这些移至 p_date={yyyy}-{MM}-{dd} {HH}:00:00/..我有一个最近的事件表,其中存储了最近 2 天的事件。所以我的p_date范围是 NOW-2DAYS,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,NOW我确实得到了结果。
分区投影的相对日期范围似乎有些不对劲。谁能看到我可能做错了什么,或者这是一个错误?

最佳答案

您需要将日期格式更改为 'yyyy-MM-dd HH:\'00:00\'' (即文字“00:00”而不是分钟和秒占位符)。
分区投影处理日期的方式还有一些不足之处。如果您说时间间隔是一小时,时间戳会四舍五入到最接近的小时,这似乎是合理的,但这不是发生的情况。 Athena 将使用实际的“现在”来生成分区值,如果您的日期格式包含分钟和秒字段,这些字段也会被填写。
我认为当您使用硬编码时间戳时它起作用的原因是 Athena 使用该值作为序列的种子,并且所有其他时间戳也将与小时对齐。

关于amazon-web-services - Athena 分区投影未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63943920/

相关文章:

python - css 在 aws 上的 django 的管理页面中不起作用

java - 避免读取消耗 AWS Response 的关闭流

amazon-web-services - 模板错误:Fn::GetAtt 的实例引用未定义的资源 EventHandlerLambdaFunction

sql - Amazon Athena 返回 "mismatched input ' partitioned' expecting {, 'with' }"创建分区时出错

amazon-web-services - 由 ansible 提供的打包程序在 aws codebuild 中失败

python - AWS Glue — 从作业内访问工作流程参数

pyspark - 如何在 AWS Glue 中指定连接类型?

amazon-web-services - 如何将 AWS Glue 表结构复制到 AWS Redshift

amazon-athena - Aws Athena - 创建外部表跳过第一行

amazon-web-services - AWS athena从s3存储桶中获取查询结果文件