Bir tetikleyici oluştur, devrilen bir pencerede bir hattı çalıştıran

ŞUNLARA UYGULANIR: Azure Data Factory Azure Synapse Analytics

İpucu

Microsoft Fabric'daki Data Factory, daha basit bir mimariye, yerleşik yapay zekaya ve yeni özelliklere sahip yeni nesil Azure Data Factory. Veri tümleştirmeyi yeni kullanmaya başladıysanız Fabric Data Factory ile başlayın. Mevcut ADF iş yükleri veri bilimi, gerçek zamanlı analiz ve raporlama genelinde yeni özelliklere erişmek için Fabric yükseltebilir.

Bu makale, düşen pencere tetikleyicisi oluşturma, başlatma ve izleme adımlarını sağlar. Genel bilgi ve desteklenen türler için, Pipeline execution and triggers kısmına bakın.

Düşen pencere tetikleyicileri, durum korurken belirtilen başlangıç zamanından itibaren belirli aralıklarla çalışan bir tetikleyici türüdür. Zaman aralıkları, sabit boyutlu, örtüşmeyen ve bitişik olan "tumbling windows" olarak adlandırılan bir diziyi oluşturur. Tümleyen pencere tetikleyicisi, bir boru hattı ile bire bir ilişkiye sahiptir ve yalnızca tek bir boru hattını referans alabilir.

Bir tümsek pencere tetikleyicisi, bir zamanlama tetikleyicisi için daha ağır bir alternatif olabilir. Karmaşık senaryolar için bir dizi özellik sunar, örneğin (diğer döngüsel pencere tetikleyicilerine bağımlılık, başarısız olan bir işi yeniden çalıştırma ve boru hatları için kullanıcı yeniden deneme ayarı yapma). Planlanan bir tetikleyici ile döngüsel pencere tetikleyici arasındaki farkı daha iyi anlamak için, Tetikleyici türü karşılaştırması bölümüne bakın.

Azure Data Factory ve Azure Synapse portalı deneyimi

  1. Azure portalında yuvarlanan pencere tetikleyicisi oluşturmak için Triggers sekmesini ve ardından Yeni öğesini seçin.
  2. Tetikleyici yapılandırma bölmesi açıldıktan sonra Dalgali pencere'yi seçin. Ardından, yumlanma penceresi tetikleyici özelliklerinizi tanımlayın.
  3. Tamamladığınızda, Kaydet'i seçin.

Azure portalında, Data Factory'de dönen pencere tetikleyicisi oluşturmayı gösteren ekran görüntüsü.

Değişken zaman aralığı tetikleyici türü özellikleri

Bir yuvarlanma penceresi 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, yuvarlanan pencere tetikleyicisinin yinelenmesi ve zamanlaması ile ilgili ana JSON öğelerine üst düzey bir genel bakış sağlanır.

