Если в базе данных есть 2 или более каналов, все ли они будут иметь один и тот же канал уведомлений? - PullRequest
1 голос
/ 16 октября 2019

(Интересная строка разговора, которая может быть полезна для других пользователей Снежинки ...)


Q: Я создал две трубы длябаза данных для накачки данных от ASW s3. Каналы практически идентичны, за исключением целевой таблицы.

Идея заключалась в том, чтобы вставить данные в разные таблицы на основе исходного префикса s3. Я создал два уведомления о событиях в корзине s3 для просмотра двух разных префиксов, но так как уведомление_channel, генерируемое snoflake, одинаково для обоих каналов, невозможно различить события на стороне SF, и оба канала вставляют данные из обеих папок s3.

Так это баг или фича?

1 Ответ

2 голосов
/ 16 октября 2019

A: Нередко разные трубы имеют одинаковое значение ARN в одном регионе. До тех пор, пока ваши целевые назначения различаются в операторах копирования, вы должны правильно вводить данные правильно. Трубы в одних и тех же регионах имеют одну и ту же очередь для передачи данных. Все сводится к правильной настройке пункта назначения.


Q: Мои целевые назначения отличаются:

создание или замена трубы gen3_pipeauto_ingest = true

как

copy into gen3_data(device_id, event_datetime, load, origin, inserted_at ) 
from (select $1:device_id, TO_TIMESTAMP_NTZ($1:event_datetime), $1:load, metadata$filename, CURRENT_TIMESTAMP from @rawdata)

создать или заменить трубу gen2_pipe auto_ingest = true

как

copy into gen2_data(device_id, event_datetime, load, origin, inserted_at) 
from (select $1:device_id, TO_TIMESTAMP_NTZ($1:event_datetime), $1:load, metadata$filename, CURRENT_TIMESTAMP from @rawdata)

Обе таблицы gen2 и gen3 получаютодни и те же данные, в основном gen2, является копией gen3.

Если оба канала подписаны на один ARN, как я могу различить события?

A: Совместное использование очередей (ARN) между каналами нормально. Пока ваша целевая таблица отличается в обоих операторах (для обоих каналов) и не включает в себя очистку ни в одном из каналов, когда файл попадает в корзину, он загружается в обе таблицы gen3_data и gen2_data. Вы можете сбросить файл и проверить его. Дайте мне знать, если возникнут какие-либо проблемы, и мы сможем отладить.


Q: В этом и заключается проблема. Я хочу отделить данные, поступающие от s3, и для этого у меня есть два отдельных события S3, надеясь, что каналы снежинки будут перечислены в каждом своем событии. Но оба канала имеют одинаковый ARN, поэтому разделение на этом уровне кажется невозможным, или это так?

A: Может быть, я не правильно понимаю это. Вы хотите загрузить один и тот же файл в обе целевые таблицы или вы различаете файлы, которые загружаются в соответствующие вкладки? Вы можете включить префикс в оператор при создании внешнего этапа. Когда файл данных выгружается в корзину, все каналы, которые соответствуют пути каталога рабочей области, выполняют однократную загрузку файла в соответствующие таблицы назначения.

Например: создать двухэтапную стадию для DEV is "s3://bucket/sub_folder_1 ", а для PROD -" s3://bucket/sub_folder_2 ".

Создание копии в командах для целевой таблицы, определенной также как указывающая на соответствующие этапы.


Q: Да, спасибо! Я придумал решение с префиксами / папками при создании внешних этапов.

Первоначальная идея состояла в том, чтобы использовать два события на стороне s3 с разными префиксами, поскольку они нам нужны и для других целей.

Таким образом, нет никакого способа сообщить каналу, какую очередь слушать (т. Е. Назначить ARN) явно, есть?

A: Это правильно. Ссылка этапа должна быть разной для каждого канала, иначе они могут загрузить один и тот же набор файлов в одну или несколько таблиц назначения.

...