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.
ŞUNLARA UYGULANIR:
Azure Data Factory
Azure Synapse Analytics
Tip
Microsoft Fabric'daki
Koşullu yollar
Azure Data Factory ve Synapse Pipeline düzenlemesi koşullu mantığa olanak tanır ve kullanıcının önceki 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.
| Name | Explanation |
|---|---|
| Başarılı Olduğunda | (Varsayılan Geçiş) Geçerli etkinlik başarılı olursa bu yolu yürüt |
| Hata Durumunda | Geçerli etkinlik başarısız olursa bu yolu yürüt |
| Tamamlandıktan Sonra | Başarılı olup olmadığına bakılmaksızın geçerli etkinlik tamamlandıktan sonra bu yolu yürüt |
| Atlama sırasında | 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 bir pipeline çalışması için, aktivitenin 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 uygula
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ın başarısız olmasına neden olur.
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 bir etkinlik eklenmiş olarak sahte bir etkinlik içerir. Bu yaklaşım, Hata Durumunda yolu başarılı olursa işlem hattını işler.
Özet tablosu
| Approach | Defines | Etkinlik başarılı olursa genel işlem hattı görüntülenir. | Etkinlik başarısız olduğunda, genel çalışma hattı belirgin hale gelir. |
|---|---|---|---|
| Try-Catch | Yalnızca Hata Durumunda yol | Success | Success |
| Do-If-Else | Başarısızlık Durumunda yol + Başarı Durumunda yolları | Success | Failure |
| Do-If-Skip-Else | Hata Durumunda Yol ve Başarı Durumunda Yol (sonunda Atlama Kuklası ile) | Success | Success |
İşlem hattı hataları 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ıyla değerlendirilmesi durumunda başarılıdır.
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ü işlem dışı bırakılır ve üst düğümü başarılı olur; genel işlem hattı başarılı kabul edilir.
- Önceki etkinlik başarısız olduğunda: Başarısızlık Durumunda düğümü devreye girer; sonuçta genel işlem hattı başarılı bir şekilde tamamlanır.
Do-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 ebeveyn düğümü başarısız olur; genel işlem hattı başarısız olur
In Do-If-Skip-Else yaklaşımında,
- Önceki etkinlik başarılı olduğunda: Dummy Upon Skip düğümü atlanır ve üst düğümü Upon Success başarılı olur; diğer düğüm etkinliği, Upon Failure 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 düğümü başarılı olur; genel boru 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
- etc.
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 yönetimi
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. Görev açısından kritik olan ve geri dönüş alternatifleri veya günlüğe kaydetmeyi gerektiren tüm 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"dir: önceki etkinliklerin yalnızca başarılı olması durumunda iş akışı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 çaba ile çalışmanın tamamlanmasına 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çtikten ve ActivityFailed tamamlandıktan sonra izleme bekleme etkinliği yürütülür. "Başarılı Olduktan Sonra" 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').Status ile durumuna başvurabilirsiniz. "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 günlüğü işleme adımı
Bazı durumlarda, önceki etkinliklerden herhangi biri başarısız olduysa paylaşılan hata işleme veya günlüğe kaydetme adımını ç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 etkinliklerinin 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 etkinliklerinin 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 etkinliklerinin 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 ekleyin
- İ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
Note
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. Herhangi biri başarısız olursa, durumu temizlemek ve/veya hatayı günlüğe kaydetmek için bir hata yönetimi ç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ı kaydetmek için bir script ç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, bu çalışmaz.
Hata işleme için birden çok etkinlik ekleyebilirsiniz.