Share via


Zamanlamaya göre işlem hattı çalıştıran bir tetikleyici oluşturma

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Bu makalede zamanlama tetikleyicisi ve zamanlama tetikleyicisi oluşturma, başlatma ve izleme adımları hakkında bilgi sağlanır. Diğer tetikleyici türleri için bkz . İşlem hattı yürütme ve tetikleyiciler.

Zamanlama tetikleyicisi oluştururken tetikleyici için bir zamanlama (başlangıç tarihi, yinelenme, bitiş tarihi vb.) belirtir ve işlem hattıyla ilişkilendirirsiniz. İşlem hatları ve tetikleyiciler çoka çok ilişkisine sahiptir. Birden çok tetikleyici tek bir işlem hattını başlatabilir. Tek bir tetikleyici birden fazla işlem hattını başlatabilir.

Aşağıdaki bölümlerde zamanlama tetikleyicisi oluşturma adımları farklı şekillerde sağlanır.

Azure Data Factory ve Synapse portal deneyimi

bir işlem hattını düzenli aralıklarla (saatlik, günlük vb.) çalışacak şekilde zamanlamak için bir zamanlama tetikleyicisi oluşturabilirsiniz.

Dekont

Tetikleyiciyi işlem hattıyla ilişkilendiren ve işlem hattını çalıştırıp izleyen bir işlem hattı ve zamanlama tetikleyicisi oluşturma konusunda tam bir kılavuz için bkz . Hızlı Başlangıç: Data Factory kullanıcı arabirimini kullanarak veri fabrikası oluşturma.

  1. Data Factory'de Düzenle sekmesine veya Azure Synapse'te Tümleştir sekmesine geçin.


  1. Menüden Tetikleyici'yi ve ardından Yeni/Düzenle'yi seçin.

    New trigger menu

  2. Tetikleyici Ekle sayfasında Tetikleyici seç...'i ve ardından +Yeni'yi seçin.

    Add triggers - new trigger

  3. Yeni Tetikleyici sayfasında aşağıdaki adımları uygulayın:

    1. Tür için Zamanlama'nın seçili olduğunu onaylayın.

    2. Başlangıç Tarihi için tetikleyicinin başlangıç tarih saatini belirtin. Varsayılan olarak Eşgüdümlü Evrensel Saat 'te (UTC) geçerli tarih saatine ayarlanır.

    3. Tetikleyicinin oluşturulacağı saat dilimini belirtin. Saat dilimi ayarı, Gelişmiş yinelenme seçeneklerinde Başlangıç Tarihi, Bitiş Tarihi ve Yürütme Zamanlarını Zamanla için geçerlidir. Saat Dilimi ayarının değiştirilmesi başlangıç tarihinizi otomatik olarak değiştirmez. Belirtilen saat diliminde Başlangıç Tarihi'nin doğru olduğundan emin olun. Tetikleyicinin Zamanlanmış Yürütme zamanının Başlangıç Tarihi'nde dikkate alınacağını unutmayın (Başlangıç Tarihi'nin Yürütme süresinden en az 1 dakika daha kısa olduğundan emin olun, aksi takdirde bir sonraki yinelenmede işlem hattını tetikler).

      Dekont

      Gün ışığından yararlanmayı gözlemleyen saat dilimleri için, yinelenme Gün veya üzeri olarak ayarlanmışsa tetikleyici zamanı yılda iki kez değişiklik için otomatik olarak ayarlanır. Gün ışığından yararlanma değişikliğini geri çevirmek için lütfen utc gibi gün ışığından yararlanmayı gözlemlemeyen bir saat dilimi seçin

      Önemli

      Gün ışığından yararlanma ayarı yalnızca yinelenme gün veya üzeri olarak ayarlanmış tetikleyici için gerçekleşir. Tetikleyici Saat veya Dakika sıklığı olarak ayarlanırsa, düzenli aralıklarla tetik almaya devam eder.

    4. Tetikleyici için Yinelenme'yi belirtin. Açılan listeden değerlerden birini seçin (Her dakika, Saatlik, Günlük, Haftalık ve Aylık). Metin kutusuna çarpanı girin. Örneğin, tetikleyicinin her 15 dakikada bir çalışmasını istiyorsanız, Her Dakika'yı seçer ve metin kutusuna 15 girersiniz.

    5. Yinelenme'de, açılan listeden "Günler, Haftalar veya Aylar" seçeneğini belirlerseniz ,"Gelişmiş yinelenme seçenekleri"ni bulabilirsiniz. Advanced recurrence options of Day(s), Week(s) or Month(s)

    6. Bitiş tarihi saati belirtmek için Bitiş Tarihi Belirt'i seçin ve Bitiş Tarihi'yi belirtin, ardından Tamam'ı seçin. Her işlem hattı çalıştırmasının bir maliyeti vardır. Test ediyorsanız işlem hattının yalnızca birkaç kez tetiklendiğinden emin olmak isteyebilirsiniz. Öte yandan, yayımlama saatiyle bitiş saati arasında işlem hattının çalıştırılmasına yetecek kadar zaman olduğundan emin olun. Tetikleyiciyi kullanıcı arabirimine kaydettiğinizde değil, yalnızca çözümü yayımladıktan sonra etkinleşir.

      Trigger settings

      Trigger settings for End Date

  4. Yeni Tetikleyici penceresinde, Etkinleştirildi seçeneğinde Evet'i ve ardından Tamam'ı seçin. Tetikleyiciyi daha sonra devre dışı bırakmak için bu onay kutusunu kullanabilirsiniz.

    Trigger settings - Next button

  5. Yeni Tetikleyici penceresinde uyarı iletisini gözden geçirin ve Tamam'ı seçin.

    Trigger settings - Finish button

  6. Değişiklikleri yayımlamak için Tümünü yayımla'yı seçin. Değişiklikleri yayımlayana kadar tetikleyici işlem hattı çalıştırmalarını tetiklemeye başlamaz.

    Publish button

  7. Soldaki İşlem Hattı çalıştırmaları sekmesine geçin, ardından listeyi yenilemek için Yenile'yi seçin. Zamanlanmış tetikleyici tarafından tetiklenen işlem hattı çalıştırmalarını görürsünüz. Tetikleyen sütunundaki değerlere dikkat edin. Şimdi Tetikle seçeneğini kullanırsanız, listede el ile tetikleyicinin çalıştığını görürsünüz.


  1. Tetikleyici Çalıştırmaları \ Zamanlama görünümüne geçin.


Azure PowerShell

Dekont

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Bu bölümde, zamanlama tetikleyicisi oluşturmak, başlatmak ve izlemek için Azure PowerShell'in nasıl kullanılacağı gösterilmektedir. Bu örneğin çalıştığını görmek için önce Hızlı Başlangıç: Azure PowerShell kullanarak veri fabrikası oluşturma bölümüne gidin. Ardından aşağıdaki kodu main yöntemine ekleyin. Bu kod, 15 dakikada bir çalışan bir zamanlama tetikleyicisi oluşturur ve başlatır. Tetikleyici, Hızlı Başlangıcın bir parçası olarak oluşturduğunuz Adfv2QuickStartPipeline adlı bir işlem hattıyla ilişkilendirilir.

Önkoşullar

Örnek Kod

  1. C:\ADFv2QuickStartPSH\ klasöründe aşağıdaki içeriğe sahip MyTrigger.json adlı bir JSON dosyası oluşturun:

    Önemli

    JSON dosyasını kaydetmeden önce startTime öğesinin değerini geçerli UTC saati olarak ayarlayın. endTime öğesinin değerini geçerli UTC saatini bir saat geçmiş olarak ayarlayın.

    {
        "properties": {
            "name": "MyTrigger",
            "type": "ScheduleTrigger",
            "typeProperties": {
                "recurrence": {
                    "frequency": "Minute",
                    "interval": 15,
                    "startTime": "2017-12-08T00:00:00Z",
                    "endTime": "2017-12-08T01:00:00Z",
                    "timeZone": "UTC"
                }
            },
            "pipelines": [{
                    "pipelineReference": {
                        "type": "PipelineReference",
                        "referenceName": "Adfv2QuickStartPipeline"
                    },
                    "parameters": {
                        "inputPath": "adftutorial/input",
                        "outputPath": "adftutorial/output"
                    }
                }
            ]
        }
    }
    

    JSON kod parçacığında:

    • Tetikleyicinin tür öğesi "ScheduleTrigger" olarak ayarlanır.

    • Frequency öğesi "Minute" olarak, interval öğesi ise 15 olarak ayarlanır. Bu nedenle tetikleyici, işlem hattını başlangıç ve bitiş saatleri arasında 15 dakikada bir çalıştırır.

    • timeZone öğesi, tetikleyicinin oluşturulduğu saat dilimini belirtir. Bu ayar hem startTime hem de endTime'ı etkiler.

    • endTime öğesi startTime öğesinin değerinden bir saat sonradır. Bu nedenle tetikleyici işlem hattını başlangıç saatinden 15 dakika, 30 dakika ve 45 dakika sonra çalıştırır. Başlangıç saatini geçerli UTC saatiyle ve bitiş saatini başlangıç saatini bir saat geçe kadar güncelleştirmeyi unutmayın.

      Önemli

      UTC saat dilimi için startTime ve endTime'ın 'yyyy-MM-ddTHH:mm:ssZ' biçimini izlemesi gerekirken, diğer saat dilimleri için startTime ve endTime 'yyyy-MM-ddTHH:mm:ss' değerlerini izler.

      ISO 8601 standardına göre, zaman damgasına Z soneki tarih saat değerini UTC saat dilimine işaretler ve timeZone alanını işe yaramaz hale getirir. UTC saat dilimi için Z soneki eksik olsa da tetikleyici etkinleştirmesi sırasında hataya neden olur.

    • Tetikleyici, Adfv2QuickStartPipeline işlem hattıyla ilişkilendirilir. Birden çok işlem hattını bir tetikleyiciyle ilişkilendirmek için daha fazla pipelineReference bölümü ekleyin.

    • Hızlı Başlangıç'taki işlem hattı iki parametre değeri alır: inputPath ve outputPath. Ve bu parametreler için değerleri tetikleyiciden geçirirsiniz.

  2. Set-AzDataFactoryV2Trigger cmdlet'ini kullanarak bir tetikleyici oluşturun:

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Tetikleyicinin durumunun Get-AzDataFactoryV2Trigger cmdlet'ini kullanarak Durduruldu olduğunu onaylayın:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Start-AzDataFactoryV2Trigger cmdlet'ini kullanarak tetikleyiciyi başlatın:

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Tetikleyicinin durumunun Get-AzDataFactoryV2Trigger cmdlet'ini kullanarak başlatıldığını onaylayın:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Get-AzDataFactoryV2TriggerRun cmdlet'ini kullanarak Azure PowerShell'de tetikleyici çalıştırmalarını alın. Tetikleyici çalıştırmaları hakkındaki bilgileri almak için aşağıdaki komutu düzenli aralıklarla yürütebilirsiniz. TriggerRunStartedAfter ve TriggerRunStartedBefore değerlerini tetikleyici tanımınızdaki değerlerle eşleşecek şekilde güncelleştirin:

    Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
    

    Dekont

    Zamanlama tetikleyicilerinin tetikleyici zamanı UTC zaman damgasında belirtilir. TriggerRunStartedAfter ve TriggerRunStartedBefore ayrıca UTC zaman damgasını da bekler

    Azure portalında tetikleyici çalıştırmalarını ve işlem hattı çalıştırmalarını izlemek için bkz . İşlem hattı çalıştırmalarını izleme.

Azure CLI

Bu bölümde, zamanlama tetikleyicisi oluşturmak, başlatmak ve izlemek için Azure CLI'nin nasıl kullanılacağı gösterilmektedir. Bu örneğin çalıştığını görmek için önce Hızlı Başlangıç: Azure CLI kullanarak Azure Data Factory oluşturma bölümüne gidin. Ardından, her 15 dakikada bir çalışan bir zamanlama tetikleyicisi oluşturmak ve başlatmak için aşağıdaki adımları izleyin. Tetikleyici, Hızlı Başlangıcın bir parçası olarak oluşturduğunuz Adfv2QuickStartPipeline adlı bir işlem hattıyla ilişkilendirilir.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Örnek Kod

  1. Çalışma dizininizde tetikleyicinin özellikleriyle MyTrigger.json adlı bir JSON dosyası oluşturun. Bu örnek için aşağıdaki içeriği kullanın:

    Önemli

    JSON dosyasını kaydetmeden önce startTime öğesinin değerini geçerli UTC saati olarak ayarlayın. endTime öğesinin değerini geçerli UTC saatini bir saat geçmiş olarak ayarlayın.

    {
        "name": "MyTrigger",
        "type": "ScheduleTrigger",
        "typeProperties": {
            "recurrence": {
                "frequency": "Minute",
                "interval": 15,
                "startTime": "2017-12-08T00:00:00Z",
                "endTime": "2017-12-08T01:00:00Z",
                "timeZone": "UTC"
            }
        },
        "pipelines": [{
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "Adfv2QuickStartPipeline"
                },
                "parameters": {
                    "inputPath": "adftutorial/input",
                    "outputPath": "adftutorial/output"
                }
            }
        ]
    }
    

    JSON kod parçacığında:

    • Tetikleyicinin tür öğesi "ScheduleTrigger" olarak ayarlanır.

    • Frequency öğesi "Minute" olarak, interval öğesi ise 15 olarak ayarlanır. Bu nedenle tetikleyici, işlem hattını başlangıç ve bitiş saatleri arasında 15 dakikada bir çalıştırır.

    • timeZone öğesi, tetikleyicinin oluşturulduğu saat dilimini belirtir. Bu ayar hem startTime hem de endTime'ı etkiler.

    • endTime öğesi startTime öğesinin değerinden bir saat sonradır. Bu nedenle tetikleyici işlem hattını başlangıç saatinden 15 dakika, 30 dakika ve 45 dakika sonra çalıştırır. Başlangıç saatini geçerli UTC saatiyle ve bitiş saatini başlangıç saatini bir saat geçe kadar güncelleştirmeyi unutmayın.

      Önemli

      UTC saat dilimi için startTime ve endTime'ın 'yyyy-MM-ddTHH:mm:ssZ' biçimini izlemesi gerekirken, diğer saat dilimleri için startTime ve endTime 'yyyy-MM-ddTHH:mm:ss' değerlerini izler.

      ISO 8601 standardına göre, zaman damgasına Z soneki tarih saat değerini UTC saat dilimine işaretler ve timeZone alanını işe yaramaz hale getirir. UTC saat dilimi için Z soneki eksik olsa da tetikleyici etkinleştirmesi sırasında hataya neden olur.

    • Tetikleyici, Adfv2QuickStartPipeline işlem hattıyla ilişkilendirilir. Birden çok işlem hattını bir tetikleyiciyle ilişkilendirmek için daha fazla pipelineReference bölümü ekleyin.

    • Hızlı Başlangıç'taki işlem hattı iki parametre değeri alır: inputPath ve outputPath. Ve bu parametreler için değerleri tetikleyiciden geçirirsiniz.

  2. az datafactory trigger create komutunu kullanarak bir tetikleyici oluşturun :

    az datafactory trigger create --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory"  --name "MyTrigger" --properties @MyTrigger.json  
    
  3. az datafactory trigger show komutunu kullanarak tetikleyicinin durumunun Durduruldu olduğunu onaylayın:

    az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  4. az datafactory trigger start komutunu kullanarak tetikleyiciyi başlatın :

    az datafactory trigger start --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  5. Az datafactory trigger show komutunu kullanarak tetikleyicinin durumunun Başlatıldı olduğunu onaylayın:

    az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  6. az datafactory trigger-run query-by-factory komutunu kullanarak Azure CLI'da tetikleyici çalıştırmalarını alın. Tetikleyici çalıştırmaları hakkında bilgi almak için aşağıdaki komutu düzenli aralıklarla yürütebilirsiniz. Tetikleyici tanımınızdaki değerlerle eşleşecek şekilde son güncelleştirme sonrası ve son güncelleştirme öncesi değerlerini güncelleştirin:

    az datafactory trigger-run query-by-factory --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --filters operand="TriggerName" operator="Equals" values="MyTrigger" --last-updated-after "2017-12-08T00:00:00" --last-updated-before "2017-12-08T01:00:00"
    

    Dekont

    Zamanlama tetikleyicilerinin tetikleyici zamanı UTC zaman damgasında belirtilir. last-updated-after ve last-updated-before da UTC zaman damgası bekler

    Azure portalında tetikleyici çalıştırmalarını ve işlem hattı çalıştırmalarını izlemek için bkz . İşlem hattı çalıştırmalarını izleme.

