Как смоделировать хранилище S3 для запроса с помощью AWS RedShift Spectrum - PullRequest
1 голос
/ 13 июня 2019

В базе данных MySQL присутствует таблица users.

Мы хотим перенести данные в AMazon S3 для дальнейшего анализа с помощью Amazon Redshift.

  • День1 - Экспорт10 строк данных из таблицы пользователей (Всего строк: 10)
  • День2 - Экспорт 2 дополнительных строки данных из таблицы пользователей (Всего строк: 12)
  • День3 - Экспорт измененной строки иНовая строка данных из таблицы пользователей (Всего строк: 13)

Предлагаемые соглашения по именам папок и данных S3:

s3://data/users/YYYYMMDD/users-YYYYMMDDHHMMSS.csv

Amazon Redshift загружает данные следующим образом для запроса всех строк изпользователи:

create EXTERNAL TABLE redshift_users from s3://data/users

Вопросы:

  1. Мы предполагаем, что измененная строка в День 3 будет иметь приоритет из данных, доступных в День 1?
  2. Что, если 2 существующие строки будут удалены в День 4, как это должно быть сохранено в S3, что может понять Redshift?

1 Ответ

0 голосов
/ 13 июня 2019

Чтобы ответить на ваши вопросы:

  1. Вы предполагаете, что новая строка будет иметь приоритет автоматически над старой строкой - это НЕ тот случай. Вам нужно добавить столбец «process_timestamp» к вашим данным и обработать их внутри вашего запроса - ваш запрос должен решить, как получить только последнюю строку (для этого я использую оконные функции).

  2. Обычно вы не можете физически разумно удалять строки из S3. Вам необходимо реализовать логический процесс удаления в сочетании с # 1 выше.

...