Разделение данных для запроса метки времени - PullRequest
0 голосов
/ 19 ноября 2018

Я разделил данные на 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'

1 Ответ

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

Спектрум не так интуитивно понятен. Возможно, вам понадобится преобразовать метку времени в год, месяц, день ...

А чем сделать что-то вроде ГДЕ (год> х И год <у) И (месяц> х1 И месяц <х2) И ... </p>

выглядит некрасиво.

Вы можете заняться чем-то другим:

  1. s3: // ведро / реж / дата = 2018-11-19 / время = 17: 30: 00 / file.parquet

В этом случае ваш запрос будет более простым

ГДЕ (дата <'2018-11-19' И дата> '2018-11-17') И (время <'17: 30: 00 'И время> '17: 20: 00')

ИЛИ используя МЕЖДУ https://docs.aws.amazon.com/redshift/latest/dg/r_range_condition.html

...