.NET SDK

Bu bölümde tetikleyici oluşturmak, başlatmak ve izlemek için .NET SDK'sının nasıl kullanılacağı gösterilmektedir. Bu örneğin çalıştığını görmek için önce Hızlı Başlangıç: .NET SDK'sını kullanarak veri fabrikası oluşturma bölümüne gidin. Ardından aşağıdaki kodu main yöntemine ekleyin. Bu kod, 15 dakikada bir çalışan bir zamanlama tetikleyicisi oluşturur ve başlatır. Tetikleyici, Hızlı Başlangıcın bir parçası olarak oluşturduğunuz Adfv2QuickStartPipeline adlı bir işlem hattıyla ilişkilendirilir.

15 dakikada bir çalışan bir zamanlama tetikleyicisi oluşturmak ve başlatmak için aşağıdaki kodu main yöntemine ekleyin:

            // Create the trigger
            Console.WriteLine("Creating the trigger");

            // Set the start time to the current UTC time
            DateTime startTime = DateTime.UtcNow;

            // Specify values for the inputPath and outputPath parameters
            Dictionary<string, object> pipelineParameters = new Dictionary<string, object>();
            pipelineParameters.Add("inputPath", "adftutorial/input");
            pipelineParameters.Add("outputPath", "adftutorial/output");

            // Create a schedule trigger
            string triggerName = "MyTrigger";
            ScheduleTrigger myTrigger = new ScheduleTrigger()
            {
                Pipelines = new List<TriggerPipelineReference>()
                {
                    // Associate the Adfv2QuickStartPipeline pipeline with the trigger
                    new TriggerPipelineReference()
                    {
                        PipelineReference = new PipelineReference(pipelineName),
                        Parameters = pipelineParameters,
                    }
                },
                Recurrence = new ScheduleTriggerRecurrence()
                {
                    // Set the start time to the current UTC time and the end time to one hour after the start time
                    StartTime = startTime,
                    TimeZone = "UTC",
                    EndTime = startTime.AddHours(1),
                    Frequency = RecurrenceFrequency.Minute,
                    Interval = 15,
                }
            };

            // Now, create the trigger by invoking the CreateOrUpdate method
            TriggerResource triggerResource = new TriggerResource()
            {
                Properties = myTrigger
            };
            client.Triggers.CreateOrUpdate(resourceGroup, dataFactoryName, triggerName, triggerResource);

            // Start the trigger
            Console.WriteLine("Starting the trigger");
            client.Triggers.Start(resourceGroup, dataFactoryName, triggerName);

