Sorgu sınırlamaları: Temsilci seçme ve sorgu limitleri
Temsilci seçmeyi anlama
Power Apps bir Power Fx sorgusu, veri kaynağında çalıştırılabilir eşdeğer bir sorguya tam olarak çevrilebileceği zaman, arka uç veri kaynağı ile en iyi şekilde çalışır. Power Apps , veri kaynağının anladığı bir sorgu gönderir, sorgu veri kaynağında gerçekleştirilir ve sorgu sonuçları Power Apps'e döndürülür. Örneğin, veri kaynağı, veri kaynağında verileri filtreleme işini yapabilir ve yalnızca filtre kriterlerine uyan satırları döndürür. Bu düzgün çalıştığında, sorgu işini yapmak için sorgunun veri kaynağına temsilci seçildiğini söyleriz.
Ancak Power Fx sorguları, tüm veri kaynaklarında her zaman eşdeğer sorgulara çevrilemez. Örneğin, Dataverse, Excel'den daha fazla sorgu özelliğini destekler. Dataverse, "in" (üyelik) sorgu işlecini destekler ve Excel desteklemez. Bir sorgu veri kaynağının desteklemediği bir özellik kullandığında sorgunun temsilci seçilemez olduğunu söyleriz. Genel olarak, sorgu ifadesinin herhangi bir kısmı için temsilci seçilemezse, sorgunun herhangi bir bölümüne temsilci seçemeyiz.
Sorgu, temsilci seçilemez bir sorgu olduğunda, Power Apps yalnızca ilk 500 kaydı veri kaynağından alır ve sorgudaki eylemleri gerçekleştirir. Bu sınır 2.000 kayda yükseltilebilir Sınırı değiştirme Power Apps, Power Apps'in iyi performansını korumak için sonuç büyüklüğünü 500'le sınırlandırır. Denemeler yoluyla bu boyutlardan daha büyük kümelerin uygulamanız ve genel olarak Power Apps için performans sorunları ortaya çıkardığı sonucuna ulaştık.
Ancak veri kaynağındaki veriler 500/2000 kaydı aşarsa sorgu yanlış sonuçlar döndürebileceğinden bu sınırlama bir problem olabilir. Örneğin, veri kaynağınızda 10 Milyon kayıt bulunduğu ve sorgunuzun verilerin son bölümünde çalışması gerektiği bir örnek durum düşünün. (Örneğin, 'Z' ile başlayan aile adları) Ancak sorgunuzda atanamayan bir işleç vardır (örneğin, farklı.) Bu durumda, yalnızca ilk 500/2000 kaydı alırsınız ve yanlış sonuçlara sahip olursunuz.
Veri kaynağınıza temsilci seçilebilir tabloları kullanarak kendi Power Fx sorgularınızı oluşturun. Yalnızca temsilci seçilebilir sorgu işlevleri kullanmalısınız. Uygulamanızın iyi çalışmasını ve kullanıcıların ihtiyaç duydukları tüm bilgilere erişmesini sağlamanın tek yolu budur.
Temsilci seçmenin mümkün olmadığı yerleri belirten temsilci uyarılarına dikkat edin. Küçük veri kümeleriyle (500'den az kayıt) çalışırsanız formüle temsilci atanamazsa uygulama, verileri yerel olarak işleyebileceğinden herhangi bir veri kaynağını ve formülü kullanabilirsiniz.
Not
Temsilci uyarıları uygulamanızı yöneterek doğru sonuçlar elde etmenize yardımcı olur. Veri kaynağınızdaki veriler 500 kaydı aşar ve bir işleve temsilci seçilemezse Power Fx , formülü mavi renkli bir alt çizgiyle işaretler.
Temsilci atanabilen veri kaynakları
Temsilci seçme yalnızca belirli tablosal veri kaynakları için desteklenir. Veri kaynağı temsilci seçmeyi destekliyorsa bu destek, bağlayıcı belgelerinde açıklanır. Örneğin, bu tablosal veri kaynakları en popüler kaynaklardır ve temsilci seçmeyi destekler:
- Microsoft Dataverse için Power Apps temsilci seçilebilir işlevleri ve işlemleri
- SharePoint için Power Apps temsilci seçilebilir işlevleri ve işlemleri
- SQL Server için Power Apps temsilci seçilebilir işlevleri ve işlemleri
- Salesforce için Power Apps temsilci seçilebilir işlevleri ve işlemleri
İçeri aktarılan Excel çalışma kitapları (Uygulamanıza statik veri ekleme veri kaynağı kullanılarak), koleksiyonlar ve bağlam değişkenlerinde depolanan tablolar için temsilci seçmek gerekmez. Bu verilerin tümü zaten bellektedir ve Power Apps dilinin tamamı uygulanabilir.
Temsilci seçilebilen işlevler
Sonraki adım yalnızca temsilci seçilebilen formülleri kullanmaktır. Temsilci seçilebilen formül öğeleri burada belirtilmiştir. Ancak her veri kaynağı farklıdır ve bunların tümü bu öğeleri desteklemez. Belirli bir formülde temsilci uyarılarını denetleyin.
Filtre işlevleri
Filter ve LookUp işlevlerinde uygun kayıtları seçmek için tablo sütunlarıyla birlikte şunları kullanabilirsiniz:
- And (&& dahil), Or (|| dahil), Not (! 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, Fullname sütunu Firmalar tablosundan farklı bir tabloda (PrimaryContact) olduğundan
Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])atanmaz. İfade yerel olarak değerlendirilir.
- =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- Denetim özellikleri ile genel değişkenler 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 veri kaynağına bir sabit olarak gönderilebilir ve temsilci seçmeyi engellemez.
Önceki liste, şu önemli öğeleri içermez:
- If
- *, /, Mod
- Sütun dönüştürme işlemleri Metin, Değer
- Concatenate (& dahil)
- ExactIn
- Dize işleme işlevleri: Lower, Upper, Left, Mid, Len, ...
- Sinyaller: Location, Acceleration, Compass, ...
- Geçici işlevler: Rand, ...
- Koleksiyonlar
Sorgu sınırlamaları
Arama düzeyleri
Power Apps, iki arama düzeyini destekler. Başka bir deyişle, bir Power Fx sorgu ifadesinin içinde en çok iki arama işlevi olabilir. Bu sınırlama, performansı korumaktır. Sorgu ifadesi bir arama içeriyorsa, Power Apps ilk olarak temel tabloyu almak için bir sorgu yapar. Ardından, arama bilgileriyle ilk tabloyu genişleten ikinci bir sorgu yapar. Bunun ötesinde bir seviyeyi daha maksimum olarak destekliyoruz. Çevrimdışı için ancak, yalnızca bir arama düzeyini destekleriz.
İ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, denklemin "LHS" sol tarafındaki bir ifadeye yerleştirmek önemlidir. Anlamak için aşağıdaki örnekte 'Departman kimliği'.Ad varlık özelliği bir özellik değeridir ve değerlendirilecek ifadenin LHS'sine yerleştirilmelidir. Aşağıdaki ifade başarılı olur:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Ancak şu ifade başarılı olmaz:
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 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
Arka uçtaki desteğe bağlı olarak bazı toplama işlevlerine temsilci seçilebilir. Sum, Average, Min ve Max için temsilci atanabilir. CountRows ve Count gibi sayma işlevleri için de temsilci seçilemez. Şu anda temsil için bu işlevleri yalnızca sınırlı sayıda veri kaynağı desteklemektedir. Daha fazla bilgi için bkz. Temsilci listesi.
temsilci seçilemeyen işlevler
Aşağıdaki önemli işlevler dahil olmak üzere diğer işlevlerin hiçbiri temsilci atamayı desteklemez:
temsilci seçilemeyen sınırlar
Temsilci seçilemeyen formüller yerel olarak işlenir. Yerel işleme Power Apps formül dilinin tamamının kullanılmasını mümkün kılar. Ancak şunu da göz önünde bulundurmanız gerekir: Önce tüm verilerin cihaza getirilmesi gerekir, bu da ağ üzerinden büyük miktarda veri alınmasına neden olabilir. Bu işlem zaman alabilir ve uygulamanızın yavaş olduğu veya çöktüğü izlenimini verebilir.
Power Apps bu durumu önlemek için yerel olarak işlenebilecek veri miktarına varsayılan olarak 500 kayıt sınırı uygular. Bu sayıyı, küçük veri kümelerine tam erişim sağlamaya devam edebilmeniz ve kısmi sonuçları görerek büyük veri kümeleri kullanımınızı geliştirebilmeniz için seçtik.
Bu özellik kullanıcıların kafasını karıştırabileceğinden oldukça dikkatli kullanılmalıdır. Örneğin, milyonlarca kayıt içeren bir veri kaynağında temsilci seçilemeyen bir seçim formülü kullanan Filter işlevini ele alalım. Filtreleme yerel olarak yapıldığından, yalnızca ilk 500 kayıt taranır. İstenen kayıt 501 veya 500.001 ise Filter işlevi tarafından ele alınmaz ya da döndürülmez.
Toplama işlevleri de kafa karıştırıcı olabilir. Milyonlarca kaydın bulunduğu aynı veri kaynağındaki bir sütunda Average işlevini kullandığımızı düşünelim. İfadenin temsilcisi atanmadığından (önceki nota bakın) Bu durumda ortalama devredilemez, bu nedenle yalnızca ilk 500 kayıt ortalaması alınır. Dikkat etmezseniz, uygulamanızı kullananlar kısmi sayıda kaydı kapsayan bu sonucun veri kaynağının tamamını kapsadığını düşünebilir.
Sınırı değiştirme
500, varsayılan kayıt sayısıdır ancak uygulamanın tamamı için bu sayıyı değiştirebilirsiniz:
- Ayarlar'ı seçin.
- Genel bölümünde, Veri satırı sınırı ayarını 1 yerine 2.000 olarak değiştirin.
Bazı durumlarda, 2.000 (1.000 veya 1.500 gibi değerler de olabilir) sınırının senaryonuz için yeterli olacağını anlayabilirsiniz. Bu sayıyı, senaryonuza uyacak biçimde dikkatlice artırabilirsiniz. Bu sayı arttıkça uygulamanızın performansı düşebilir. Bu durum özellikle çok sayıda sütun içeren geniş tablolarda görülebilir. Yine de en iyi yöntem mümkün olduğunca temsilci seçmektir.
Uygulamanızın büyük veri kümelerine göre ölçeklendirilebileceğinden emin olmak için bu ayarı 1’e düşürün. Temsilci seçilemeyen tüm öğeler tek bir kayıt döndürür. Bu, uygulamanızı test ederken kolayca algılanabilmelidir. Bu, kavram kanıtı aşamasındaki bir uygulamayı üretime geçirmeye çalışırken sürprizleri önlemeye yardımcı olabilir.
Temsilci uyarıları
Neyin temsilci seçilip neyin seçilemeyeceğini bilmeyi kolaylaştırmak için temsilci seçilemeyen bir öğeyi içeren bir formül oluşturduğunuzda Power Apps uyarı (sarı üçgen) verir.
Temsilci uyarıları yalnızca temsilci seçilebilir veri kaynaklarında çalışan formüllerde görüntülenir. Uyarı görmüyorsanız ama formülünüzde temsilci seçme işleminin düzgün çalışmadığını düşünüyorsanız veri kaynağı türünü bu makalenin önceki bölümlerinde yer alan temsilci seçilebilir veri kaynakları listesinden kontrol edin.
Örnekler
Bu örnekte, otomatik olarak [dbo].[Fruit] adlı SQL Server tablosunu temel alan üç ekranlı bir uygulama oluşturacaksınız. Uygulamanın nasıl oluşturulacağı hakkında bilgi için benzer ilkeleri Dataverse hakkındaki makalede SQL Server'a uygulayabilirsiniz.
Galerinin Items özelliği, her ikisi de temsilci atanabilir SortByColumns ve Search işlevlerini içeren bir formül olarak ayarlanır.
Arama kutusuna "Elma" yazın.
Uygulama arama isteğini işlemek üzere SQL Server ile iletişim kurduğu sırada ekranın üst kısmında kısa bir süre ilerleyen noktalar gösterilir. Veri kaynağı milyonlarca kayıt içeriyor olsa bile, arama ölçütlerini karşılayan tüm kayıtlar gösterilir.
Ara işlevi metin sütunundaki her yere baktığından arama sonuçlarında "Elmalar" ve "Yaban elmaları" yer alır. Yalnızca başında apple adının yer aldığı arama terimini içeren kayıtları bulmak isterseniz daha karmaşık bir arama terimiyle temsilci seçilebilen başka bir işlevi (Filter) kullanabilirsiniz. (Kolaylık açısından, SortByColumns çağrısını kaldırın.)
Yeni sonuçlar "Elmalar" ı içerir ancak "Yaban elmaları" nı içermez. Ancak galerinin yanında (ve sol gezinti çubuğu küçük resimleri gösteriyorsa ekran küçük resminde) sarı bir üçgen gösterilir ve 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:
SQL Server temsilci atanabilir bir veri kaynağıdır ve Filter temsilci atanabilir bir işlevdir. Ancak Mid ve Len hiçbir veri kaynağına temsilci atanamaz.
Ancak formül çalıştı, değil mi? Bir noktaya kadar. Bunun kırmızı, dalgalı çizgi değil de bir uyarı olmasının nedeni de budur.
- Tabloda 500'den az kayıt varsa formül mükemmel çalışmıştır. Tüm kayıtlar cihaza getirilmiş ve Filter işlevi yerel olarak uygulanmıştır.
- Tablo 500'den fazla kayıt içeriyorsa ölçütlerle eşleşse bile formül, 501. ve sonraki kayıtları döndürmez.