Aracılığıyla paylaş


Hatalar ve Koşullu yürütme

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!

Koşullu yollar

Azure Data Factory ve Synapse Pipeline düzenlemesi koşullu mantığa olanak tanır ve kullanıcının önceki bir etkinliğin sonuçlarına göre farklı bir yol izlemesini sağlar. Farklı yolların kullanılması, kullanıcıların sağlam işlem hatları oluşturmasına olanak tanır ve ETL/ELT mantığında hata işlemeyi birleştirir. Toplamda dört koşullu yola izin veririz.

Veri Akışı Adı Açıklama
Başarılı Olduğunda (Varsayılan Geçiş) Geçerli etkinlik başarılı olursa bu yolu yürüt
Başarısız Olduğunda Geçerli etkinlik başarısız olursa bu yolu yürüt
Tamamlandığında Başarılı olup olmadığına bakılmaksızın geçerli etkinlik tamamlandıktan sonra bu yolu yürüt
Atla üzerine Etkinliğin kendisi çalışmadıysa bu yolu yürüt

Etkinliğin dört dalını gösteren ekran görüntüsü.

Bir etkinliğin ardından birden çok dal ekleyebilirsiniz; tek bir özel durum vardır: Tamamlandıktan Sonra yolu, Başarılı Olduğunda veya Hata Durumunda yolu ile birlikte var olamaz. Her işlem hattı çalıştırması için, etkinliğin yürütme sonucuna bağlı olarak en fazla bir yol etkinleştirilir.

Hata İşleme

Yaygın hata işleme mekanizması

Catch bloğunu deneyin

Bu yaklaşımda müşteri iş mantığını tanımlar ve önceki etkinlikten gelen hataları yakalamak için yalnızca Hata Durumunda yolunu tanımlar. Bu yaklaşım, Hata Durumunda yolu başarılı olursa işlem hattını işler.

Deneme yakalama bloğunun tanımını ve sonucunu gösteren ekran görüntüsü.

If Else bloğunu yap

Bu yaklaşımda müşteri iş mantığını tanımlar ve hem Hata Durumunda hem de Başarıda yollarını tanımlar. Bu yaklaşım, Hata Üzerine yolu başarılı olsa bile işlem hattını işler.

Aksi takdirde yap bloğunun tanımını ve sonucunu gösteren ekran görüntüsü.

Varsa Yap Atla bloğu

Bu yaklaşımda, müşteri iş mantığını tanımlar ve hem Hata Durumunda yolunu hem de Başarılı Olduğunda yolunu tanımlar ve atlanan etkinlik ekli bir işlev dışıdır. Bu yaklaşım, Hata Durumunda yolu başarılı olursa işlem hattını işler.

Aksi takdirde atlarsanız yap bloğunun tanımını ve sonucunu gösteren ekran görüntüsü.

Özet tablosu

Yaklaşım Tanım -lar Etkinlik başarılı olduğunda, genel işlem hattı gösterilir Etkinlik başarısız olduğunda, genel işlem hattı gösterilir
Try-Catch Yalnızca Hata Üzerine yolu Başarılı Başarılı
Varsa Yap Hata yolunda + Başarılı olduğunda yolları Başarılı Hata
If-If-Skip-Else Hata üzerine yolu + Başarılı Olduğunda yolu (sonunda Atlanan Bir Kukla ile) Başarılı Başarılı

İşlem hattı hatası nasıl belirlenir?

Farklı hata işleme mekanizmaları işlem hattı için farklı durumlara yol açar: bazı işlem hatları başarısız olurken, diğerleri başarılı olur. İşlem hattı başarısını ve hatalarını aşağıdaki gibi belirleriz:

  • Tüm yaprak etkinlikleri için sonucu değerlendirin. Yaprak etkinliği atlandıysa bunun yerine üst etkinliğini değerlendiririz
  • İşlem hattı sonucu, yalnızca tüm düğümlerin başarılı olması durumunda başarılı olur