UTC dışında farklı bir saat diliminde tetikleyici oluşturmak için aşağıdaki ayarlar gereklidir:

<<ClientInstance>>.SerializationSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
<<ClientInstance>>.SerializationSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;
<<ClientInstance>>.SerializationSettings.DateParseHandling = DateParseHandling.None;
<<ClientInstance>>.DeserializationSettings.DateParseHandling = DateParseHandling.None;
<<ClientInstance>>.DeserializationSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
<<ClientInstance>>.DeserializationSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;

Tetikleyici çalıştırmasını izlemek için, örnekteki son Console.WriteLine deyiminden önce aşağıdaki kodu ekleyin:

            // Check that the trigger runs every 15 minutes
            Console.WriteLine("Trigger runs. You see the output every 15 minutes");

            for (int i = 0; i < 3; i++)
            {
                System.Threading.Thread.Sleep(TimeSpan.FromMinutes(15));
                List<TriggerRun> triggerRuns = client.Triggers.ListRuns(resourceGroup, dataFactoryName, triggerName, DateTime.UtcNow.AddMinutes(-15 * (i + 1)), DateTime.UtcNow.AddMinutes(2)).ToList();
                Console.WriteLine("{0} trigger runs found", triggerRuns.Count);

                foreach (TriggerRun run in triggerRuns)
                {
                    foreach (KeyValuePair<string, string> triggeredPipeline in run.TriggeredPipelines)
                    {
                        PipelineRun triggeredPipelineRun = client.PipelineRuns.Get(resourceGroup, dataFactoryName, triggeredPipeline.Value);
                        Console.WriteLine("Pipeline run ID: {0}, Status: {1}", triggeredPipelineRun.RunId, triggeredPipelineRun.Status);
                        List<ActivityRun> runs = client.ActivityRuns.ListByPipelineRun(resourceGroup, dataFactoryName, triggeredPipelineRun.RunId, run.TriggerRunTimestamp.Value, run.TriggerRunTimestamp.Value.AddMinutes(20)).ToList();
                    }
                }
            }