JSON öğesi Açıklama Türü İzin verilen değerler Gerekli
type Tetiğin türü. type sabit değer TumblingWindowTrigger'dir. String TumblingWindowTrigger Evet
runtimeState Tetikleyicinin çalışma süresinin mevcut durumu.
Bu öğe readOnly'dir<>.
String Started, Stopped, Disabled Evet
frequency Tetikleyicinin tekrarlanma sıklığını (dakika, saat veya ay) temsil eden bir dize. startTime tarih değerleri frequency değerinden daha ayrıntılıysa, pencere sınırları hesaplanırken startTime tarihler dikkate alınır. Örneğin, eğer frequency değeri hourly ve startTime değeri 2017-09-01T10:10:10Z ise, ilk pencere (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z) şeklindedir. String Minute, Hour, Month Evet
interval frequency değerinin aralığını belirten ve tetikleyicinin ne sıklıkta çalıştığını belirleyen pozitif bir tam sayı. Örneğin, interval3 ve frequencyhour ise, tetikleyici her 3 saatte bir tekrar eder.
Minimum pencere aralığı 5 dakikadır.
Integer Pozitif bir tam sayı. Evet
startTime İlk olay, ki bu geçmişte olabilir. İlk tetikleme aralığı (startTime, startTime + interval). DateTime Bir DateTime değer. Evet
endTime Son oluşum, geçmişte olabilir. DateTime Bir DateTime değer. Evet
delay Verilerin işlenmeye başlamasını pencere için erteleme süresi. Pipeline çalıştırması, beklenen yürütme süresi ve gecikme miktarından sonra başlatılır. Gecikme, tetikleyicinin yeni bir çalıştırmayı tetiklemeden önce vade zamanından sonra ne kadar bekleyeceğini tanımlar. Gecikme, pencereyi startTime değiştirmez. Örneğin, delay değeri 00:10:00 olduğunda 10 dakikalık bir gecikme anlamına gelir. Timespan
(ss:dd:ss)
Varsayılanın timespan olduğu bir 00:00:00 değeri. Hayı
maxConcurrency Hazır pencereler için başlatılan eşzamanlı tetikleme işlemlerinin sayısı. Örneğin, dünün saatlik çalışmaları için geriye dönük doldurma yapmak 24 pencere ile sonuçlanır. Eğer maxConcurrency = 10 ise, tetikleme olayları yalnızca ilk 10 zaman aralığı (00:00-01:00 - 09:00-10:00) için başlatılır. İlk tetiklenen 10 ardışık düzen çalıştırması tamamlandıktan sonra, bir sonraki 10 pencere (10:00-11:00 - 19:00-20:00) için tetikleme çalıştırmaları başlatılır. Bu örnek ile devam edersek, maxConcurrency = 10, eğer 10 pencere hazırsa, toplamda 10 hat çalışması vardır. Yalnızca bir pencere hazırsa, yalnızca bir işlem hattı çalışır. Integer 1 ile 50 arasında bir tam sayı. Evet
retryPolicy: Count Hat çalıştırılmadan önce tekrar denemelerin sayısı Failed olarak işaretlenir. Integer Bir tamsayı, varsayılan değer 0'dır (yeniden deneme yok). Hayı
retryPolicy: intervalInSeconds Saniye cinsinden belirtilen yeniden deneme girişimleri arasındaki gecikme. Integer Varsayılan değerin 30 olduğu saniye sayısı. Minimum değer 30. Hayı
dependsOn: type Türü TumblingWindowTriggerReference. Bağımlılık ayarlandığında gereklidir. String TumblingWindowTriggerDependencyReference, SelfDependencyTumblingWindowTriggerReference Hayı
dependsOn: size Bağımlılık dönen pencere boyutu. Timespan
(ss:dd:ss)
Varsayılanın çocuk tetikleyicinin pencere boyutu olduğu bir pozitif timespan değeri. Hayı
dependsOn: offset Bağımlılık tetikleyicisinin uzaklığı. Timespan
(ss:dd:ss)
Bir timespan değerin öz bağımlılıkta negatif olması gerekir. Belirli bir değer belirtilmezse, pencere tetikleyicinin kendisiyle aynı olur. Öz Bağımlılık: Evet
Diğer: Hayır

Uyarı

Bir tümleme penceresi tetikleyicisi yayımlandıktan sonra, interval ve frequency değerleri düzenlenemez.

WindowStart ve WindowEnd sistem değişkenleri

Tetikleyici pencere tetikleyicisinin WindowStart ve WindowEnd sistem değişkenlerini, hattı tanımınızda (yani, bir sorgunun parçası olarak) kullanabilirsiniz. Sistem değişkenlerini, tetikleyici tanımında parametre olarak hattınıza aktarın. Aşağıdaki örnek, bu değişkenleri parametre olarak nasıl geçireceğinizi gösterir.

{
    "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'))}"
                }
            }
        }
    }
}

Boru hattı tanımında WindowStart ve WindowEnd sistem değişkeni değerlerini kullanmak için, sırasıyla MyWindowStart ve MyWindowEnd parametrelerinizi kullanın.

Pencerelerin geri doldurma senaryosundaki çalıştırma sırası

Eğer tetikleyici startTime geçmişte ise, formüle dayanarak M=(MevcutZaman - TetikleyiciBaşlangıçSaati)/ToplananPencereBoyutu, tetikleyici, gelecekteki çalıştırmaları gerçekleştirmeden önce eşzamanlı tetikleme ile uyumlu olarak {M} paralel doldurma (geçmişe yönelik) çalışması oluşturur. Pencerelerin çalıştırılma sırası en eski zaman aralıklarından en yenisine deterministik bir şekilde belirlenir. Şu anda bu davranış değiştirilemez.

Uyarı

Bu senaryoda, seçilen startTime öğesinden gelen tüm çalıştırmalar, gelecekteki çalıştırmaların yürütülmesinden önce gerçekleştirilir. Uzun bir süre boyunca veri geri yüklemeniz gerekiyorsa, tarihsel veri yüklemesi yapmanızı öneririz.

Mevcut TetikleyiciKaynak öğeleri