Hata Durumunda etkinliği ve Hata durumunda Kukla etkinliğinin başarılı olduğunu varsayarsak,

  • Try-Catch yaklaşımında,

    • Önceki etkinlik başarılı olduğunda: Başarısız Olduğunda düğümü atlanır ve üst düğümü başarılı olur; genel işlem hattı başarılı olur
    • Önceki etkinlik başarısız olduğunda: Düğüm Başarısız Olduğunda gerçekleşir; genel işlem hattı başarılı olur
  • If-If-Else yaklaşımında,

    • Önceki etkinlik başarılı olduğunda: Başarılı Olduğunda düğümü başarılı olur ve Başarısız Olduğunda düğümü atlanır (ve üst düğümü başarılı olur); genel işlem hattı başarılı olur
    • Önceki etkinlik başarısız olduğunda: Başarılı Olduğunda düğümü atlanır ve üst düğümü başarısız olur; genel işlem hattı başarısız olur
  • If-Skip-Else yaklaşımında,

    • Önceki etkinlik başarılı olduğunda: Dummy Upon Skip düğümü atlanır ve başarılı olduktan sonra üst düğümü başarılı olur; başarısız olduğunda diğer düğüm etkinliği atlanır ve üst düğümü başarılı olur; genel işlem hattı başarılı olur
    • Önceki etkinlik başarısız olduğunda: Başarısız Olduğunda düğüm başarılı olur ve Atlandığında Dummy başarılı olur; genel işlem hattı başarılı olur

Koşullu yürütme

Daha karmaşık ve dayanıklı işlem hatları geliştirirken bazen mantığımıza koşullu yürütmeler eklemek gerekir: belirli bir etkinliği yalnızca belirli koşullar karşılandığında yürütmek. Kullanım örnekleri oldukça fazladır, örneğin:

  • önceki kopyalama işleri başarılı olduysa, e-posta bildirimi gönderme gibi bir izleme etkinliği çalıştırın
  • önceki etkinliklerden herhangi biri başarısız olduysa bir hata işleme işi çalıştırın
  • etkinliğin kendisi veya ilgili hata işleme etkinliği başarılı olursa sonraki adıma geçin
  • vb.

Burada bazı yaygın mantıkları ve bunları ADF'de nasıl uygulayacağımızı açıklayacağız.

Tek etkinlik

Tek bir etkinliği izleyen bazı yaygın desenler aşağıdadır. Karmaşık iş akışları oluşturmak için bu desenleri yapı taşları olarak kullanabiliriz.

Hata işleme

Desen, ADF'deki en yaygın koşul mantığıdır. "Hata Durumunda" yolu için bir hata işleme etkinliği tanımlanır ve ana etkinlik başarısız olursa çağrılır. Geri dönüş alternatifleri veya günlüğe kaydetme gerektiren tüm görev açısından kritik adımlar için en iyi uygulama olarak dahil edilmelidir.

Görev açısından kritik adımlar için hata işlemeyi gösteren ekran görüntüsü.

En iyi çaba adımları

Bilgi günlüğü gibi bazı adımlar daha az kritiktir ve hataları işlem hattının tamamını engellememelidir. Böyle durumlarda en iyi çaba stratejilerini benimsemeliyiz: "Tamamlandıktan Sonra" yoluna sonraki adımları ekleyerek iş akışının engelini kaldırmalıyız.

Günlüğe kaydetmeye yönelik en iyi çabayı gösteren ekran görüntüsü.

And

İlk ve en yaygın senaryolar koşullu "ve": yalnızca önceki etkinliklerin başarılı olması durumunda işlem hattına devam edin. Örneğin, veri işlemenin bir sonraki aşamasına geçmeden önce başarılı olması gereken birden çok kopyalama etkinliğiniz olabilir. ADF'de davranış kolayca elde edilebilir: sonraki adım için birden çok bağımlılık bildirin. Grafiksel olarak bu, bir sonraki etkinliğe işaret eden birden çok satır anlamına gelir. Bağımlılığın başarılı olduğundan emin olmak için "Başarılı Olduğunda" yolunu veya en iyi çalışma yürütmesine izin vermek için "Tamamlandıktan Sonra" yolunu seçebilirsiniz.