Azure portalında tetikleyici çalıştırmalarını ve işlem hattı çalıştırmalarını izlemek için bkz . İşlem hattı çalıştırmalarını izleme.

Python SDK'sı

Bu bölümde, tetikleyici oluşturmak, başlatmak ve izlemek için Python SDK'sını nasıl kullanacağınız gösterilmektedir. Bu örneğin çalıştığını görmek için önce Hızlı Başlangıç: Python SDK'sını kullanarak veri fabrikası oluşturma bölümüne gidin. Ardından Python betiğinde "işlem hattı çalıştırmasını izleme" kod bloğundan sonra aşağıdaki kod bloğunu ekleyin. Bu kod, belirtilen başlangıç ve bitiş saatleri arasında 15 dakikada bir çalışan bir zamanlama tetikleyicisi oluşturur. start_time değişkenini geçerli UTC saatiyle ve end_time değişkenini geçerli UTC saatini bir saat geçe güncelleştirin.

    # Create a trigger
    tr_name = 'mytrigger'
    scheduler_recurrence = ScheduleTriggerRecurrence(frequency='Minute', interval='15',start_time='2017-12-12T04:00:00Z', end_time='2017-12-12T05:00:00Z', time_zone='UTC')
    pipeline_parameters = {'inputPath':'adftutorial/input', 'outputPath':'adftutorial/output'}
    pipelines_to_run = []
    pipeline_reference = PipelineReference('copyPipeline')
    pipelines_to_run.append(TriggerPipelineReference(pipeline_reference, pipeline_parameters))
    tr_properties = TriggerResource(properties=ScheduleTrigger(description='My scheduler trigger', pipelines = pipelines_to_run, recurrence=scheduler_recurrence))
    adf_client.triggers.create_or_update(rg_name, df_name, tr_name, tr_properties)

    # Start the trigger
    adf_client.triggers.start(rg_name, df_name, tr_name)

