Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 |
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.
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.
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.
Ö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.
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.
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.
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.
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'))
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
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'))
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.
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
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.