Я новичок в хранилище данных Snowflake и хочу загружать данные с помощью snowpipe и автоматического захвата с внешнего этапа (корзина S3), которая содержит несколько папок (по одной для каждой базы данных), а внутри этих папок есть несколько файлов по 1 для каждой стол. Файлы в разных папках будут обновляться в разное время, и в настоящее время я использую автоматическую загрузку до go S3, SQS и Snowpipe.
Мой пример ведра S3 настроен следующим образом:
myS3bucket.s3amazonaws.com
/db1
account.csv
product.csv
/db2
invoice.csv
employees.csv
В настоящее время я понимаю, что я бы создал один канал для каждой таблицы, поэтому account.csv будет относиться к 1 каналу, который будет заполнять таблицу учетных записей, а затем product.csv будет относиться к другому каналу для заполнения таблицы продуктов и т.д. c.
На данный момент похоже, что все каналы будут запущены, если я добавлю новый файл в корзину, поскольку уведомление находится в корзине.
Мои вопросы:
- Это правильно, что все каналы запускаются, когда я добавляю новый файл? Нужно ли мне настраивать db1 и db2 как разные внешние этапы, чтобы, если я добавлю файл в папку db1, будут прочитаны только каналы, связанные с этим внешним этапом?
- Я читал, что можно использовать SNS, но не уверен как это работает для снежной трубы. Отправляет ли S3 сообщение, чтобы он мог определить, какой канал вызывать, и передает сообщение в этот канал?
- Есть ли лучший подход к этому, чем тот, который я использую выше?
Спасибо за любую помощь