Избегайте дублирования при параллельном выполнении задания в Azure Synapse

Нужны ваши предложения по разработке кода в Azure Synapse.

У нас есть требование, при котором наши задания будут выполняться параллельно в одно и то же время и вставлять данные в одну и ту же таблицу. Во время этой вставки есть изменения, что повторяющиеся записи будут вставлены в одну и ту же таблицу. Например: если задание A и задание B выполняются одновременно с одинаковыми значениями, то они не существуют или не работают. В этом случае я получу дубликаты с обеих работ. Ограничение первичного ключа или уникальности допускает дублирование в синапсе Azure. Есть ли лучший способ заблокировать таблицы во время вставки данных. Например, если задание A выполняется, задание B не должно вставлять данные в ту же таблицу. Пожалуйста, вылейте свои предложения, так как я новичок в этом. Примечание: мы используем хранимую процедуру для загрузки данных через ADF V2.

Спасибо, Нандини


person Nandini    schedule 30.06.2020    source источник


Ответы (1)


Перед вставкой данных в Azure Synapse необходимо обработать дубликаты в заданиях. Если дубликаты существуют между двумя заданиями, сделайте это после завершения обоих заданий. Это действительно зависит от того, как вы загружаете данные. Вы можете легко справиться, создав временную таблицу, вместо того, чтобы напрямую загружать данные в итоговую таблицу. Пожалуйста, убедитесь, что структура временной таблицы должна быть такой же, как и в итоговой таблице (распределение, разделение, ограничения, возможность пустых значений столбцов). Вы можете использовать SQL BCP / INSERT TO / CTAS / CTAS с переключением разделов с промежуточной таблицей на конечную таблицу.

Если вы можете поделиться конкретным сценарием, будет полезно дать предложения, относящиеся к вашему варианту использования.

person Pradeep    schedule 03.08.2020