Burada, izleme bekleme etkinliği yalnızca her iki web etkinliği de başarılı olduğunda yürütülür.

İşlem hattını gösteren ekran görüntüsü yalnızca her iki web etkinliği de başarılı olursa devam eder.

Burada, ActivitySucceeded geçişi ve ActivityFailed tamamlandığında izleme bekleme etkinliği yürütülür. "Başarılı Olduğunda" yolunda ActivitySucceeded'in başarılı olması gerekirken , "Tamamlandıktan Sonra" yolundaki ActivityFailed en iyi çabayla çalışır, yani başarısız olabilir.

İlk web etkinliği başarılı olduğunda ve ikinci web etkinliği tamamlandığında işlem hattını gösteren ekran görüntüsü.

Or

İkinci yaygın senaryolar koşullu "veya"dır: Bağımlılıklardan herhangi biri başarılı olursa veya başarısız olursa bir etkinlik çalıştırın. Burada "Tamamlandıktan Sonra" yollarını, If Koşulu etkinliğini ve ifade dilini kullanmamız gerekir.

Kodu derinlemesine incelemeden önce bir şeyi daha anlamamız gerekir. Bir etkinlik çalıştırılıp tamamlandıktan sonra, @activity('ActivityName') ile durumuna başvurabilirsiniz. Durum. "Başarılı"_ veya "Başarısız" olur. Koşullu veya mantık oluşturmak için bu özelliği kullanırız.

Paylaşılan hata işleme günlüğü adımı

Bazı durumlarda, önceki etkinliklerden herhangi biri başarısız olduysa paylaşılan bir hata işleme veya günlüğe kaydetme adımı çağırmak isteyebilirsiniz. İşlem hattınızı aşağıdaki gibi oluşturabilirsiniz:

  • birden çok etkinliği paralel olarak çalıştırma
  • True dalında hata işleme adımlarını içerecek bir if koşulu ekleme
  • "Tamamlandığında" yolunu kullanarak etkinlikleri koşul etkinliğine bağlama
  • koşul etkinliği okumaları için mantıksal ifade
@or(equals(activity('ActivityFailed').Status, 'Failed'), equals(activity('ActivitySucceeded').Status, 'Failed'))
  • Not: Birleştirilmiş veya ikiden fazla bağımlılık etkinliğiniz varsa, örneğin,
@or(or(equals(activity('ActivityFailed').Status, 'Failed'), equals(activity('ActivitySucceeded1').Status, 'Failed')),equals(activity('ActivitySucceeded1').Status, 'Failed'))

Önceki etkinliklerden herhangi biri başarısız olursa paylaşılan hata işleme adımının nasıl yürütüleceğini gösteren ekran görüntüsü.

Herhangi bir etkinlik başarılı olursa Greenlight

Tüm etkinlikleriniz en iyi şekilde çalıştığında, önceki etkinliklerden herhangi biri başarılı olursa sonraki adıma geçmek isteyebilirsiniz. İşlem hattınızı aşağıdaki gibi oluşturabilirsiniz:

  • birden çok etkinliği paralel olarak çalıştırma
  • True dalında sonraki adımları içerecek bir if koşulu ekleme
  • "Tamamlandığında" yolunu kullanarak etkinlikleri koşul etkinliğine bağlama
  • koşul etkinliği okumaları için mantıksal ifade
@or(equals(activity('ActivityFailed').Status, 'Succeeded'), equals(activity('ActivitySucceeded').Status, 'Succeeded'))
  • Not: Grafik tam olarak önceki senaryoya benzer. Tek fark kullanılan ifade dilidir

Etkinliklerden herhangi biri geçerse işlem hattının sonraki adıma geçeceğini gösteren ekran görüntüsü.

Karmaşık senaryolar

Devam etmek için tüm etkinliklerin başarılı olması gerekir

