amazon-redshift - 对时间戳查询的数据进行分区
问题描述
我在 s3 上对我想通过频谱访问的数据进行了分区。当前的格式文件结构类似于:s3://bucket/dir/year=2018/month=11/day=19/hour=12/file.parquet
我使用胶水对数据进行了分区,方法是解析我用于时间戳的字段,ts
. 我将执行的大多数查询都将在ts
现场进行,因为它们是比每日更精细的时间戳范围查询(可能跨越多天或少于一天,但通常涉及时间。
我将如何在我的数据上创建每小时(首选,如果需要,每天可以工作)分区,因此当我查询ts
(或另一个时间戳)字段时,它将正确访问分区。如果需要,我可以使用不同的分区重新创建我的数据。大多数示例/文档只是每天存储数据,并在查询中使用日期字段。
如果需要,我很乐意提供更多信息。
谢谢!
示例查询类似于:
SELECT * FROM spectrum.data
WHERE ts between '2018-11-19 17:30:00' AND '2018-11-20 04:45:00'
解决方案
频谱不是那么直观。您可能需要将时间戳转换为年、月、日...
而不是像 WHERE (year > x AND year < y) AND (month > x1 AND month < x2) AND ...
看起来很丑。
你可以考虑做点别的:
- s3://bucket/dir/date=2018-11-19/time=17:30:00/file.parquet
在这种情况下,您的查询会更简单
哪里(日期<'2018-11-19'和日期>'2018-11-17')和(时间<'17:30:00'和时间>'17:20:00')
或使用 BETWEEN https://docs.aws.amazon.com/redshift/latest/dg/r_range_condition.html
推荐阅读
- javascript - 如何使用javascript查找哪些html元素最近更改了背景颜色
- cmake - CMAKE:如何设置包含给定目标路径和文件名的编译器标志
- pandas - 将字符串转换为日期时间对象时出现空值错误
- utf-8 - JMeter 非 gui 传递 UTF-8 参数
- reactjs - 无法读取未定义的属性“markdownRemark”(GatsbyJS)
- python - 将多个条件逻辑应用于唯一帐户实例
- python - 为什么会出现一个黑框而不是我的图标 python tkinter
- save-as - 使用多个数据库保存
- javascript - 传单瓷砖边缘显示
- firebase - Firebase 分析事件到达 BigQuery 的延迟不一致