Фабрика данных Azure. Как запустить конвейер после успешного завершения другого конвейера - PullRequest
0 голосов
/ 26 февраля 2019

Как в фабрике данных Azure как запустить конвейер после успешного завершения других конвейеров?

Подробно:

Я пытаюсь запустить пакет служб SSIS после успешного завершения других конвейеров.Я уже знаю, что могу сохранить свой пакет служб SSIS как конвейер и запустить его с помощью триггера, как и другие конвейеры.Но как мне убедиться, что конвейер пакета служб SSIS запускается только после завершения других конвейеров?Есть ли такая возможность в Azure или мне нужен какой-то обходной путь для этого?

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

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы всегда можете создать родительский конвейер, который использует Выполнить конвейер и Выполнить действия пакета SSIS .ADF V2 имеет концепцию зависимостей , поэтому существует зависимость между активностью конвейерного выполнения и активностью пакета SSIS.Обязательно установите флажок «Ожидание при завершении» для действия конвейера выполнения, чтобы они выполнялись последовательно, а не параллельно.Вы можете иметь несколько зависимостей для действия, поэтому если вам нужно, чтобы SSIS ожидал 3 пакета вместо одного, это все равно должно работать.

enter image description here

Тогда вместо того, чтобы отдельно запускать другой конвейер (ы) и пакет служб SSIS, вы можете просто запустить родительский конвейер.

0 голосов
/ 26 февраля 2019

Исходя из ваших описаний, я думаю, вы могли бы программно отслеживать состояние выполнения конвейеров фабрики данных Azure.

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

PipelineRun pipelineRun;
while (true)
{
    pipelineRun = client.PipelineRuns.Get(resourceGroup, dataFactoryName, runResponse.RunId);
    Console.WriteLine("Status: " + pipelineRun.Status);
    if (pipelineRun.Status == "InProgress")
        System.Threading.Thread.Sleep(15000);
    else
        break;
}

И запускает пакет служб SSIS, если конвейер работает успешно.

if (pipelineRun.Status == "Succeeded")
   //..do your business

Подробнее см. В этом документе .

...