Share via


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

  1. Azure portalında yuvarlanan bir pencere tetikleyicisi oluşturmak için Tetikleyiciler sekmesini ve ardından Yeni'yi seçin.
  2. Tetikleyici yapılandırma bölmesi açıldıktan sonra Atlayan Pencere'yi seçin ve atlayan pencere tetikleyici özelliklerinizi tanımlayın.
  3. 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

Ö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.

    {
      "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"
      }
    }
    
  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ı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.