程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了雅典娜分区投影日期格式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决雅典娜分区投影日期格式?

开发过程中遇到雅典娜分区投影日期格式的问题如何解决?下面主要结合日常开发的经验,给出你关于雅典娜分区投影日期格式的解决方法建议,希望对你解决雅典娜分区投影日期格式有所启发或帮助;

我想使用 Athena 分区投影来编写对日期分区列进行过滤的查询。问题是我需要将投影的物理数据格式(S3 文件前缀)与用户查询的日期格式不同。

例如,我在 S3 中的物理数据格式将前缀存储为 URL 编码日期:s3://bucket/table_root/landing_time=yyyy-MM-dd%20HH%3AMM%3Ass.S'

但我希望用户能够使用可读日期(无 URL 编码格式)查询 Athena:

SELEct * FROM table_root where landing_time='2020-01-01 12:00:00.0'

我尝试使用以下表格设置进行分区投影:

projection.landing_time.range: Now-2YEARS,Now
projection.landing_time.type: date
projection.landing_time.interval: 1
projection.landing_time.interval.unit: HOURS
projection.landing_time.format: yyyy-MM-dd'%20'HH'%3A00%3A00.0'
projection.enabled: true

我看到分区投影允许使用表属性进行自定义路径派生:storage.LOCATIOn.template: s3://bucket/table_root/a=${a}/${B}/some_static_subdirectory/${C}/

但我仍然没有看到任何方法来自定义日期列的投影格式并允许它与用于运行查询的格式不同。有没有办法做到这一点?

解决方法

java datetiR_101_11845@eFormatter 允许在格式中插入自定义字符串,例如,文本 The year is %20 YYYY 将被解析为类似 The year is %20 2021 的内容。您可能需要指定 landing_time=yyyy-MM-dd'%20'HH'%3A00%3A00.0' 作为格式,而不仅仅是 yyyy-MM-dd'%20'HH'%3A00%3A00.0'

,

这可以通过添加额外的分区列来处理小时数并将 landing_time 更改为仅处理日期部分来解决。之后,更改 storage.LOCATIOn.template 以包含 URL 编码所需的 url 编码的 %20%3A 值给了我想要的结果。

projection.landing_time.range: 2020-01-01,NOW
projection.landing_time.type: date
projection.landing_time.interval: 1
projection.landing_time.interval.unit: DAYS
projection.landing_time.format: yyyy-MM-dd
projection.hours.type: Integer
projection.hours.range: 0,23
projection.hours.digits: 2
projection.enabled: true
storage.LOCATIOn.template: s3://bucket/table_root/landing_time=${landing_timE}%20${hours}%3A00%3A00.0

使用分区投影的 Athena 查询现在可以采用以下格式编写:

SELEct * FROM table_root where landing_time='2020-01-01' and hours=1; 
SELEct * FROM table_root where landing_time='2020-01-01' and hours>2 and hours<10;

与我的 S3 数据前缀匹配的正确格式将被投影到 S3。

大佬总结

以上是大佬教程为你收集整理的雅典娜分区投影日期格式全部内容,希望文章能够帮你解决雅典娜分区投影日期格式所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: