Sorgu sınırlamaları: Temsilci seçme ve sorgu limitleri

Power Apps, Power Fx sorgusu veri kaynağında çalışan eşdeğer bir sorguya tam olarak çevrildiğinde arka uç veri kaynağıyla en iyi şekilde çalışır. Power Apps veri kaynağının anladığı bir sorgu gönderir, veri kaynağı sorguyu çalıştırır ve Power Apps sonuçları alır. Örneğin, veri kaynağı verilere filtre uygular ve yalnızca filtreleme ölçütlerine uyan satırları döndürür. Bu işlem gerçekleştiğinde Power Apps sorguyu veri kaynağına devreder .

Ancak Power Fx sorguları her zaman her veri kaynağında eşdeğer sorgulara dönüşmeyebilir. Örneğin, Dataverse, Excel'den daha fazla sorgu özelliğini destekler. Dataverse'in (üyelik) sorgu operatörünü destekler, ancak Excel desteklemez. Bir sorgu, veri kaynağının desteklemediği bir özellik kullanıyorsa devredilemez olarak kabul edilir. Sorgu ifadesinin herhangi bir bölümü geri seçilemezse, Power Apps sorgunun herhangi bir bölümünü temsil etmez.

Delege edilemeyen bir sorgu olduğunda, Power Apps veri kaynağından ilk 500 kaydı alır ve ardından sorgudaki işlemleri yürütür. Bu sınırı 2.000 kayda yükseltebilirsiniz. Limiti değiştirmekPower Apps uygulamanızın iyi performans göstermesini sağlamak için sonuç boyutunu 500 kayıtla sınırlar. Daha büyük sonuç kümeleri uygulamanız ve Power Apps için performans sorunlarına neden olabilir.

Ancak, veri kaynağında 500 veya 2.000'den fazla kayıt varsa sorgu yanlış sonuçlar döndürebileceğinden bu sınırlama bir sorun olabilir. Örneğin, veri kaynağınızda 10 milyon kayıt varsa ve sorgunuzun "Z" ile başlayan aile adları gibi verilerin son kısmı üzerinde çalışması gerekiyorsa ve sorgunuz distinct gibi delegasyon yapılamayan bir işleç kullanıyorsa, yalnızca ilk 500 veya 2.000 kaydı alırsınız. Bu nedenle, yanlış sonuçlar alırsınız.

Veri kaynağınıza temsilci seçilebilir tabloları kullanarak kendi Power Fx sorgularınızı oluşturun. Yalnızca delegasyon yapılabilen sorgu işlevlerini kullanın. Uygulamanızın performansını korumanın ve kullanıcıların ihtiyaç duydukları tüm bilgileri almasını sağlamanın tek yoludur.

Delegasyonun mümkün olmadığı durumları gösteren delegasyon uyarılarına dikkat edin. Küçük veri kümeleriyle (500'den az kayıt) çalışıyorsanız, herhangi bir veri kaynağını ve formülü kullanabilirsiniz çünkü formül temsilci olarak atanmazsa uygulama verileri yerel olarak işler.

Uyarı

Delege uyarıları, uygulamanızın doğru sonuçları döndürmesini sağlayacak şekilde yönetmenize yardımcı olur. Veri kaynağınızdaki veriler 500 kaydı aşarsa ve bir işleve temsilci atanmazsa Power Fx formülü mavi bir alt çizgiyle işaretler.

Temsilci atanabilen veri kaynakları

Yetkilendirme yalnızca belirli tablosal veri kaynaklarıyla desteklenir. Veri kaynağı temsilci seçmeyi destekliyorsa bu destek, bağlayıcı belgelerinde açıklanır. Bu popüler tablosal veri kaynakları temsilci seçmeyi destekler:

İçe aktarılan Excel çalışma kitapları (Uygulama veri kaynağınıza statik veri ekle yöntemini kullanarak), koleksiyonlar ve bağlam değişkenlerinde depolanan tabloların delege edilmesine gerek yoktur. Bu veriler zaten bellekte olduğundan tam Power Apps dilini kullanırsınız.

Temsilci seçilebilen işlevler

Yalnızca devredilebilen formülleri kullanın. Bu makalede, delege edilebilecek formül öğeleri listelenmektedir. Her veri kaynağı farklıdır ve tüm veri kaynakları bu öğelerin tümünü desteklemez. Formülünüzde delegasyon uyarılarını kontrol edin.

Filtre işlevleri

Filter, Search, First ve LookUp temsilcilerini seçebilirsiniz.

Filter ve LookUp işlevlerinde, uygun kayıtları seçmek için bu işlevleri tablonun sütunlarıyla birlikte kullanın:

  • Ve (&& dahil), Veya (|| dahil), Değil (! dahil)
  • In> [!NOT]

    In yalnızca temel veri kaynağındaki sütunlar için atanır. Örneğin, veri kaynağı Firmalar tablosuysa Filter(Accounts, Name in ["name1", "name2"]), değerlendirme için veri kaynağına atanır. Ancak Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) devredilemez çünkü Tam ad sütunu Hesaplar'dan farklı bir tabloda (PrimaryContact). İfade yerel olarak değerlendirilir.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • İle Başlar, İle Biter
  • Denetim özellikleri ve genel ve bağlam değişkenleri gibi tüm kayıtlarda aynı olan sabit değerler.

Ayrıca formülünüzün tüm kayıtlar için sabit bir değeri değerlendirdiği bölümleri de kullanabilirsiniz. Örneğin, Left( Language(), 2 ), Date( 2019, 3, 31 ) ve Today() kayıt sütunlarından birine bağlı olmadığından tüm kayıtlar için aynı değeri döndürür. Bu değerler sabit olarak veri kaynağına gönderilir ve delege etmeyi engellemez.

Önceki listede şu önemli öğeler yer almaz:

Temsilci seçme ve koleksiyonlar

Ne zaman With, UpdateContext veya Set kullanırsanız, bu işlevler dahili olarak koleksiyonlar oluşturur. Koleksiyonlar statik bir bellek içi kayıt listesidir ve temsilci seçmeye katılamaz. Delege uyarısı görmezsiniz.

Sorgu sınırlamaları

Arama ve genişletme düzeyleri

Power Apps en fazla iki arama düzeyi kullanmanıza olanak tanır. Performansı korumak için bir Power Fx sorgu ifadesi en fazla iki arama fonksiyonunu içerebilir. Sorgu ifadesi bir arama içerdiğinde, Power Apps önce temel tabloyu sorgular, ardından ikinci bir sorgu çalıştırarak ilk tabloyu arama bilgileriyle genişletir. Bunun ötesinde bir ek seviye maksimum olarak desteklenir. Çevrimdışı senaryolarda yalnızca bir arama düzeyi genişletme desteklenir.

Tek bir sorguda en fazla 20 varlığı genişletebilir veya birleştirebilirsiniz. Bir sorguda 20'den fazla tabloyu birleştirmeniz gerekiyorsa, mümkünse veri sunucusunda bir görünüm oluşturmayı deneyin.

İfade değerlendirmesi: Varlığın özelliği, eşitlik işlecinin "LHS" sol tarafında olmalıdır

Karşılaştırılacak bir varlığın özelliğini bir denklemin sol tarafına (LHS) koyun. Örneğin, aşağıdaki ifadede, 'İş birimi kimliği'.Adı varlık özelliği LHS'dedir ve ifade çalışır:

Filter(
        Budgets,
        'Business unit ID'.Name = LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name,
        DataCardValue37.Selected.'Date Range String'='Date Range String'
    )

Ancak, bu ifade çalışmaz:

 Filter(
        Budgets,
        LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name = 'Business unit ID'.Name,
        'Date Range String'=DataCardValue37.Selected.'Date Range String'
    )

Sıralama işlevleri

Sort ve SortByColumns için temsilci atanabilir.

Sort işlevinde formül yalnızca tek bir sütunun adı olabilir ve başka işleç veya işlev içeremez.

Toplama işlevleri

Bazı toplama işlevleri, arka uç desteğine göre devredilebilir. Toplam, Ortalama, Min ve Maks gibi işlevler atanabilir. CountRows ve Count gibi sayma işlevleri de devredilebilir. Ancak RemoveIf ve UpdateIf'in temsilci kısıtlamaları vardır. Yalnızca sınırlı sayıda veri kaynağı bu işlevler için delege etmeyi destekler. Daha fazla bilgi için bkz. Temsilci seçme listesi.

Devredilemez işlevler

Diğer tüm işlevler yetki devredemez. Önemli işlevler şunlardır:

Devredilemez sınırlar

Temsilci seçilemeyen formüller yerel olarak işlenir. Yerel işleme, tam Power Apps formül dilini kullanmanıza olanak tanır. Ancak bir denge vardır: tüm veriler önce cihaza gelir, bu da ağ üzerinden büyük miktarda veri almak anlamına gelebilir. Bu işlem zaman alabilir ve uygulamanızın yavaş veya yanıt vermiyor gibi görünmesine neden olabilir.

Bu sorunu önlemek için Power Apps yerel olarak işlenebilen veri miktarını varsayılan olarak 500 kayıtla sınırlar. Bu sınır, küçük veri kümelerini tamamen kullanmanıza ve kısmi sonuçlar görerek büyük veri kümeleriyle çalışmanıza olanak tanır.

Kullanıcıların kafasını karıştırabileceğinden bu özelliği kullanırken dikkatli olun. Örneğin, bir milyon kaydı olan bir veri kaynağına devredilemeyen bir seçim formülüyle Filtre işlevini kullanırsanız, yalnızca ilk 500 kayıt taranır. İstediğiniz kayıt 501 veya 500.001 kaydıysa , Filtre bunu bulamaz veya döndürmez.