Desen ikinin birleşimidir: koşullu ve + hata işleme. İşlem hattı, devam eden tüm etkinlikler başarılı olursa sonraki adımlara geçer veya paylaşılan bir hata günlüğü adımı çalıştırır. İşlem hattını aşağıdaki gibi oluşturabilirsiniz:

  • birden çok etkinliği paralel olarak çalıştırma
  • if koşulu ekleyin. True dalında sonraki adımları ekleyin ve False dalında hata işleme kodu ekleyin
  • "Tamamlandığında" yolunu kullanarak etkinlikleri koşul etkinliğine bağlama
  • koşul etkinliği okumaları için mantıksal ifade
@and(equals(activity('ActivityFailed').Status, 'Succeeded'), equals(activity('ActivitySucceeded').Status, 'Succeeded'))

Etkinliklerden herhangi biri geçerse veya hata işleme kodunu çalıştırırsa işlem hattının sonraki adıma geçtiğini gösteren ekran görüntüsü.

Ortak desenler

Try-Catch-Proceed

Desen, kodlamada catch bloğunu denemeye eşdeğerdir. İşlem hattında bir etkinlik başarısız olabilir. Başarısız olduğunda, müşterinin bununla başa çıkmak için bir hata işleme işi çalıştırması gerekir. Ancak tek etkinlik hatası işlem hattındaki sonraki etkinlikleri engellememelidir. Örneğin, dosyaları depolama alanına taşıyarak bir kopyalama işi çalıştırmayı denerim. Ancak yarı yolda başarısız olabilir. Bu durumda, kısmen kopyalanan ve güvenilir olmayan dosyaları depolama hesabından silmek istiyorum (hata işleme adımım). Ama sonrasında başka etkinliklere devam ederim.

Deseni ayarlamak için:

  • İlk etkinliği ekleme
  • UponFailure yoluna hata işleme ekleme
  • İkinci etkinlik ekle, ancak ilk etkinliğe bağlanma
  • Hem UponFailure hem de UponSkip yollarını hata işleme etkinliğinden ikinci etkinliğe bağlayın

Not

Her yol (UponSuccess, UponFailure ve UponSkip) herhangi bir etkinliğe işaret edebilir. Birden çok yol aynı etkinliği işaret edebilir. Örneğin, UponSuccess ve UponSkip tek bir etkinliğe işaret ederken UponFailure farklı bir etkinliğe işaret edebilir.

Yakalama bloğunu deneyin ile işlem hattını gösteren ekran görüntüsü.

Hata İşleme işi yalnızca İlk Etkinlik başarısız olduğunda çalışır. Sonraki Etkinlik, İlk Etkinlik başarılı olup olmadığına bakılmaksızın çalışır.

Genel hata işleme

Genellikle işlem hattında sıralı olarak çalışan birden çok etkinliğimiz vardır. Başarısız olursa durumu temizlemek ve/veya hatayı günlüğe kaydetmek için bir hata işleme işi çalıştırmam gerekiyor. Örneğin, işlem hattında sıralı kopyalama etkinliklerim var. Bunlardan herhangi biri başarısız olursa işlem hattı hatasını günlüğe kaydetmek için bir betik işi çalıştırmam gerekiyor.

Deseni ayarlamak için:

  • Sıralı veri işleme işlem hattı oluşturma
  • İşlem hattının sonuna genel hata işleme adımı ekleme
  • Hem UponFailure hem de UponSkip yollarını son etkinlikten hata işleme etkinliğine bağlama

Dallanma olmadan bir işlem hattında genel hata işleme ile işlem hattını gösteren ekran görüntüsü.

Son adım olan Genel Hata İşleme yalnızca önceki etkinliklerden biri başarısız olursa çalışır. Hepsi başarılı olursa çalışmaz.

Hata işleme için birden çok etkinlik ekleyebilirsiniz.

Dallanma ve birden çok etkinlik içermeyen bir işlem hattında genel hata işleme ile işlem hattını gösteren ekran görüntüsü.

Data Factory ölçümleri ve uyarıları

Görsel Olarak İzleme