Aracılığıyla paylaş


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

  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. Ardından atlayan pencere tetikleyicisi özelliklerinizi tanımlayın.
  3. 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 hourtetikleyici 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 startTimedeğ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 Failediş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 boyutunun interval ) değeri, tetikleyici oluşturulduktan sonra değiştirilemez. Bu kısıtlama, yeniden çalıştırmaların ve bağımlılık değerlendirmelerinin triggerRun 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 yeni endTime değeri kabul eder. Yeni endTime değer zaten yürütülen pencerelerde önceyse tetikleyici durur. Aksi takdirde, yeni endTime 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

Ö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, öğesinin startTime değerini geçerli Eşgüdümlü Evrensel Saat (UTC) saati olarak ayarlayın. öğesinin endTime 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"
      }
    }
    
  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.