Azure portalında tetikleyici çalıştırmalarını ve işlem hattı çalıştırmalarını izlemek için bkz . İşlem hattı çalıştırmalarını izleme.

Azure Resource Manager şablonu

Tetikleyici oluşturmak için Azure Resource Manager şablonu kullanabilirsiniz. Adım adım yönergeler için bkz . Resource Manager şablonu kullanarak Azure veri fabrikası oluşturma.

Tetikleyici başlangıç zamanını işlem hattına geçirme

Azure Data Factory sürüm 1; SliceStart, SliceEnd, WindowStart ve WindowEnd sistem değişkenlerini kullanarak bölümlenmiş verilerin okunmasını veya yazmasını destekler. Azure Data Factory ve Synapse işlem hatlarının geçerli sürümünde, işlem hattı parametresini kullanarak bu davranışı elde edebilirsiniz. Tetikleyicinin başlangıç saati ve zamanlanan saati, işlem hattı parametresinin değeri olarak ayarlanır. Aşağıdaki örnekte tetikleyici için zamanlanan saat, scheduledRunTime parametresine bir değer olarak geçirilir:

"parameters": {
    "scheduledRunTime": "@trigger().scheduledTime"
}

JSON şeması

Aşağıdaki JSON tanımı, zamanlama ve yinelenme ile zamanlama tetikleyicisinin nasıl oluşturulacağını gösterir:

{
  "properties": {
    "type": "ScheduleTrigger",
    "typeProperties": {
      "recurrence": {
        "frequency": <<Minute, Hour, Day, Week, Month>>,
        "interval": <<int>>,             // Optional, specifies how often to fire (default to 1)
        "startTime": <<datetime>>,
        "endTime": <<datetime - optional>>,
        "timeZone": "UTC"
        "schedule": {                    // Optional (advanced scheduling specifics)
          "hours": [<<0-23>>],
          "weekDays": [<<Monday-Sunday>>],
          "minutes": [<<0-59>>],
          "monthDays": [<<1-31>>],
          "monthlyOccurrences": [
               {
                    "day": <<Monday-Sunday>>,
                    "occurrence": <<1-5>>
               }
           ]
        }
      }
    },
   "pipelines": [
            {
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "<Name of your pipeline>"
                },
                "parameters": {
                    "<parameter 1 Name>": {
                        "type": "Expression",
                        "value": "<parameter 1 Value>"
                    },
                    "<parameter 2 Name>" : "<parameter 2 Value>"
                }
           }
      ]
  }
}

Önemli

parameters özelliği, pipelines öğesinin zorunlu bir özelliğidir. İşlem hattınız herhangi bir parametre almasa bile, parameters özelliği için boş bir JSON tanımı eklemeniz gerekir.

Şemaya genel bakış

Aşağıdaki tabloda bir tetikleyicinin yinelenmesi ve zamanlanmasıyla ilgili ana şema öğelerinin genel bir özeti verilmiştir:

