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.
Data Factory'de Düzenle sekmesine veya Azure Synapse'te Tümleştir sekmesine geçin.
Menüden Tetikleyici'yi ve ardından Yeni/Düzenle'yi seçin.
Tetikleyici Ekle sayfasında Tetikleyici seç...'i ve ardından +Yeni'yi seçin.
Yeni Tetikleyici sayfasında aşağıdaki adımları uygulayın:
Tür için Zamanlama'nın seçili olduğunu onaylayın.
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.
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.
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.
Yinelenme'de, açılan listeden "Günler, Haftalar veya Aylar" seçeneğini belirlerseniz ,"Gelişmiş yinelenme seçenekleri"ni bulabilirsiniz.
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.
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.
Yeni Tetikleyici penceresinde uyarı iletisini gözden geçirin ve Tamam'ı seçin.
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.
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.
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
Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Azure PowerShell. Azure PowerShell'i PowerShellGet ile Windows'a yükleme başlığındaki yönergeleri izleyin.
Örnek Kod
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.
Set-AzDataFactoryV2Trigger cmdlet'ini kullanarak bir tetikleyici oluşturun:
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Tetikleyicinin durumunun Get-AzDataFactoryV2Trigger cmdlet'ini kullanarak Durduruldu olduğunu onaylayın:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Start-AzDataFactoryV2Trigger cmdlet'ini kullanarak tetikleyiciyi başlatın:
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Tetikleyicinin durumunun Get-AzDataFactoryV2Trigger cmdlet'ini kullanarak başlatıldığını onaylayın:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
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
Ç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.
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
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"
az datafactory trigger start komutunu kullanarak tetikleyiciyi başlatın :
az datafactory trigger start --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger"
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"
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:
Ö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-09
14: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-07
2:00pm
, bu nedenle sonraki örnek o zamandan iki gün sonradır ve bu da konumundadır 2017-04-09
2: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-11
2:00pm
, sonra 2017-04-13
adresinde 2:00pm
, sonra 2017-04-15
da konumunda 2:00pm
ve 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. |
|
hours | Tetikleyicinin çalıştığı saat değeri. |
|
weekDays | Tetikleyicinin çalıştığı hafta günleri. Bu değer yalnızca haftalık bir sıklık ile belirtilebilir. |
|
monthlyOccurrences | Tetikleyicinin çalıştığı ay günleri. Bu değer yalnızca aylık bir sıklık ile belirtilebilir. |
|
monthDays | Tetikleyicinin çalıştığı ay günü. Bu değer yalnızca aylık bir sıklık ile belirtilebilir. |
|
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. |
İlgili içerik
- Tetikleyiciler hakkında ayrıntılı bilgi için bkz . İşlem hattı yürütme ve tetikleyiciler.
- İşlem hattında tetikleyici meta verilerine başvurmayı öğrenin, bkz. İşlem Hattı Çalıştırmalarında Tetikleyici Meta Verilerine Başvurma
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin