Сбой операции дельта-копирования ADF, удаление частично скопированного файла из озера данных

#azure #azure-data-factory #azure-data-factory-2 #azure-data-lake-gen2

#azure #azure-data-factory #azure-data-factory-2 #azure-data-lake-gen2

Вопрос:

У меня есть почасовой конвейер дельта-загрузки, в котором у меня есть операция копирования для копирования данных с sql server в формат datalake parquet со структурой папок (YY / MM / DD / table_nameHH) для каждого действия:

после операции копирования у меня есть процедура успешного / неудачного обновления записей в контрольной таблице

введите описание изображения здесь

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

Заранее спасибо

p.s я довольно новичок в этом инструменте и ежедневно учусь.

Комментарии:

1. Привет @Kumar AK, надеюсь, у тебя все хорошо. Если мой ответ полезен для вас, надеюсь, вы сможете принять его как ответ. Это может быть полезно для других членов сообщества. Спасибо.

2. У вас есть какие-либо другие проблемы?

3. Спасибо Leon за ваш вклад. Вы сказали, должно ли условие стоять за действием копирования? тогда как мы можем получить @equals(activity(‘Copy_Dimcustomer_AC’).output.executionDetails.status,’Successed’), если мы добавим действие копирования перед копированием? вы имеете в виду, нужно ли добавлять после копирования? если я добавлю копию после этого во время копирования, если это сбой, то наше условие if не будет работать для случаев сбоя, верно?

4. Привет @Kumar AK, это вывод активной копии, мы можем получить статус активной копии из выходной строки JSON. В соответствии со значением статуса мы можем узнать, удалось ли выполнить активное копирование успешно или не удалось. Я привел пример в соответствии с моим пониманием ваших скриншотов. В каждом внутреннем активе это фактически поток. Если условие if истинно, запустите true active flow, false до false active flow. Вы можете получить более подробную информацию из документа условия if.

5. Пожалуйста, дайте мне знать, если это полезно для вас, спасибо ~

Ответ №1:

Пожалуйста, выполните следующие действия:

Вы могли бы добавить условие If за Copy_DimCustomer_AC активным: введите описание изображения здесь

В выражениях условий If создайте выражение, чтобы определить, Copy_DimCustomer_AC.executionDetails.status равно ли оно «Успешно», если нет, то копирование выполнено успешно:

 @equals(activity('Copy_Dimcustomer_AC').output.executionDetails.status,'Succeeded')
 

введите описание изображения здесь

Истинные активные:

введите описание изображения здесь

False active: добавьте команду delete active для удаления файла и запустите Log_failure_status_AC :

введите описание изображения здесь

HTH.