JSON özelliği Açıklama
startTime Bir Tarih-Saat değeri. Basit zamanlamalar için startTime özelliğinin değeri ilk oluşum için geçerli olur. Karmaşık zamanlamalar için tetikleyici belirtilen startTime değerinden önce başlamaz.
UTC saat dilimi için biçim, 'yyyy-MM-ddTHH:mm:ssZ'diğer saat dilimi için biçimindedir 'yyyy-MM-ddTHH:mm:ss'.
endTime Tetikleyicinin bitiş tarihi ve saati. Tetikleyici belirtilen bitiş tarihi ve saatinden sonra yürütülmez. Bu özelliğin değeri geçmişte olamaz. Bu özellik isteğe bağlıdır.
UTC saat dilimi için biçim, 'yyyy-MM-ddTHH:mm:ssZ'diğer saat dilimi için biçimindedir 'yyyy-MM-ddTHH:mm:ss'.
timeZone Tetikleyicinin oluşturulduğu saat dilimi. Bu ayar startTime, endTime ve schedule değerlerini etkiler. Desteklenen saat diliminin listesine bakın
recurrence Tetikleyici için yinelenme kurallarını belirten bir yinelenme nesnesi. recurrence nesnesi şu öğeleri destekler: frequency, interval, endTime, count ve schedule. Bir yinelenme nesnesi tanımlanırken frequency öğesi gereklidir. Yinelenme nesnesinin diğer öğeleri isteğe bağlıdır.
frequency Tetikleyicinin yineleneceği sıklık birimi. “Minute”, “hour”, “day”, “week” ve “month” değerleri desteklenir.
interval Tetikleyicinin çalışma sıklığını belirten frequency değerinin aralığını gösteren bir pozitif tamsayı. Örneğin interval değeri 3, frequency değeri de "week" ise tetikleyici 3 haftada bir yinelenir.
schedule Tetikleyicinin yinelenme zamanlaması. frequency değeri belirtilen bir tetikleyici, yinelenmesini bir yinelenme zamanlamasına göre değiştirir. schedule özelliği, yinelenme için dakika, saat, haftanın günü, ayın günü ve hafta numarası tabanlı değişiklikleri içerir.

Önemli

UTC saat dilimi için startTime ve endTime'ın 'yyyy-MM-ddTHH:mm:ssZ' biçimini izlemesi gerekirken, diğer saat dilimleri için startTime ve endTime 'yyyy-MM-ddTHH:mm:ss' değerlerini izler.

ISO 8601 standardına göre, zaman damgasına Z soneki tarih saat değerini UTC saat dilimine işaretler ve timeZone alanını işe yaramaz hale getirir. UTC saat dilimi için Z soneki eksik olsa da tetikleyici etkinleştirmesi sırasında hataya neden olur.

Şema varsayılanları, sınırlar ve örnekler

JSON özelliği Tür Zorunlu Default value Geçerli değerler Örnek
startTime String Evet Hiçbiri ISO-8601 Tarih-Saatleri UTC saat dilimi için "startTime" : "2013-01-09T09:30:00-08:00Z"
diğer saat dilimi için "2013-01-09T09:30:00-08:00"
timeZone String Evet Hiçbiri Saat Dilimi Değerleri "UTC"
recurrence Object Evet Hiçbiri Yinelenme nesnesi "recurrence" : { "frequency" : "monthly", "interval" : 1 }
interval Sayı No 1 1-1.000 "interval":10
endTime String Evet Hiçbiri Gelecekteki bir zamanı temsil eden Tarih-Saat değeri. UTC saat dilimi için "endTime" : "2013-02-09T09:30:00-08:00Z"
diğer saat dilimi için "endTime" : "2013-02-09T09:30:00-08:00"
schedule Object No Hiçbiri Zamanlama nesnesi "schedule" : { "minute" : [30], "hour" : [8,17] }

Saat dilimi seçeneği

Zamanlama tetikleyicileri için desteklenen bazı saat dilimleri şunlardır:

Saat Dilimi UTC Uzaklığı (Yaz Saati Olmayan Kaydetme) timeZone Değeri Gün ışığından Yararlanmayı Gözlemleme Zaman Damgası Biçimi
Eşgüdümlü Evrensel Saat 0 UTC No 'yyyy-MM-ddTHH:mm:ssZ'
Pasifik Saati (PT) -8 Pacific Standard Time Evet 'yyyy-MM-ddTHH:mm:ss'
Merkezi Saat (CT) -6 Central Standard Time Evet 'yyyy-MM-ddTHH:mm:ss'
Doğu Saati (ET) -5 Eastern Standard Time Evet 'yyyy-MM-ddTHH:mm:ss'
Greenwich Saati (GMT) 0 GMT Standard Time Evet 'yyyy-MM-ddTHH:mm:ss'
Orta Avrupa Standart Saati 1+ W. Europe Standard Time Evet 'yyyy-MM-ddTHH:mm:ss'
Hindistan Standart Saati (IST) +5:30 India Standard Time No 'yyyy-MM-ddTHH:mm:ss'
Çin Standart Saati +8 China Standard Time No 'yyyy-MM-ddTHH:mm:ss'

Bu liste tamamlanmadı. Saat dilimi seçeneklerinin tam listesi için portal Tetikleyici oluşturma sayfasında keşfedin

startTime özelliği

Aşağıdaki tabloda startTime özelliğinin bir tetikleyici çalıştırmasını nasıl denetlediği gösterilmektedir:

startTime değeri Zamanlama olmadan yinelenme Zamanlama ile yinelenme
Başlangıç zamanı geçmişte Başlangıç zamanından sonraki ilk gelecek yürütme zamanını hesaplar ve bu zamanda çalıştırır.

Son yürütme zamanına göre yaptığı hesaplamalarla sonraki yürütmeleri çalıştırır.

Bu tablonun altındaki örneğe bakın.
Tetikleyici belirtilen başlangıç zamanından önce başlamaz. İlk yinelenme, başlangıç zamanından hesaplanan zamanlamayı temel alır.

Sonraki yürütmeleri yinelenme zamanlamasına göre çalıştırır.
Başlangıç zamanı gelecekte veya güncel Belirtilen başlangıç zamanında bir kez çalışır.