Mevcut TriggerResource öğelerinin güncellenmesine uygulanacak aşağıdaki noktalar:

  • Tetikleyicinin öğesinin frequency (veya pencere boyutunun) değeri, öğeyle interval birlikte tetikleyici oluşturulduktan sonra değiştirilemez. Bu kısıtlama, triggerRun yinelemelerinin ve bağımlılık değerlendirmelerinin düzgün çalışması için gereklidir.
  • Tetikleyicinin öğesinin değeri endTime değişirse (ekleyerek veya güncelleyerek), zaten işlenmiş olan pencerelerin durumu sıfırlanmaz . Tetikleyici yeni endTime değeri kabul eder. Yeni endTime değer zaten yürütülmekte olan pencerelerden önceyse, tetikleyici durur. Aksi takdirde, yeni endTime değerle karşılaşıldığında tetikleyici durur.

Kullanıcı tarafından atanmış boru hatlarının yeniden denemeleri

İşlem hattı hataları söz konusu olduğunda, yuvarlanan pencere tetikleyicisi, kullanıcı müdahalesi olmadan aynı giriş parametrelerini kullanarak başvurulan işlem hattının yürütülmesini otomatik olarak yeniden deneyebilir. retryPolicy Bu eylemi belirtmek için tetikleyici tanımındaki özelliği kullanın.

Yuvarlanan pencere tetikleyici bağımlılığı

Başka bir dönen pencere tetikleyicisinin veri fabrikasında başarıyla çalıştırılmasından sonra yalnızca bir dönen pencere tetikleyicisinin çalıştırıldığından emin olmak istiyorsanız, dönen pencere tetikleyici bağımlılığı oluşturun.

Yuvarlanan pencere çalıştırmasını iptal et

Belirli bir pencere Bekliyor, Bağımlılık bekleniyor veya Çalışıyor durumundaysa, yuvarlanan pencere tetikleyicisi için çalıştırmaları iptal edebilirsiniz:

  • Pencere Çalışıyor durumundaysa, ilgili Pipeline Çalıştırması iptal edin ve tetikleme çalıştırması ardından İptal Edildi olarak işaretlenir.
  • Pencere, Beklemede veya Bağımlılık bekliyor durumundaysa, pencereyi İzleme kısmından iptal edebilirsiniz.

İptal edilmiş bir pencereyi tekrar çalıştırabilirsiniz. Yeniden çalışma, tetikleyicinin en son yayımlanmış tanımlarını alır. Belirtilen pencere için bağımlılıklar yeniden çalıştırıldığında yeniden değerlendirilecektir.

Azure PowerShell ve Azure CLI için örnek

Bu bölümde, tetikleyici oluşturmak, başlatmak ve izlemek için Azure PowerShell nasıl kullanacağınız gösterilmektedir.

Uyarı

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell yükleme. Az PowerShell modülüne nasıl geçiş yapılacağını öğrenmek için bkz. AzureRM'den Az Azure PowerShell dağıtma.

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.
  • Azure PowerShell: PowerShellGet ile Windows Azure PowerShell yükleme yönergelerini izleyin.
  • Azure Data Factory: Veri fabrikası ve işlem hattı oluşturmak için PowerShell kullanarak Azure Data Factory oluşturma.

Örnek kod

  1. C:\ADFv2QuickStartPSH\ klasörüne MyTrigger.json adında bir JSON dosyası oluşturun ve aşağıdaki içeriği ekleyin:

    Önemli

    JSON dosyasını kaydetmeden önce, startTime öğesinin değerini mevcut Eşgüdümlü Evrensel Zaman (UTC) saatine ayarlayın. endTime elemanının değerini mevcut UTC saatinden bir saat sonrasına 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'i kullanarak bir tetikleyici oluşturun:

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Doğrulayın ki tetikleyicinin durumu Durduruldu durumunda ve Get-AzDataFactoryV2Trigger cmdlet'i kullanarak:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Tetikleyiciyi başlatmak için Start-AzDataFactoryV2Trigger cmdlet'ini kullanın.

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Tetikleyicinin durumunun Başlatıldı olduğunu Get-AzDataFactoryV2Trigger cmdlet'i kullanarak doğrulayın.

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Get-AzDataFactoryV2TriggerRun cmdlet'ini kullanarak Azure PowerShell tetikleyici çalıştırmalarını alın. Tetik çalışmaları hakkında bilgi almak için, aşağıdaki komutu periyodik olarak çalıştırın. TriggerRunStartedAfter ve TriggerRunStartedBefore değerlerini tetikleyici tanımınızdaki değerlerle eşleştirecek şekilde güncelleyin.

    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ı izleyin.