Do-while düğümü, çıkış koşulu karşılanana kadar dahili bir iş akışını tekrar tekrar çalıştırır. Döngü mantığını düğümün içinde tanımlarsınız ve döngünün ne zaman duracağını kontrol etmek için End düğümünü kullanırsınız. Bir atama düğümü ile birlikte kullanılan do-while düğümü, bir sonuç kümesi üzerinde yineleme de yapabilir. Bu konuda basit ve karmaşık yapılandırma örnekleri adım adım açıklanmaktadır.
Önkoşullar
Do-while düğümü içindeki iş akışını özelleştirme konusunda bilgilisiniz. Daha fazla bilgi için bkz. Düğüm bileşenleri ve iş akışı düzenlemesi.
Düğüm içinde döngüyle ilgili parametreleri almak için yerleşik değişkenleri kullanma konusunda bilgilisiniz. Daha fazla bilgi için bkz. Yerleşik değişkenler.
Do-while düğümü içinde Start düğümünün bir döngünün başlangıcını işaret ettiğini ve End düğümünün döngünün çıkış mantığını tanımladığını anlıyorsunuz. Daha fazla bilgi için bkz. Döngüden çıkış örneği: End düğümü kod örnekleri.
Do-while düğümünü test etme ve günlüklerini görüntüleme konusundaki dikkat edilmesi gereken noktalar hakkında bilgilisiniz. Daha fazla bilgi için bkz. Kullanım notları.
Sınırlamalar
Do-while düğümü yalnızca DataWorks Standard Edition ve sonraki sürümlerde kullanılabilir. Daha fazla bilgi için bkz. DataWorks sürümleri ve özellikleri.
Bir do-while düğümü en fazla 1.024 kez döngü yapabilir.
Paralel yürütme desteklenmez. Yeni bir döngü yalnızca önceki döngü tamamlandıktan sonra başlayabilir.
Do-while düğümü oluşturun
-
DataWorks konsolu oturumunu açın. Hedef bölgede sol gezinme bölmesinde seçeneğine tıklayın. Açılan listeden bir çalışma alanı seçin ve Go to Data Development seçeneğine tıklayın.
-
Bir do-while düğümü oluşturun.
-
Data Studio sayfasında imleci
simgesinin üzerine getirin ve seçeneğini belirleyin.Alternatif olarak, bir iş akışını açıp General öğesine sağ tıklayabilir ve seçeneğini belirleyebilirsiniz.
Create Node iletişim kutusunda düğüm adını ve yolunu belirtin.
OK seçeneğine tıklayın.
-
Örnekler
Bu örnekte döngü 5 kez çalıştırılır ve her yinelemede mevcut döngü sayısı yazdırılır.
Düğüm kodunu düzenleyin
Bir do-while düğümü varsayılan olarak üç düğüm içerir: Start, Shell ve End:
Start düğümü, bir döngünün başlangıcını işaret eder ve herhangi bir iş mantığına hizmet etmez. Silinemez.
Shell düğümü, DataWorks tarafından sağlanan örnek bir işleme düğümüdür.
End düğümü, bir döngünün sonunu işaret eder ve bir sonraki yinelemenin başlatılıp başlatılmayacağını belirler. Do-while düğümünün çıkış koşulunu tanımlamak için kullanılır ve silinemez.
İş gereksinimlerinize bağlı olarak Shell düğümünü diğer düğümlerle değiştirerek do-while düğümü içindeki iş akışını da özelleştirebilirsiniz.
Shell düğümüne çift tıklayarak düzenleme sayfasını açın.
-
Aşağıdaki kodu girin.
echo ${dag.loopTimes} ----Print the loop count.${dag.loopTimes} değişkeni, 1'den başlayan mevcut döngü sayısını temsil eden sistem ayrılmış bir değişkendir. Do-while düğümünün iç düğümleri bu değişkene doğrudan başvurabilir. Yerleşik değişkenler hakkında daha fazla bilgi için bkz. Yerleşik değişkenler ve Bağlama bağlı değişkenler.
Shell düğümünde kodu değiştirdikten sonra kaydettiğinizden emin olun. Düğümü gönderirken herhangi bir uyarı görüntülenmez. Kodu kaydetmezseniz en son değişiklikler uygulanmaz.
Döngü çıkış koşulunu tanımlayın
Döngünün 5 yinelemeden sonra durması için çıkış koşulunu ayarlayın.
End düğümüne çift tıklayarak düzenleme sayfasını açın.
Select Language açılır listesinden Python seçeneğini belirleyin.
-
Do-while düğümünün çıkış koşulunu tanımlamak için aşağıdaki kodu girin.
if ${dag.loopTimes}<5: print True; else: print False;${dag.loopTimes} değişkeni, 1'den başlayan mevcut döngü sayısını temsil eden sistem ayrılmış bir değişkendir. Do-while düğümünün iç düğümleri bu değişkene doğrudan başvurabilir. Yerleşik değişkenler hakkında daha fazla bilgi için bkz. Yerleşik değişkenler ve Bağlama bağlı değişkenler.
Kod, toplam döngü yineleme sayısını sınırlamak için
dag.loopTimesdeğerini 5 ile karşılaştırır. İlk yinelemede dag.loopTimes değeri 1, ikinci yinelemede 2 olur ve beşinci yinelemeye kadar bu şekilde devam eder. Beşinci yinelemede değer 5 olduğunda ${dag.loopTimes}<5 ifadesi False olarak değerlendirilir ve döngüden çıkılır.
Do-while düğümünü gönderin
Düğümü kaydetmek için araç çubuğundaki
simgesine tıklayın.-
Düğümü göndermek için araç çubuğundaki
simgesine tıklayın.Düğümü gönderirken Submission iletişim kutusunda bir Change Description girin ve düğüm gönderildikten sonra kod incelemesi başlatılıp başlatılmayacağını belirtin.
ÖnemliDüğümü gönderebilmeniz için öncelikle Rerun attribute ve Parent Nodes seçeneklerini yapılandırmanız gerekir.
Kod incelemesi, görev kodunun kalitesini sağlamaya yardımcı olur ve incelenmemiş kodun doğrudan üretim ortamına dağıtılmasından kaynaklanan hataları önler. Kod incelemesi etkinleştirilirse, gönderilen düğüm kodunun dağıtılabilmesi için inceleyiciler tarafından onaylanması gerekir. Daha fazla bilgi için bkz. Kod incelemesi.
Standard modda bir çalışma alanı kullanıyorsanız, görevi gönderdikten sonra üretim ortamına dağıtmak için düğüm düzenleme sayfasının sağ üst köşesindeki Deploy seçeneğine tıklamanız gerekir. Daha fazla bilgi için bkz. Düğümleri dağıtma.
Test edin ve yürütme günlüklerini görüntüleyin
Bir do-while düğümünün gönderilmesi ve dağıtılması, normal bir düğümle aynı süreci takip eder. Ancak, Data Studio arayüzünden test yapılması desteklenmez.
DataWorks standard moddayken, do-while düğümünü Data Studio arayüzünden doğrudan test edemezsiniz.
Bir do-while düğümünün çalışma sonuçlarını test etmek ve doğrulamak için, do-while düğümünü içeren görevi Operation Center'a gönderip dağıtmanız ve ardından do-while düğümü görevini Operation Center sayfasından çalıştırmanız gerekir. Do-while düğümü içinde bir atama düğümü tarafından iletilen değerleri kullanıyorsanız, Operation Center'da test sırasında hem atama düğümünü hem de do-while düğümünü birlikte çalıştırın.
Sayfanın sağ üst köşesindeki O&M Personnel seçeneğine tıklayarak Operation Center bölümüne gidin.
Sol gezinme bölmesinde seçeneğine tıklayın.
İstediğiniz düğümü seçin. Sağ taraftaki DAG'de atama düğümüne sağ tıklayın ve seçeneğini belirleyin.
Data Backfill Instance sayfasını yenileyin. Geri doldurma örneği başarıyla çalıştıktan sonra, örneğin yanındaki DAG seçeneğine tıklayın.
-
Do-while düğümünün yürütme günlüklerini görüntüleyin.
-
Do-while düğümüne sağ tıklayın ve View Inner Nodes seçeneğini belirleyin.
Do-while düğümleri gibi bileşik düğümler için, ayrıntılı yürütme günlüklerini görmek üzere iç düğümleri görüntüleyin. Bu örnekte, döngü 5 kez çalışmış ve tüm yinelemeler başarıyla tamamlanmıştır.
Bir do-while düğümünün iç döngü görünümü üç bölümden oluşur:
Sol panel, yeniden çalıştırma geçmişini gösterir. Do-while örneğinin her tam çalıştırılması buraya bir kayıt ekler.
Orta panel, toplam yineleme sayısını ve her yinelemenin durumunu içeren döngü kayıt listesini gösterir.
Sağ panel, yineleme ayrıntılarını gösterir. Döngü kayıt listesinde bir yinelemeye tıklayarak o yinelemedeki her düğümün çalışma durumunu görüntüleyebilirsiniz.
İç düğümler sayfasında soldaki bir yineleme numarasına tıklayın, istediğiniz düğüme sağ tıklayın ve View Runtime Log seçeneğini belirleyin.
-
N. yinelemenin ayrıntılı yürütme günlüklerini görüntüleyin.
İç düğümler sayfasında, 5. yinelemedeki Shell düğümünün günlüklerini görüntülemek için soldaki Iteration 5 seçeneğine tıklayın.
Çalışma zamanı günlüğü, 5. yinelemede End düğümünün
if 5 < 5: print True else: print Falsedeğerlendirme kodunu yürüttüğünü ve çıktınınFalse(Output Result: False) olduğunu gösterir. Döngü sonlandırıldı ve görev normal şekilde tamamlandı.Bir do-while düğümünün iş akışı şu şekildedir:
Yürütme, Start düğümünden başlar.
Görevler, tanımlanan bağımlılık ilişkilerine göre sırayla yürütülür.
Çıkış koşulu, End düğümünde tanımlanır.
Bir görev grubu tamamlandıktan sonra, End düğümündeki çıkış koşulu ifadesi yürütülür.
End düğümündeki değerlendirme ifadesi günlüklerde True yazdırırsa, döngü 1. adımdan itibaren devam eder.
End düğümündeki değerlendirme ifadesi günlüklerde False yazdırırsa, tüm döngüden çıkılır ve do-while düğümü tamamlanır.
-
Özet
-
Do-while düğümünün standart döngü türleriyle karşılaştırılması:
do...while desenini destekler (önce yürüt, sonra değerlendir). Ayrıca, düğüm bağlamıyla birlikte sistem değişkeni dag.offset kullanarak dolaylı yoldan foreach desenini de uygulayabilir.
Koşulu döngü gövdesini yürütmeden önce değerlendiren while desenini desteklemez.
-
Do-while düğümünün yürütme akışı:
Start düğümünden başlayarak, döngü gövdesindeki görevler tanımlanan bağımlılık ilişkilerine göre sırayla yürütülür.
-
Kullanıcı tarafından End düğümünde tanımlanan kod yürütülür.
End düğümü True çıktısı verirse, bir sonraki yineleme başlar.
End düğümü False çıktısı verirse, döngü sonlanır.
Do-while düğümünün iç düğümleri, ${dag.context variable name} kullanarak düğüm bağlamına başvurabilir.
-
DataWorks, do-while düğümünün iç düğümleri için otomatik olarak iki sistem değişkeni sağlar:
dag.loopTimes: 1'den başlayan döngü sayısı.
dag.offset: İlk yinelemeye göre mevcut yinelemenin ofseti, 0'dan başlar.