Toplama fonksiyonları da kafa karıştırıcı olabilir. Örneğin, aynı milyon kayıtlı veri kaynağındaki bir sütun üzerinde Ortalama'yı kullanırsanız, Ortalama devredilemez çünkü ifade devredilmemiştir (bkz. önceki not). Yalnızca ilk 500 kaydın ortalaması alınır. Dikkatli değilseniz, kullanıcı kısmi yanıtın tam yanıt olduğunu düşünebilir.

Sınırı değiştirme

Varsayılan kayıt sayısı 500'dür, ancak uygulamanız için bu sayıyı değiştirebilirsiniz:

  1. Ayarlarseçin.
  2. Genel bölümünde, Veri satırı sınırı ayarını 1 yerine 2.000 olarak değiştirin.

Bazı durumlarda senaryonuz için 2.000, 1.000 veya 1.500 kayıt yeterlidir. İhtiyaçlarınıza uyacak şekilde bu sayıyı artırabilirsiniz, ancak bunu yaptığınızda uygulamanızın performansı düşebilir, özellikle de çok sayıda sütuna sahip geniş tablolar için. Yine de mümkün olduğunca çok delege etmek en iyisidir.

Uygulamanızın büyük veri kümelerine ölçeklendirildiğinden emin olmak için bu değeri 1 olarak ayarlayın. Delege edilemeyen her şey tek bir kayıt döndürür; bu da uygulamanızı test ederken kolayca tespit edilebilir. Bu, kavram kanıtı uygulamasını üretime taşırken sürprizlerle karşılaşmanızı önlemenize yardımcı olur.

Temsilci uyarıları

Power Apps, delegasyon yapılamayan bir formül oluşturduğunuzda bir uyarı (sarı üçgen) gösterir. Neyin devredilip devredilmediğini bilmek daha kolaydır.

Temsilci uyarıları yalnızca temsili veri kaynakları kullanan formüllerde görünür. Bir uyarı görmüyorsanız ancak formülünüzün devredilmediğini düşünüyorsanız, veri kaynağı türünüzü bu makalenin önceki kısımlarında yer alan devredilebilir veri kaynakları listesiyle karşılaştırın.

Örnekler

Bu örnekte, [dbo].[Fruit] adlı SQL Server tablosunu temel alan, üç ekranlı bir uygulamayı otomatik olarak oluşturacaksınız. SQL Server için Dataverse ile ilgili makaleden benzer ilkeleri uygulayarak uygulamanın nasıl oluşturulacağını öğrenin.

Üç ekranlı uygulama.

Galerinin Öğeler özelliği, her ikisi de devredilebilen SortByColumns ve Ara işlevlerine sahip bir formül kullanır.

Arama kutusuna "Elma" yazın.

Uygulama arama isteğini işlemek üzere SQL Server ile iletişim kurarken ekranın üst kısmına yakın bir yerde kısa bir süre yürüyen noktalar belirir. Veri kaynağında milyonlarca kayıt olsa bile, arama kriterlerine uyan tüm kayıtlar görüntülenir.

Metin girişi denetimi arama.

Ara işlevi metin sütunundaki her yere baktığından arama sonuçlarında "Elmalar" ve "Yaban elmaları" yer alır. Yalnızca meyvenin adının başında arama terimini içeren kayıtları bulmak için, daha belirli bir arama terimiyle başka bir devredilebilir işlev olan Filtre'yi kullanın. Kolaylık açısından, SortByColumns çağrısını kaldırın.

SortByColumns çağrısını kaldırma.

Yeni sonuçlar "Elmalar"ı içerir ancak "Yaban elmaları"nı içermez. Sol gezinti çubuğu küçük resimleri gösteriyorsa, galerinin yanında ve ekran küçük resminde sarı bir üçgen görünür. Formülün bir bölümünün altında mavi, dalgalı bir çizgi görünür. Bu öğelerin her biri bir uyarıya işaret eder. Galerinin yanındaki sarı üçgenin üzerine gelirseniz şu ileti görüntülenir:

Temsilci uyarısının üzerine gelme.

SQL Server devredilebilir bir veri kaynağıdır ve Filter devredilebilir bir işlevdir. Ancak Mid ve Len için herhangi bir veri kaynağında temsilci seçilemez.

Ama işe yarıyor, değil mi? Bir nevi. Bunun kırmızı, dalgalı çizgi değil de bir uyarı olmasının nedeni budur.

  • Tabloda 500'den az kayıt varsa formül mükemmel çalışır. Tüm kayıtlar cihaza getirilir ve Filtre yerel olarak uygulanır.
  • Tabloda 500'den fazla kayıt varsa, ölçütlerle eşleşse bile formül 501 veya daha yüksek numaralı kaydı döndürmez.

Ayrıca bkz.