Дубликаты в Snowflake Stream

С настройкой SHOW_INITIAL_ROWS = TRUE мы создали поток поверх представления (которое имеет много объединений). Мы создали хранимую процедуру с одним оператором слияния, который принимает все данные из потока в целевую таблицу. Ниже приведен оператор слияния, используемый хранимой процедурой.

      merge into target tgt
using
(
select id,fname,metadata$action,metadata$isupdate
from emp_stream where not(metadata$action = 'DELETE' and metadata$isupdate = 'TRUE')
) src
on src.id = tgt.id
when matched and metadata$action = 'DELETE' and metadata$isupdate = 'FALSE' then delete

when matched and metadata$action = 'INSERT' and metadata$isupdate = 'TRUE' then update
set  tgt.id = src.id
     ,tgt.fname = src.fname

when not matched and metadata$action = 'INSERT' and metadata$isupdate = 'FALSE' then
insert (id,fname) values (src.id,src.fname);

Была создана задача для запуска хранимой процедуры каждые 8 ​​часов. Он успешно запустился в первый раз, то есть при полной загрузке, при которой все записи из представления вставляются в целевую таблицу. Однако вторая загрузка завершилась неудачно из-за ошибки дублирования строки. Когда мы запросили поток, мы обнаружили две записи с одним и тем же PK (т. е. идентификатором), но с разными идентификаторами строк метаданных и действиями вставки и удаления метаданных, причем для каждой метаданные$isupdate установлено значение false.

Если это обновление, для параметра metadata$isupdate должно быть установлено значение true, что здесь не так. Может ли кто-нибудь помочь нам с этим?

Попытка выполнить добавочную загрузку с использованием потоков в снежинке, но возникает ошибка дублирования строки.

0 ответов

Другие вопросы по тегам