Power Automate'te "Apply to each": donguyu anlamak, kontrol etmek ve onlemek
"Auf alle anwenden" listeleri oge oge isler ve genellikle istenmeden ortaya cikar. Dongu nasil calisir, neden yavaslatir ve ne zaman kaldirilabilir.
Filter Array ve Select, dizileri filtrelerken ve yeniden şekillendirirken Apply to Each'in yerini alır ve belirgin şekilde daha hızlı çalışır.
Bir bulut akışının bir diziyi baştan sona dolaşması gerektiğinde birçok kişi otomatik olarak Apply to Each eylemine yönelir. Basit durumlar için bu tamamen uygundur, ancak yalnızca bir diziyi filtrelemek veya nesnelerinin şeklini değiştirmek söz konusu olduğunda, Veri İşlemleri kategorisindeki iki alternatife bakmakta fayda vardır: Filter Array ve Select. İkisi de akışın her öğeyi tek tek dolaşmasına gerek kalmadan tam olarak bu görevi tek bir adımda gerçekleştirir.
Bu yazıda, bu iki eylemin nasıl çalıştığı, Apply to Each'in yerini ne zaman anlamlı şekilde aldıkları ve bir döngünün yine de doğru seçim olarak kaldığı durumlar gösteriliyor. Apply to Each'in kendi sınırları hakkında, örneğin çok büyük diziler ve Power Automate'in eylem sınırları konusunda daha fazlasını Power Automate eylem sınırları yazısında bulabilirsin.
Apply to Each, içerdiği eylemleri bir dizinin her bir öğesi için ayrı ayrı çalıştırır. 200 sipariş ve döngü gövdesinde iki eylem olduğunda, bu 400 ayrı yürütme anlamına gelir; bunların tümü akışının eylem sınırına dahil edilir ve akış geçmişinde tek tek kaydedilir. Amaç yalnızca belirli öğeleri filtrelemek veya alanları yeniden adlandırmaksa, bu yük gerçek bir nedeni olmadan ortaya çıkar, çünkü Veri İşlemleri tam olarak bunun için vardır. Microsoft bunu kendi kılavuzunda şöyle açıklıyor: belirli kriterlere uyan öğeleri bir tabloda bulmak için bir döngü içindeki koşul yerine bir filtreleme veya seçme işlemi kullanmayı düşün; bu yaklaşım bulut akışını basitleştirebilir ve performansı artırabilir, tıpkı Power Automate'te Veri İşlemleri başlıklı resmi genel bakışta belirtildiği gibi. Filter Array ve Select, dizide beş ya da beş bin kayıt olması fark etmeksizin her biri tek bir eylem olarak çalışır.
Filter Array eylemi, Veri İşlemleri hakkındaki resmi belgelere göre bir diziyi kriterlerine uyan nesnelerle sınırlar. Filtre Sorgusu bölümünde hangi alanın hangi değerle karşılaştırılacağını belirtirsin, örneğin Durum eşittir Açık, ve sonuç olarak tam olarak eşleşen kayıtları içeren yeni bir dizi elde edersin. Bu konuda bilmen gereken iki şey var:
Basit karşılaştırmalar için temel görünüm yeterlidir; Ve/Veya mantığına sahip birleşik koşullar için gelişmiş moda geçip ifadeyi doğrudan yazarsın.
Filter Array nesne sayısını değiştirirken, Select bunların şeklini değiştirir. Bu eylemle, dizideki nesne sayısı değişmeden alanları yeniden adlandırabilir, mevcut alanlardan yeni alanlar oluşturabilir veya ihtiyaç duyulmayan alanları çıkarabilirsin. Microsoft belgelerinden bir örnek: first ve last alanlarına sahip nesnelerden, Select ile FirstName, FamilyName ve her iki değeri birleştiren ek bir FullName alanı içeren bir dizi oluşturulur. Sonuç yine, doğrudan sonraki eylemlere aktarabileceğin bir dizidir, örneğin bir Create CSV table eylemine veya bir SharePoint eylemine. Microsoft'a göre bu, yalnızca akışının karmaşıklığını değil, veriler daha sonra başka bir sisteme aktarıldığında yük boyutunu da azaltır.
Uygulamada bu iki eylem neredeyse her zaman art arda gelir. Tek bir Apply to Each eylemi kullanmadan uygulayabileceğin tipik bir akış:
1. Get Items gibi bir eylem veya bir HTTP çağrısı, tüm siparişleri içeren bir dizi döndürür.
2. Filter Array, diziyi durumu Açık olan siparişlerle sınırlar.
3. Select, kalan nesneleri yeniden şekillendirir: yalnızca sipariş numarası, müşteri adı ve tutar korunur, hedef sistem için anlamlı alan adlarıyla.
4. Sonuç doğrudan, aynı anda birden fazla kaydı işleyen bir eyleme, örneğin Create CSV table'a veya hedef bağlayıcının bir toplu işlem eylemine gider.
Potansiyel olarak yüzlerce çalıştırma içeren bir döngü yerine dört eylem, buna ek olarak tek bakışta anlaşılır kalan bir akış. Her eylem yalnızca net şekilde tanımlanmış bir görevi üstlendiği için her işleme adımı üzerinde kontrolü elinde tutarsın.
Her öğe için ayrı bir yan etki gerekiyorsa, örneğin her sipariş için ayrı ayrı bir e-posta gönderilmesi, toplu uç noktası olmayan bir sistemde bir kayıt oluşturulması ya da bir alt akışın çağrılması gerekiyorsa, Filter Array ve Select bir döngünün yerini almaz. Bir öğenin işlenmesi bir öncekinin sonucuna bağlı olduğunda da bir döngü genellikle daha basit çözüm olarak kalır. Doğrudan Dataverse ile çalışıyorsan, üçüncü bir seçenek daha vardır: Microsoft'a göre, Filter Array ve Select'i akışta kullanmak yerine, verileri ilgili eylemin Sütunları Seç ve Satırları Filtrele seçenekleriyle doğrudan kaynakta filtrelemek ve seçmek daha iyidir; bu, aktarılan veri miktarını baştan azaltır. Kurulumun için sınırın tam olarak nerede olduğu en iyi şekilde somut akışa bakılarak değerlendirilir, örneğin bir Power Automate danışmanlığı kapsamında.
Genellikle önce Filter Array ile filtreleme yapılır, ardından sonuç Select ile yeniden şekillendirilir, çünkü bu durumda Select'in işlemesi gereken nesne sayısı daha azdır. Teknik olarak sıra ters de çevrilebilir, ancak önce filtrelenmiş sürüm genellikle daha anlaşılır ve biraz daha tutumludur.
Evet, bu iki eylemden her biri, diğer her eylem gibi akışının sınırına bir kez dahil edilir. Apply to Each'ten farkı, dizi boyutundan bağımsız olarak her zaman tek bir eylem olarak çalışmalarıdır; oysa bir döngü her öğe için kendi eylem yürütmelerini oluşturur.
Hayır. Filter Array yalnızca sonuç dizisinde kaç nesne bulunduğunu değiştirir, yapılarını değil. Alanların yeniden adlandırılması, eklenmesi veya kaldırılması gerekiyorsa, bundan Select eylemi sorumludur.
Bu durumda eylem boş bir dizi döndürür ve akış hatasız devam eder. Herhangi bir sonuç olup olmadığını kontrol etmek istersen, sonucu sonraki bir koşulda length() işleviyle birleştirirsin.
Çok küçük, kararlı ve az sayıda kayıt içeren diziler için performans kazancı düşüktür. Bu durumda avantaj, çalışma süresinden çok akışın anlaşılırlığında ve bakım kolaylığındadır; ancak dizi üretimde başlangıçta planlanandan daha büyük hale geldiğinde bu avantaj kendini gösterir.
NordFlux'un kurucusu. Webden ve SEO'dan grup ölçeğindeki otomasyona kadar yedi yıllık deneyim, bugün KOBİ'ler için pragmatik biçimde ve Alman veri egemenliğiyle.
Sertifikalar
"Auf alle anwenden" listeleri oge oge isler ve genellikle istenmeden ortaya cikar. Dongu nasil calisir, neden yavaslatir ve ne zaman kaldirilabilir.
Power Automate'te Apply to each sınırları ve sayfalama: 100.000 yineleme sınırı nasıl çalışır ve nasıl aşılır.
Excel tablosu, Her Birine Uygula, Outlook: Power Automate listendeki her satıra nasıl kişisel bir e-posta gönderir.
Filter Array ve Select, birçok Apply to each döngüsünün yerini alarak hem eylem tüketimini hem de çalışma süresini azaltır; ancak iki yaklaşım arasında doğru seçimi yapmak akış mantığına dair gerçek deneyim gerektirir. NordFlux, mevcut Power Automate akışlarınızı performans açısından optimize eder ve yeni süreçleri baştan itibaren kaynak dostu şekilde kurar. İlk görüşmede akışlarınızı gereksiz döngüler açısından inceler ve tasarruf potansiyelini gösteririz.