Есть много способов сделать это, но одна идея состоит в том, чтобы запрашивать данные, используя Redshift Spectrum. Spectrum - это способ запроса S3 (называемый внешней базой данных) с использованием кластера Redshift.
Действительно высокоуровневый, один из способов сделать это - создать задание Glue Crawler для сканирования вашего сегмента S3, которое создает Внешняя база данных, которую Redshift Spectrum может запросить.
Таким образом, вам не нужно перемещать данные в сам Redshift. Скорее всего, вы захотите сохранить свою «промежуточную» область в S3 и перенести в Redshift только те данные, которые готовы для использования в отчетах или аналитике, которые будут вашей таблицей Customer Dim.
Вот документация чтобы сделать это: https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html
Чтобы запланировать ETL SQL: я не верю, что в Redshift встроен инструмент планирования, но вы можете сделать это несколькими способами:
1) Получить инструмент ETL или настроить задания CRON на сервере или Glue, который планирует запуск сценариев SQL. Я делаю это с помощью скрипта Python, который подключается к базе данных, а затем запускает текст SQL. Это было бы немного больше массовой операции. Вы также можете сделать это в лямбда-функции и настроить ее на триггер Cloudwatch, который может быть в расписании cron
2) Использовать лямбда-функцию, которая запускает скрипт SQL, который вы хотите, чтобы триггеры S3 ставит в это ведро. Таким образом, скрипт будет работать сразу после удаления файла. Это будет в основном операция в реальном времени. DMS сбрасывает файлы очень быстро, поэтому файлы будут сбрасываться несколько раз в минуту, что может затруднить их обработку.