Son yürütme zamanına göre yaptığı hesaplamalarla sonraki yürütmeleri çalıştırır.
Tetikleyici belirtilen başlangıç zamanından önce başlamaz. İlk yinelenme, başlangıç zamanından hesaplanan zamanlamayı temel alır.

Sonraki yürütmeleri yinelenme zamanlamasına göre çalıştırır.

Başlangıç zamanı geçmişte olduğunda ve bir yinelenme olmasına rağmen zamanlama olmadığında neler olacağını gösteren bir örneğe bakalım. Geçerli zamanın 2017-04-08 13:00, başlangıç zamanının 2017-04-07 14:00 ve yinelenmenin iki günde bir olduğunu varsayalım. (Yinelenme değeri frequency özelliği "day" ve interval özelliği 2 olarak ayarlanarak tanımlanır.) startTime değerinin geçmişte olduğuna ve geçerli saatten önce oluştuğuna dikkat edin.

Bu koşullar altında, ilk yürütme konumundadır 2017-04-0914:00. Zamanlayıcı altyapısı çalıştırma yinelenmelerini başlangıç zamanından itibaren hesaplar. Geçmişteki örnekler dikkate alınmaz. Altyapı gelecekte gerçekleşen bir sonraki örneği kullanır. Bu senaryoda, başlangıç saati konumundadır 2017-04-072:00pm, bu nedenle sonraki örnek o zamandan iki gün sonradır ve bu da konumundadır 2017-04-092:00pm.

İlk yürütme zamanı startTime değeri 2017-04-05 14:00 veya 2017-04-01 14:00 olsa bile değişmez. İlk yürütme sonrasındaki yürütmeler zamanlama kullanılarak hesaplanır. Bu nedenle, sonraki yürütmeler adresinde 2017-04-112:00pm, sonra 2017-04-13 adresinde 2:00pm, sonra 2017-04-15 da konumunda 2:00pmve benzeri.

Son olarak, bir tetikleyicinin zamanlamasında saatler veya dakikalar ayarlanmazsa varsayılan olarak ilk yürütmenin saat veya dakikaları kullanılır.

schedule özelliği

Diğer yandan, zamanlama kullanımı tetikleyici yürütme sayısını sınırlayabilir. Örneğin, aylık sıklığa sahip bir tetikleyici 31. günde çalışacak şekilde zamanlanırsa, tetikleyici yalnızca 31. günü olan aylarda çalışır.

Diğer yandan zamanlama, tetikleyici çalıştırma sayısını da genişletebilir. Örneğin, aylık sıklığa sahip olan ve ayın 1. ve 2. günlerinde çalışacak şekilde zamanlanan bir tetikleyici, ayda bir kez çalışmak yerine ayın 1. ve 2. günlerinde çalışır.

Birden fazla schedule öğesi belirtilmişse değerlendirme sırası en büyük zamanlama ayarından en küçüğe doğru olur. Değerlendirme hafta numarasıyla başlar ve arkasından ayın günü, haftanın günü, saat ve son olarak dakika gelir.

Aşağıdaki tabloda schedule öğeleri ayrıntılı bir şekilde açıklanmıştır:

JSON öğesi Açıklama Geçerli değerler
minutes Tetikleyicinin çalıştığı dakika değeri.
  • Tamsayı
  • Tamsayı dizisi
hours Tetikleyicinin çalıştığı saat değeri.
  • Tamsayı
  • Tamsayı dizisi
weekDays Tetikleyicinin çalıştığı hafta günleri. Bu değer yalnızca haftalık bir sıklık ile belirtilebilir.
  • Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
  • Gün değerleri dizisi (en fazla dizi boyutu 7’dir)
  • Gün değerleri büyük/küçük harfe duyarlı değildir
monthlyOccurrences Tetikleyicinin çalıştığı ay günleri. Bu değer yalnızca aylık bir sıklık ile belirtilebilir.
  • monthlyOccurrence nesnelerinin dizisi: { "day": day, "occurrence": occurrence }.
  • day özniteliği, tetikleyicinin çalıştığı gündür. Örneğin, day değeri {Sunday} olan bir monthlyOccurrences özelliği, ayın her Pazar günü anlamına gelir. day özniteliği gereklidir.
  • occurrence özniteliği, ay içinde belirtilen day değerinin gerçekleşmesidir. Örneğin, day ve occurrence değerleri {Sunday, -1} olan bir monthlyOccurrences özelliği, ayın son Pazar günü anlamına gelir. occurrence özniteliği isteğe bağlıdır.
monthDays Tetikleyicinin çalıştığı ay günü. Bu değer yalnızca aylık bir sıklık ile belirtilebilir.
  • Herhangi bir değer <= -1 ve >= -31
  • Herhangi bir değer >= 1 ve <= 31
  • Değerler dizisi

Tetikleyici yineleme zamanlaması örnekleri

Bu bölümde yinelenme zamanlaması örnekleri sağlanmış ve schedule nesnesi ile bunun öğelerine odaklanılmıştır.

Örneklerde interval değerinin 1 olduğu ve zamanlama tanımına göre frequency değerinin doğru olduğu varsayılmıştır. Örneğin, hem "day" şeklinde bir frequency değeri hem de schedule nesnesinde bir "monthDays" değişikliği olamaz. Bu gibi kısıtlamalar önceki bölümde yer alan tabloda belirtilmiştir.

