2016-08-18 4 views
8

Фон: У меня есть запланированные трубопроводы для копирования данных из источника в пункт назначения. Это планируется запустить ежедневно в определенное время.Azure Data Factory - Как я могу запускать запланированные/одноразовые трубопроводы?

Задача: Входной набор данных к трубопроводу является внешним и недоступен через определенные промежутки времени. Это означает, что операция копирования должна будет дождаться начала запланированного времени начала, упомянутого в Pipeline. Учитывая объем данных, я не хочу терять свое время здесь.

Требование: В любой момент времени у меня есть доступ к моменту ввода моего набора входных данных. Имея это в руке, я хочу знать, как вызвать конвейер ADF с C#, хотя его планируется начать только в определенное время.

ответ

8

Я столкнулся с этой же проблемой, мне нужно было запустить мой конвейер только тогда, когда была выполнена локальная работа. Для этого я изменил локальное задание, чтобы запустить конвейер в качестве последнего шага. У меня есть запись here о том, как запустить конвейер ADF с C#. Here - ссылка на ссылку разработчика ADF, которая также может быть полезна. У меня также есть пример here о том, как запускать конвейеры ADF из Azure Functions, если вы заинтересованы. Это использует тот же код из первого примера, но я получаю выгоду от запуска всего процесса в облаке и возможности использования планировщика функций azure.

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

public void StartPipeline(string resourceGroup, string dataFactory, string pipelineName, DateTime slice) 
    { 
     var pipeline = inner_client.Pipelines.Get(resourceGroup, dataFactory, pipelineName); 

     pipeline.Pipeline.Properties.Start = DateTime.Parse($"{slice.Date:yyyy-MM-dd}T00:00:00Z"); 
     pipeline.Pipeline.Properties.End = DateTime.Parse($"{slice.Date:yyyy-MM-dd}T23:59:59Z"); 
     pipeline.Pipeline.Properties.IsPaused = false; 

     inner_client.Pipelines.CreateOrUpdate(resourceGroup, dataFactory, new PipelineCreateOrUpdateParameters() 
     { 
      Pipeline = pipeline.Pipeline 
     }); 
    } 
0

Для запуска АПД вам необходимо иметь входной набор данных в состоянии «Готов». Если он находится в состоянии готовности, вы можете вручную перейти на вкладку «Мониторинг», чтобы вручную «перезапустить», если набор данных ввода не готов, вам нужно сделать этот набор данных готовым вручную запустить АПД.

2

Если вы хотите, чтобы вызвать эту работу только один раз, то вы можете установить StartDate и EndDate быть в то же время:

pipeline.Pipeline.Properties.Start = DateTime.Parse($"{someDate:yyyy-MM-dd}T00:00:00Z"); 
pipeline.Pipeline.Properties.End = DateTime.Parse($"{someDate:yyyy-MM-dd}T00:00:00Z"); 
pipeline.Pipeline.Properties.IsPaused = false; 
0

Вот несколько примеров из Microsoft Doc ... (link for reference)

(относится только к V2)

{ 
    "properties": { 
     "name": "MyTrigger", 
     "type": "ScheduleTrigger", 
     "typeProperties": { 
      "recurrence": { 
       "frequency": "Hour", 
       "interval": 1, 
       "startTime": "2017-11-01T09:00:00-08:00", 
       "endTime": "2017-11-02T22:00:00-08:00" 
      } 
     }, 
     "pipelines": [{ 
       "pipelineReference": { 
        "type": "PipelineReference", 
        "referenceName": "SQLServerToBlobPipeline" 
       }, 
       "parameters": {} 
      }, 
      { 
       "pipelineReference": { 
        "type": "PipelineReference", 
        "referenceName": "SQLServerToAzureSQLPipeline" 
       }, 
       "parameters": {} 
      } 
     ] 
    } 
} 

сохранить код с .JSON файла в вашей директории и развернуть с помощью следующих ...

Set-AzureRmDataFactoryV2Trigger -ResourceGroupName resourceGroupName -DataFactoryName dataFactoryName -Name "ScheduleTriggerName" -DefinitionFile ".\ScheduleTriggerName.json" 
Смежные вопросы