2016-08-18 5 views
8

पृष्ठभूमि: मैंने स्रोत से गंतव्य तक डेटा की प्रतिलिपि बनाने के लिए पाइपलाइनों को निर्धारित किया है। यह एक विशिष्ट समय पर दैनिक चलाने के लिए निर्धारित है।Azure डेटा फैक्टरी - मैं अनुसूचित/वनटाइम पाइपलाइनों को कैसे ट्रिगर कर सकता हूं?

समस्या: पाइपलाइन के इनपुट डेटासेट बाहरी है और विशिष्ट समय अंतराल पर उपलब्ध नहीं है। इसका मतलब है कि कॉपी गतिविधि को पाइपलाइन में उल्लिखित अनुसूचित प्रारंभ समय तक किकऑफ करने के लिए इंतजार करना होगा। डेटा की मात्रा को ध्यान में रखते हुए, मैं अपना समय बर्बाद नहीं करना चाहता हूं।

आवश्यकता: किसी भी समय मेरे पास मेरे इनपुट डेटा सेट उपलब्ध होने पर उस समय तक पहुंच है। इसके साथ में, मैं जानना चाहता हूं कि सी # से एडीएफ पाइपलाइन कैसे ट्रिगर करें, हालांकि यह केवल एक विशिष्ट समय पर शुरू होने के लिए निर्धारित है।

उत्तर

8

मैं इस मुद्दे पर भाग गया, मुझे स्थानीय पाइप पूरा होने पर ही मेरी पाइपलाइन चलाने की आवश्यकता थी। ऐसा करने के लिए मैंने स्थानीय नौकरी को पाइपलाइन को अपने अंतिम चरण के रूप में बंद करने के लिए संशोधित किया। मेरे पास सी # के साथ एडीएफ पाइपलाइन शुरू करने के तरीके पर here लिखना है। Here एडीएफ डेवलपर संदर्भ का लिंक है जो सहायक भी हो सकता है। यदि आप रुचि रखते हैं, तो मेरे पास एज़ेफ़ फ़ंक्शंस से एडीएफ पाइपलाइनों को ट्रिगर करने के तरीके पर here का उदाहरण भी है। यह पहले उदाहरण से एक ही कोड का उपयोग कर रहा है लेकिन मुझे क्लाउड में पूरी प्रक्रिया चलाने और एज़ूर फ़ंक्शन शेड्यूलर का उपयोग करने की क्षमता प्राप्त करने का लाभ मिलता है।

पाइपलाइन को संशोधित करने के लिए यहां प्रासंगिक विधि है। स्लाइस चलाने के लिए आपको प्रारंभ और समाप्ति तिथियों को बदलना होगा।

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

यहाँ माइक्रोसॉफ्ट डॉक्टर से कुछ उदाहरण है ... (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": {} 
      } 
     ] 
    } 
} 

सहेजें अपने dir में .json फ़ाइल के साथ कोड का उपयोग निम्नलिखित की तैनाती आदेश ...

Set-AzureRmDataFactoryV2Trigger -ResourceGroupName resourceGroupName -DataFactoryName dataFactoryName -Name "ScheduleTriggerName" -DefinitionFile ".\ScheduleTriggerName.json" 
संबंधित मुद्दे

 संबंधित मुद्दे