Örnek Açıklama
{"hours":[5]} Her gün 05.00'te çalıştır.
{"minutes":[15], "hours":[5]} Her gün 05.15'te çalıştır.
{"minutes":[15], "hours":[5,17]} Her gün 05.15 ve 17.15’te çalıştır.
{"minutes":[15,45], "hours":[5,17]} Her gün 05.15, 05.45, 17.15 ve 17.45’te çalıştır.
{"minutes":[0,15,30,45]} 15 dakikada bir çalıştır.
{hours":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]} Saatte bir çalıştır. Bu tetikleyici saatte bir çalışır. startTime değeri belirtilirse dakikalar bu değer tarafından denetlenir. Bir değer belirtilmezse dakikalar, oluşturma zamanı tarafından denetlenir. Örneğin başlangıç zamanı veya oluşturma zamanı (hangisi geçerliyse) 12:25 ise tetikleyici 00.25, 01.25, 02.25, ... ve 23.25 saatlerinde çalışır.

Bu zamanlama, frequency değeri “hour”, interval değeri 1 olan ve schedule olmayan bir tetikleyiciye sahip olmakla eşdeğerdir. Bu zamanlama farklı frequency ve interval değerleriyle kullanılarak başka tetikleyiciler oluşturulabilir. Örneğin, frequency değeri “day” olduğunda her gün çalışan zamanlama, frequency değeri “month” olduğunda yalnızca ayda bir kere çalışır.
{"minutes":[0]} Her saat başı çalıştır. Bu tetikleyici 12.00, 01.00, 02.00 gibi bir saatte başlayarak saat başı çalışır.

Bu zamanlama, sıklık değeri "hour" olan ve startTime değeri sıfır dakika olan veya zamanlama içermeyen ancak "day" frekans değerine sahip bir tetikleyiciye eşdeğerdir. Sıklık değeri "hafta" veya "ay" ise, zamanlama sırasıyla haftada bir gün veya yalnızca ayda bir gün yürütülür.
{"minutes":[15]} Her saat başını 15 dakika geçe çalıştır. Bu tetikleyici, 00.15, 01.15, 02.15, vb. bir saatte başlayıp 23.15’te bitecek şekilde her saat başını 15 dakika geçe çalışır.
{"hours":[17], "weekDays":["saturday"]} Her hafta Cumartesi günleri saat 17.00'de çalıştır.
{"hours":[17], "weekDays":["monday", "wednesday", "friday"]} Her hafta Pazartesi, Çarşamba ve Cuma günleri saat 17.00'de çalıştır.
{"minutes":[15,45], "hours":[17], "weekDays":["monday", "wednesday", "friday"]} Her hafta Pazartesi, Çarşamba ve Cuma günleri saat 17.15 ve 17.45'te çalıştır.
{"minutes":[0,15,30,45], "weekDays":["monday", "tuesday", "wednesday", "thursday", "friday"]} Haftanın her günü 15 dakikada bir çalıştır.
{"minutes":[0,15,30,45], "hours": [9, 10, 11, 12, 13, 14, 15, 16] "weekDays":["monday", "tuesday", "wednesday", "thursday", "friday"]} Haftanın her günü 09.00 ile 16.45 arasında 15 dakikada bir çalıştır.
{"weekDays":["tuesday", "thursday"]} Salı ve Perşembe günleri belirtilen başlangıç saatinde çalıştır.
{"minutes":[0], "hours":[6], "monthDays":[28]} Her ayın 28. gününde saat 06.00'da çalıştır (frequency değerinin “month” olduğu kabul edilir).
{"minutes":[0], "hours":[6], "monthDays":[-1]} Ayın son günü saat 06.00'da çalıştır. Bir tetikleyiciyi ayın son gününde çalıştırmak için 28, 29, 30 veya 31 yerine -1 değerini kullanın.
{"minutes":[0], "hours":[6], "monthDays":[1,-1]} Her ayın ilk ve son günü saat 06.00'da çalıştır.
{monthDays":[1,14]} Her ayın birinci ve 14. gününde belirtilen başlangıç zamanında çalıştır.
{"minutes":[0], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1}]} Her ayın ilk Cuma günü saat 05.00'te çalıştır.
{"monthlyOccurrences":[{"day":"friday", "occurrence":1}]} Her ayın ilk Cuma gününde belirtilen başlangıç zamanında çalıştır.
{"monthlyOccurrences":[{"day":"friday", "occurrence":-3}]} Her ay, ayın sondan üçüncü Cuma gününde belirtilen zamanda çalıştır.
{"minutes":[15], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} Her ayın ilk ve son Cuma günü saat 05.15'te çalıştır.
{"monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} Her ayın ilk ve son Cuma günü belirtilen başlangıç zamanında çalıştır.
{"monthlyOccurrences":[{"day":"friday", "occurrence":5}]} Her ayın beşinci Cuma günü belirtilen başlangıç zamanında çalıştır. Bir ayda beşinci Cuma günü yoksa, işlem hattı yalnızca beşinci Cuma günlerinde çalışacak şekilde zamanlandığından çalışmaz. Tetikleyiciyi ayın son Cuma gününde çalıştırmak istiyorsanız occurrence değeri için 5 yerine -1 yazın.
{"minutes":[0,15,30,45], "monthlyOccurrences":[{"day":"friday", "occurrence":-1}]} Ayın son Cuma günü 15 dakikada bir çalıştır.
{"minutes":[15,45], "hours":[5,17], "monthlyOccurrences":[{"day":"wednesday", "occurrence":3}]} Her ayın üçüncü Çarşamba günü 05.15, 05.45, 17.15 ve 17.45’te çalıştır.