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, çakışmayan 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, karmaşık senaryolar için bir özellik paketi sunan 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). Zamanlama tetikleyicisi ile atlayan pencere tetikleyicisi arasındaki farkı daha fazla anlamak için lütfen burayı ziyaret edin.
Azure Data Factory ve 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 ve atlayan pencere tetikleyici özelliklerinizi tanımlayın.
- Bitirdiğinizde, Kaydet'i 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ü. Tür, "TumblingWindowTrigger" sabit değeridir. | String | "TumblingWindowTrigger" | Yes |
runtimeState | Tetikleyici çalışma zamanının geçerli durumu. Not: Bu öğe readOnly şeklindedir<>. |
String | "Başlatıldı," "Durduruldu", "Devre Dışı" | Yes |
frequency | Tetikleyicinin yinelendiği sıklık birimini (dakika, saat veya ay) temsil eden dize. startTime tarih değerleri sıklık değerinden daha ayrıntılıysa, pencere sınırları hesaplandığında startTime tarihleri dikkate alınır. Örneğin, sıklık değeri saatlik ve startTime değeri 2017-09-01T10:10:10Z ise, ilk penceredir (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). | String | "Minute," "Hour", "Month" | Yes |
interval | Tetikleyicinin çalışma sıklığını belirten frequency değerinin aralığını gösteren bir pozitif tamsayı. Örneğin, aralık 3 ve sıklık "saat" ise tetikleyici 3 saatte bir yinelenir. Not: En düşük pencere aralığı 5 dakikadır. |
Tamsayı | Pozitif bir tamsayı. | Yes |
startTime | Geçmişte olabilecek ilk oluşum. İlk tetikleyici aralığıdır (startTime, startTime + aralığı). | DateTime | DateTime değeri. | Yes |
endTime | Geçmişte olabilecek son oluşum. | DateTime | DateTime değeri. | Yes |
Gecikme | 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, startTime penceresini değiştirmez. Örneğin, 00:10:00 gecikme değeri 10 dakikalık bir gecikme anlamına gelir. | Timespan (ss:dd:ss) |
Varsayılan değerin 00:00:00 olduğu zaman aralığı değeri. | 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. maxConcurrency = 10 ise 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). MaxConcurrency = 10 örneğine devam edersek, hazır 10 pencere varsa toplam 10 işlem hattı çalıştırması vardır. Yalnızca 1 pencere hazırsa yalnızca 1 işlem hattı çalıştırması vardır. | Tamsayı | 1 ile 50 arasında bir tamsayı. | Yes |
retryPolicy: Sayı | İşlem hattı çalıştırması "Başarısız" olarak işaretlenmeden önce yeniden deneme sayısı. | Tamsayı | 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. | Tamsayı | Varsayılan değerin 30 olduğu saniye sayısı. En düşük değer 30'dur. | Hayır |
dependsOn: type | TumblingWindowTriggerReference türü. 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 bir zaman aralığı değeri | Hayır |
dependsOn: uzaklık | Bağımlılık tetikleyicisinin uzaklığı. | Timespan (ss:dd:ss) |
Kendi kendine bağımlılıkta negatif olması gereken bir zaman aralığı değeri. Değer belirtilmezse, pencere tetikleyicinin kendisiyle aynıdır. | Kendi Kendine Bağımlılık: Evet Diğer: Hayır |
Not
Yuvarlanan pencere tetikleyicisi yayımlandıktan sonra aralık ve sıklık düzenlenemez.
WindowStart ve WindowEnd sistem değişkenleri
İşlem hattı tanımınızda atlayan pencere tetikleyicisinin WindowStart ve WindowEnd sistem değişkenlerini (sorgunun bir bölümü için) kullanabilirsiniz. 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 buna uygun olarak "MyWindowStart" ve "MyWindowEnd" parametrelerinizi kullanın.
Yedek doldurma senaryosunda pencerelerin yürütme sırası
Tetikleyicinin startTime değeri geçmişteyse, M=(CurrentTime- TriggerStartTime)/TumblingWindowSize formülünü temel alarak tetikleyici, gelecekteki çalıştırmaları yürütmeden önce {M} backfill(geçmiş) çalıştırmalarını paralel olarak 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çilen startTime'dan tüm çalıştırmaların çalıştırılacağını unutmayın. Uzun bir süre boyunca geri doldurmanız gerekiyorsa, sıralı bir geçmiş yükü gerçekleştirmeniz önerilir.
Mevcut TriggerResource öğeleri
Mevcut TriggerResource öğelerinin güncelleştirilmesinde aşağıdaki noktalar geçerlidir:
- Tetikleyicinin frequency öğesinin (veya pencere boyutunun) değeri, tetikleyici oluşturulduktan sonra interval öğesiyle birlikte değiştirilemez. TriggerRun yeniden çalıştırmalarının ve bağımlılık değerlendirmelerinin düzgün çalışması için bu gereklidir
- Tetikleyicinin endTime öğesinin değeri değişirse (eklenir veya güncelleştirilirse), zaten işlenen pencerelerin durumu sıfırlanmaz . Tetikleyici yeni endTime değerini kabul eder. Yeni endTime değeri zaten yürütülen pencerelerde önceyse tetikleyici durur. Aksi takdirde, yeni endTime değeriyle karşılaşıldığında tetikleyici durur.
İşlem hatlarının kullanıcı tarafından atanan yeniden denemeleri
İşlem hattı hatalarında atlayan 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. Bu, tetikleyici tanımındaki "retryPolicy" özelliği kullanılarak belirtilebilir.
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 et
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 ve belirtilen pencerenin bağımlılıkları yeniden çalıştırıldıktan sonra 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ığı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ığı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.
{ "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 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"
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
- Tetikleyiciler hakkında ayrıntılı bilgi için bkz . İşlem hattı yürütme ve tetikleyiciler.
- Atlayan pencere tetikleyici bağımlılığı oluşturun.
- İş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