Atlayan pencerede işlem hattı çalıştıran bir tetikleyici oluşturma
UYGULANANLAR: Azure Data Factory
Azure Synapse Analytics
İpucu
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 atlayan pencere tetikleyicisi oluşturma, başlatma ve izleme adımları sağlanır. Tetikleyiciler ve desteklenen türler hakkında genel bilgi için bkz . İşlem hattı yürütme ve tetikleyiciler.
Atlayan pencere tetikleyicileri, durumu korurken belirtilen bir başlangıç zamanından itibaren periyodik bir zaman aralığında başlatılan bir tetikleyici türüdür. Atlayan pencereler sabit boyutlu, örtüşmeyen ve bitişik zaman aralıkları dizisidir. Atlayan pencere tetikleyicisi, işlem hattıyla bire bir ilişki içerir ve yalnızca tekil bir işlem hattına başvurabilir.
Atlayan pencere tetikleyicisi, zamanlama tetikleyicisi için daha ağır bir alternatiftir. (Diğer atlayan pencere tetikleyicilerine bağımlılık, başarısız bir işi yeniden çalıştırma ve işlem hatları için kullanıcı yeniden denemesini ayarlama) gibi karmaşık senaryolar için bir özellik paketi sunar. Zamanlama tetikleyicisi ile yuvarlanan pencere tetikleyicisi arasındaki farkı daha fazla anlamak için bkz . Tetikleyici türü karşılaştırması.
Azure Data Factory ve Azure Synapse portal deneyimi
- Azure portalında yuvarlanan bir pencere tetikleyicisi oluşturmak için Tetikleyiciler sekmesini ve ardından Yeni'yi seçin.
- Tetikleyici yapılandırma bölmesi açıldıktan sonra Atlayan pencere'yi seçin. Ardından atlayan pencere tetikleyicisi özelliklerinizi tanımlayın.
- Tamamladığınızda Kaydet öğesini seçin.
Atlayan pencere tetikleyici türü özellikleri
Atlayan bir pencere aşağıdaki tetikleyici türü özelliklerine sahiptir:
{
"name": "MyTriggerName",
"properties": {
"type": "TumblingWindowTrigger",
"runtimeState": "<<Started/Stopped/Disabled - readonly>>",
"typeProperties": {
"frequency": <<Minute/Hour>>,
"interval": <<int>>,
"startTime": "<<datetime>>",
"endTime": <<datetime - optional>>,
"delay": <<timespan - optional>>,
"maxConcurrency": <<int>> (required, max allowed: 50),
"retryPolicy": {
"count": <<int - optional, default: 0>>,
"intervalInSeconds": <<int>>,
},
"dependsOn": [
{
"type": "TumblingWindowTriggerDependencyReference",
"size": <<timespan - optional>>,
"offset": <<timespan - optional>>,
"referenceTrigger": {
"referenceName": "MyTumblingWindowDependency1",
"type": "TriggerReference"
}
},
{
"type": "SelfDependencyTumblingWindowTriggerReference",
"size": <<timespan - optional>>,
"offset": <<timespan>>
}
]
},
"pipeline": {
"pipelineReference": {
"type": "PipelineReference",
"referenceName": "MyPipelineName"
},
"parameters": {
"parameter1": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
},
"parameter2": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
},
"parameter3": "https://mydemo.azurewebsites.net/api/demoapi"
}
}
}
}
Aşağıdaki tabloda, atlayan pencere tetikleyicisinin yinelenmesi ve zamanlanmasıyla ilgili ana JSON öğelerine üst düzey bir genel bakış sağlanmaktadır.
JSON öğesi | Açıklama | Tür | İzin verilen değerler | Zorunlu |
---|---|---|---|---|
type |
Tetikleyicinin türü. type sabit değeridirTumblingWindowTrigger . |
String |
TumblingWindowTrigger |
Yes |
runtimeState |
Tetikleyici çalışma zamanının geçerli durumu. Bu öğe readOnly şeklindedir<>. |
String |
Started , Stopped , Disabled |
Yes |
frequency |
Tetikleyicinin yinelendiği sıklık birimini (dakika, saat veya ay) temsil eden dize. startTime Tarih değerleri değerden frequency daha ayrıntılıysa, startTime pencere sınırları hesaplandığında tarihler dikkate alınır. Örneğin, değer ise ve startTime değer hourly 2017-09-01T10:10:10Z isefrequency , ilk penceredir (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). |
String |
Minute , Hour , Month |
Yes |
interval |
Tetikleyicinin ne sıklıkta çalıştırıldığını belirleyen değerin frequency aralığını belirten pozitif bir tamsayı. Örneğin , interval 3 ve frequency ise hour tetikleyici 3 saatte bir yinelenir. En düşük pencere aralığı 5 dakikadır. |
Integer |
Pozitif bir tamsayı. | Yes |
startTime |
Geçmişte olabilecek ilk oluşum. İlk tetikleyici aralığı (startTime , startTime + interval ) şeklindedir. |
DateTime |
Bir DateTime değer. |
Yes |
endTime |
Geçmişte olabilecek son oluşum. | DateTime |
Bir DateTime değer. |
Yes |
delay |
Pencere için veri işlemenin başlatılmasını geciktirme süresi. İşlem hattı çalıştırması, beklenen yürütme süresi ve gecikme süresinden sonra başlatılır. Gecikme, tetikleyicinin yeni bir çalıştırma tetiklemeden önce son süreyi ne kadar bekleyeceğini tanımlar. Gecikme, penceresini startTime değiştirmez. Örneğin, delay 00:10:00 değeri 10 dakikalık bir gecikme anlamına gelir. |
Timespan (ss:dd:ss) |
timespan Varsayılan değer olan bir değerdir00:00:00 . |
Hayır |
maxConcurrency |
Hazır olan pencereler için tetiklenen eşzamanlı tetikleyici çalıştırmalarının sayısı. Örneğin, dün için saatlik çalıştırmaları yedeklemek için 24 pencereye neden olur. = 10 ise maxConcurrency tetikleyici olayları yalnızca ilk 10 pencere için tetiklenir (00:00-01:00 - 09:00-10:00). tetiklenen ilk 10 işlem hattı çalıştırması tamamlandıktan sonra, sonraki 10 pencere için tetikleyici çalıştırmaları tetiklenir (10:00-11:00 - 19:00-20:00). Bu = 10 örneğiyle maxConcurrency devam edersek, hazır 10 pencere varsa toplam 10 işlem hattı çalıştırması vardır. Yalnızca bir pencere hazırsa, yalnızca bir işlem hattı çalışır. |
Integer |
1 ile 50 arasında bir tamsayı. | Yes |
retryPolicy: Count |
İşlem hattı çalıştırması olarak Failed işaretlenmeden önceki yeniden deneme sayısı. |
Integer |
Varsayılan değerin 0 olduğu (yeniden deneme yapılmadığı) bir tamsayı. | Hayır |
retryPolicy: intervalInSeconds |
Saniye cinsinden belirtilen yeniden deneme girişimleri arasındaki gecikme. | Integer |
Varsayılan değerin 30 olduğu saniye sayısı. En düşük değer şeklindedir 30 . |
Hayır |
dependsOn: type |
türü.TumblingWindowTriggerReference Bir bağımlılık ayarlandıysa gereklidir. |
String |
TumblingWindowTriggerDependencyReference , SelfDependencyTumblingWindowTriggerReference |
Hayır |
dependsOn: size |
Atlayan bağımlılık penceresinin boyutu. | Timespan (ss:dd:ss) |
Varsayılan değerin alt tetikleyicinin pencere boyutu olduğu pozitif timespan bir değerdir. |
Hayır |
dependsOn: offset |
Bağımlılık tetikleyicisinin uzaklığı. | Timespan (ss:dd:ss) |
Kendi timespan kendine bağımlılıkta negatif olması gereken bir değer. Değer belirtilmezse, pencere tetikleyicinin kendisiyle aynıdır. |
Kendi Kendine Bağımlılık: Evet Diğer: Hayır |
Not
Atlayan pencere tetikleyicisi yayımlandıktan interval
sonra ve frequency
değerleri düzenlenemez.
WindowStart ve WindowEnd sistem değişkenleri
İşlem hattı tanımınızda yuvarlanan pencere tetikleyicisinin ve WindowEnd
sistem değişkenlerini (sorgunun bir bölümü için) kullanabilirsinizWindowStart
. Sistem değişkenlerini tetikleyici tanımında işlem hattınıza parametre olarak geçirin. Aşağıdaki örnekte bu değişkenleri parametre olarak geçirme adımları gösterilmektedir.
{
"name": "MyTriggerName",
"properties": {
"type": "TumblingWindowTrigger",
...
"pipeline": {
"pipelineReference": {
"type": "PipelineReference",
"referenceName": "MyPipelineName"
},
"parameters": {
"MyWindowStart": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
},
"MyWindowEnd": {
"type": "Expression",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
}
}
}
}
}
İşlem hattı tanımında WindowStart
ve WindowEnd
sistem değişkeni değerlerini kullanmak için ve MyWindowEnd
parametrelerinizi MyWindowStart
uygun şekilde kullanın.
Yedek doldurma senaryosunda pencerelerin yürütme sırası
Tetikleyici startTime
geçmişteyse, sonraki çalıştırmaları yürütmeden önce M=(CurrentTime- TriggerStartTime)/TumblingWindowSize formülünü temel alarak tetikleyici paralel olarak {M} backfill(geçmiş) çalıştırmaları oluşturur ve tetikleyici eşzamanlılığını kabul eder. Pencereler için yürütme sırası, en eski aralıklardan en yeni aralıklara kadar belirleyicidir. Şu anda bu davranışın değiştirilmesi mümkün değildir.
Not
Bu senaryoda, gelecekteki çalıştırmalar yürütülmeden önce seçilenden startTime
tüm çalıştırmalar çalıştırılır. Uzun bir süre boyunca geri doldurmanız gerekiyorsa, ilk geçmiş yüklemesini yapmanızı öneririz.
Mevcut TriggerResource öğeleri
Mevcut TriggerResource
öğelerin güncelleştirilmesi için aşağıdaki noktalar geçerlidir:
- Tetikleyicinin
frequency
öğesiyle birlikte öğesinin (veya pencere boyutununinterval
) değeri, tetikleyici oluşturulduktan sonra değiştirilemez. Bu kısıtlama, yeniden çalıştırmaların ve bağımlılık değerlendirmelerinintriggerRun
düzgün çalışması için gereklidir. - Tetikleyici öğesinin
endTime
değeri değişirse (ekleyerek veya güncelleştirerek), zaten işlenen pencerelerin durumu sıfırlanmaz . Tetikleyici yeniendTime
değeri kabul eder. YeniendTime
değer zaten yürütülen pencerelerde önceyse tetikleyici durur. Aksi takdirde, yeniendTime
değerle karşılaşıldığında tetikleyici durur.
İşlem hatlarının kullanıcı tarafından atanan yeniden denemeleri
İşlem hattı hatalarında atlayan bir pencere tetikleyicisi, kullanıcı müdahalesi olmadan aynı giriş parametrelerini kullanarak başvuruda bulunan işlem hattının yürütülmesini otomatik olarak yeniden deneyebilir. retryPolicy
Bu eylemi belirtmek için tetikleyici tanımındaki özelliğini kullanın.
Atlayan pencere tetikleyici bağımlılığı
Atlayan bir pencere tetikleyicisinin yalnızca veri fabrikasında başka bir atlayan pencere tetikleyicisinin başarıyla yürütülmesinden sonra yürütülmesini istiyorsanız, atlayan pencere tetikleyici bağımlılığı oluşturun.
Atlayan pencere çalıştırmasını iptal etme
Belirli bir pencere Bekliyor, Bağımlılık bekleniyor veya Çalışıyor durumundaysa atlayan bir pencere tetikleyicisi için çalıştırmaları iptal edebilirsiniz:
- Pencere Çalışıyor durumundaysa, ilişkili İşlem Hattı Çalıştırmasını iptal edin ve tetikleyici çalıştırması daha sonra İptal Edildi olarak işaretlenir.
- Pencere Bekliyor veya Bağımlılık bekleniyor durumundaysa, İzleme'den pencereyi iptal edebilirsiniz.
İptal edilmiş bir pencereyi de yeniden çalıştırabilirsiniz. Yeniden çalıştırma, tetikleyicinin en son yayımlanan tanımlarını alır. Belirtilen pencerenin bağımlılıkları yeniden çalıştırıldığında yeniden değerlendirilir.
Azure PowerShell ve Azure CLI örneği
Bu bölümde, tetikleyici oluşturmak, başlatmak ve izlemek için Azure PowerShell'in nasıl kullanılacağı gösterilmektedir.
Not
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.
Ö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ığı altındaki yönergeleri izleyin.
- Azure Data Factory: Veri fabrikası ve işlem hattı oluşturmak için PowerShell kullanarak Azure Data Factory oluşturma başlığı altı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, öğesinin
startTime
değerini geçerli Eşgüdümlü Evrensel Saat (UTC) saati olarak ayarlayın. öğesininendTime
değerini geçerli UTC saatini bir saat geçe ayarlayın.{ "name": "PerfTWTrigger", "properties": { "type": "TumblingWindowTrigger", "typeProperties": { "frequency": "Minute", "interval": "15", "startTime": "2017-09-08T05:30:00Z", "endTime" : "2017-09-08T06:30:00Z", "delay": "00:00:01", "retryPolicy": { "count": 2, "intervalInSeconds": 30 }, "maxConcurrency": 50 }, "pipeline": { "pipelineReference": { "type": "PipelineReference", "referenceName": "DynamicsToBlobPerfPipeline" }, "parameters": { "windowStart": "@trigger().outputs.windowStartTime", "windowEnd": "@trigger().outputs.windowEndTime" } }, "runtimeState": "Started" } }
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ında bilgi almak için aşağıdaki komutu düzenli aralıklarla yürütebilirsiniz.
TriggerRunStartedAfter
veTriggerRunStartedBefore
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"
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.
İlgili içerik
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