Temsilci seçmeyi anlamaUnderstand delegation

PowerApps veri tablolarını filtrelemek, sıralamak ve şekillendirmek için kullanabileceğiniz gelişmiş işlev kümesine sahiptir. Bunların bazıları da Filter, Sort ve AddColumns işlevleridir.PowerApps includes a powerful set of functions for filtering, sorting, and shaping tables of data: Filter, Sort, and AddColumns functions to name just a few. Bu işlevlerden faydalanarak kullanıcılarınızın yalnızca ihtiyaç duydukları bilgilere erişmesini sağlayabilirsiniz.With these functions, you can provide your users with focused access to the information they need. Veritabanı yönetimi geçmişi olan biriyseniz bu işlevler, veritabanı sorgusu yazmayla aynı mantıkta çalışır.For those with a database background, using these functions is the equivalent of writing a database query.

Verimli uygulamalar oluşturmanın önemli noktalarından biri, cihazınıza çekilen veri miktarını en aza indirmektir.The key to building efficient apps is to minimize the amount of data that needs to be brought to your device. Çoğu durumda milyonlarca kayıttan yalnızca birkaç tanesine ihtiyaç duyarsınız. Bazı durumlarda da tek bir toplam değer binlerce kaydı özetleyebilir.Perhaps only a handful of records from a sea of millions are needed, or a single aggregate value can represent thousands of records. Bazen de kayıtların yalnızca ilk kümesi getirilir ve geri kalanı kullanıcının talebi üzerine sağlanır.Or perhaps only the first set of records can be retrieved, and the rest brought in as the user gestures that they want more. Verilerin belirli bir bölümüne odaklanmak, uygulamanızın ihtiyaç duyduğu güç, bellek ve ağ bant genişliği miktarını önemli ölçüde azaltarak hücresel ağ üzerinden bağlı olanlar da dahil olmak üzere kullanıcılarınızın daha hızlı yanıtlar almasını sağlar.Being focused can dramatically reduce the processing power, memory, and network bandwidth needed by your app, resulting in snappier response times for your users, even on phones connected via a cellular network.

Temsilci seçme, PowerApps formüllerinin ağ üzerinden taşınan veri miktarını azaltma ihtiyacında devreye girdiği noktadır.Delegation is where the expressiveness of PowerApps formulas meets the need to minimize data moving over the network. Kısaca ifade etmek gerekirse PowerApps, verileri yerel ortamda işlenmek üzere uygulamaya taşımak yerine veri işleme konusunda kaynağı temsilci olarak seçer.In short, it means that PowerApps will delegate the processing of data to the data source, rather than moving the data to the app for processing locally.

Olayın karmaşık hale geldiği ve bu makalenin açıklık getirmek istediği nokta, bir PowerApps formülünde ifade edilen tüm öğeler için her veri kaynağının temsilci olarak seçilemeyeceğidir.Where this becomes complicated, and the reason this article exists, is because not everything that can be expressed in a PowerApps formula can be delegated to every data source. Excel'in formül diline benzer bir söz diziminin kullanıldığı PowerApps dili, çok çeşitli sayı ve metin işleme işlevleriyle bellek içi tam bir çalışma kitabına anında erişim sağlayacak şekilde tasarlanmıştır.The PowerApps language mimics Excel's formula language, designed with complete and instant access to a full workbook in memory, with a wide variety of numerical and text manipulation functions. Sonuç olarak PowerApps dili, SQL Server gibi güçlü veritabanı altyapıları dahil olmak üzere çoğu veri kaynağının destekleyebileceğinden çok daha zengindir.As a result, the PowerApps language is far richer than most data sources can support, including powerful database engines such as SQL Server.

Büyük veri kümeleriyle çalışmak için, temsilci seçilebilecek veri kaynaklarının ve formüllerin kullanılması gerekir.Working with large data sets requires using data sources and formulas that can be delegated. 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.It is the only way to keep your app performing well and ensure users can access all the information they need. Temsilci seçmenin mümkün olmadığı noktaları gösteren mavi nokta önerilerini inceleyin.Take heed of blue-dot suggestions that flag places where delegation is not possible. Küçük veri kümeleriyle çalışıyorsanız (500 kayıttan az) formülde temsilci seçilemediği durumlarda yerel olarak işleme mümkün olduğundan tüm veri kaynaklarını ve formülleri kullanabilirsiniz.If you're working with small data sets (less than 500 records), you can use any data source and formula as processing can be done locally if the formula cannot be delegated.

Transfer edilebilir veri kaynaklarıDelegable data sources

Temsilci seçmeyi destekleyen veri kaynaklarının ve desteklenen kapsamların tamamı için temsilci seçme listesine bakın.See the delegation list for the full list of which data sources support delegation and to what extent.

Mevcut veri kaynaklarına temsilci seçme desteği eklemenin yanı sıra yeni veri kaynakları eklemeye devam ediyoruz.We are continuing to add delegation support to existing data sources, as well as add more data sources.

İçeri aktarılan Excel çalışma kitapları ("Uygulamanıza statik veriler ekleyin" veri kaynağı kullanılarak), koleksiyonlar ve bağlam değişkenlerinde depolanan tablolar için temsilci seçmek gerekmez.Imported Excel workbooks (using the "Add static data to your app" data source), collections, and tables stored in context variables don't require delegation. Bu verilerin tümü zaten bellek içindedir ve PowerApps dilinin tamamı kullanılabilir.All of this data is already in memory, and the full PowerApps language can be applied.

Temsilci seçilebilen işlevlerDelegable functions

Sonraki adım ise yalnızca temsilci seçilebilen formülleri kullanmaktır.The next step is to use only those formulas that can be delegated. Temsilci seçilebilen formül öğeleri burada belirtilmiştir.Included here are the formula elements that could be delegated. Ancak veri kaynakları farklıdır ve tamamı bu öğeleri desteklemez.However, every data source is different, and not all of them support all of these elements. Kullandığınız formüldeki mavi nokta önerilerini inceleyin.Check for blue-dot suggestions in your particular formula.

Bu listeler zaman içinde değişecektir.These lists will change over time. Daha fazla işlev ve işleç için temsilci seçme desteği sunmak üzere çalışmaya devam ediyoruz.We're working to support more functions and operators with delegation.

Filtreleme işlevleriFilter functions

Filter, Search ve LookUp işlevleri için temsilci seçilebilir.Filter, Search, and LookUp can be delegated.

Filter ve LookUp işlevlerinde uygun kayıtları seçmek için tablo sütunlarıyla birlikte aşağıdakiler kullanılabilir:Within the Filter and LookUp functions, the following can be used with columns of the table to select the appropriate records:

Formülünüzün tüm kayıtlar için sabit değer sonucu veren bölümü de kullanılabilir.Portions of your formula that evaluate to a constant value for all records can also be used. Örneğin, Left( Language(), 2 ) kayıt sütunlarından birine bağlı olmadığından tüm kayıtlar için aynı değeri döndürür.For example, Left( Language(), 2 ) does not depend on any columns of the record and therefore returns the same value for all records. Sonuç olarak bir sabit değerdir.It is effectively a constant. Bağlam değişkenlerinin, koleksiyonların ve sinyallerin kullanılması sabit değer vermeyebileceğinden Filter ve LookUp işlevleri için temsilci seçilmesini engelleyecektir.Use of context variables, collections, and signals may not be constant and therefore will prevent Filter and LookUp from being delegated.

Yukarıdaki listede eksik olan öğelerden bazıları:Some notable items missing from the above list:

Sıralama işlevleriSorting functions

Sort ve SortByColumns için temsilci seçilebilir.Sort and SortByColumns can be delegated.

Sort işlevinde formül yalnızca tek bir sütunun adı olabilir ve başka işleç veya işlev içeremez.In Sort, the formula can only be the name of a single column and can't include other operators or functions.

Toplama işlevleriAggregate functions

Sum, Average, Min ve Max için temsilci seçilebilir.Sum, Average, Min, and Max can be delegated. Şu an için yalnızca sınırlı sayıda veri kaynağı temsilci seçme desteği sunmaktadır. Daha fazla ayrıntı için temsilci seçme listesine bakın.Only a limited number of data sources support this delegation at this time, check the delegation list for more details.

CountRows, CountA ve Count gibi sayma işlevleri için temsilci seçilemez.Counting functions such as CountRows, CountA, and Count cannot be delegated.

StdevP ve VarP gibi diğer toplama işlevleri için de temsilci seçilemez.Other aggregate functions such as StdevP and VarP cannot be delegated.

Diğer işlevlerOther functions

Aşağıdaki önemli işlevler dahil olmak üzere diğer işlevlerin hiçbir temsilci seçmeyi desteklemez:All other functions do not support delegation, including these notable functions:

Bir tablodaki verileri diğeriyle birleştirmek için genelde AddColumns ve LookUp işlevleri birlikte kullanılır. Bu işleme, veritabanı terminolojisinde Birleştirme adı verilir.A common pattern is to use AddColumns and LookUp to merge information from one table into another, commonly referred to as a Join in database parlance. Örneğin:For example:

AddColumns( Products, "Supplier Name", LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name )AddColumns( Products, "Supplier Name", LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name )

Products ve Suppliers veri kaynakları için temsilci seçmek mümkün olsa da LookUp işlevi için temsilci seçilebilir ancak AddColumns işlevi için temsilci seçilemez.Even though Products and Suppliers may be delegable data sources and LookUp is a delegable function, the AddColumns function is not delegable. Formülün tamamının sonucu, Products veri kaynağının ilk bölümüyle sınırlı olacaktır.The result of the entire formula will be limited to the first portion of the Products data source.

LookUp ve veri kaynağı için temsilci seçmek mümkün olsa da Suppliers ile eşleşme büyük olsa dahi veri kaynağının herhangi bir yerinde bulunabilir.Since the LookUp and its data source are delegable, a match for Suppliers can be found anywhere in the data source, even if it is large. Bu formülün olası bir dezavantajı LookUp işlevinin Products veri kaynağındaki ilk kayıtların her biri için veri kaynağına ayrı ayrı çağrı yaparak ağ üzerinde fazla trafiğe neden olmasıdır.A potential downside is that LookUp will made separate calls to the data source for each of those first records in Products, causing a lot of chatter on the network. Suppliers yeterince küçükse ve çok sık değiştirilmiyorsa uygulama başlatıldığında Collect çağrısıyla veri kaynağını uygulamanızda önbelleğe alabilir (açılış ekranında OnVisible işlevini kullanarak) ve bunun yerine LookUp işlevini kullanabilirsiniz.If Suppliers is small enough and does not change often, you could cache the data source in your app with a Collect call when the app starts (using OnVisible on the opening screen) and do the LookUp to it instead.

Temsilci seçilemeyen işlevler için sınırlarNon-delegable limits

Temsilci seçilemeyen formüller yerel olarak işlenir.Formulas that cannot be delegated will be processed locally. Bu da PowerApps formül dilinin tamamının kullanılmasını mümkün kılar.This allows for the full breadth of the PowerApps formula language to be used. Ancak şunu da göz önünde bulundurmanız gerekir: İlk olarak verilerin tamamının cihaza alınmasına ihtiyaç vardır ve bu da ağ üzerinden büyük miktarlarda veri aktarımı yapılmasına neden olabilir.But at a price: all the data must be brought to the device first, which could involve retrieving a large amount of data over the network. Bu işlem uzun sürebilir ve uygulamanızın yavaş çalıştığı hatta kilitlendiği izlenimini yaratabilir.That can take time, giving the impression that your app is slow or possibly hung.

PowerApps bu durumun önüne geçmek için yerel ortamda işlenebilecek veri miktarına 500 kayıt sınırı uygular.To avoid this, PowerApps imposes a limit on the amount of data that can be processed locally: 500 records. Küçük veri kümelerine tam erişime sahip olmaya devam etmenizi ve kısmi sonuçlar alarak büyük veri kümelerini daha etkili bir şekilde kullanmanızı sağlamak için bu sayıyı seçtik.We chose this number so that you would still have complete access to small data sets and you would be able to refine your use of large data sets by seeing partial results.

Bu özellik kullanıcılar açısından kafa karışıklığı yaratabileceğinden dikkatli bir şekilde kullanılmalıdır.Obviously care must be taken when using this facility as it can be confusing for users. Örneğin, milyonlarca kayıttan oluşan bir veri kaynağında temsilci seçilemeyen bir seçim formülü kullanan Filter işlevini ele alalım.For example, consider a Filter function with a selection formula that cannot be delegated, over a million record data source. Filtreleme işlemi yerel ortamda yapılacağından milyonlarca kaydın yalnızca ilk 500'ü taranır.Since the filtering will be done locally, only the first 500 records of the million records will be scanned. İstenen kayıt 501 veya 500.001 numaralı kayıtsa Filter işlevi tarafından işlenmez veya döndürülmez.If the desired record is record 501, or 500,001, it will not be considered or returned by Filter.

Bunun karışıklık yaratabileceği bir diğer nokta da toplama işlevleridir.Another place where this can be confusing is aggregate functions. Milyonlarca kaydın bulunduğu aynı veri kaynağındaki bir sütunda Average işlevini kullandığımızı düşünelim.Take Average over a column of that same million record data source. Average işlevi henüz temsilci seçme desteği sunmadığından yalnızca ilk 500 kaydın ortalaması alınır.Since Average cannot yet be delegated, only the first 500 records will be averaged. Bu nedenle dikkatli olunması gerekir. Aksi halde uygulamanızı kullananlar yalnızca belirli sayıda kaydı kapsayan bu sonucun veri kaynağının tamamını kapsadığını düşünebilir.Care must be taken or a partial answer could be misconstrued as a complete answer by a user of your app.

Mavi nokta önerileriBlue dot suggestions

Temsilci seçme desteği sunulan ve sunulmayan işlevleri daha kolay anlamanız için kod yazma deneyiminde, temsilci seçme desteği sağlanmayan öğeler içeren formüllere ilişkin mavi nokta önerileri sunulur.To make it easier to know what is and is not being delegated, the authoring experience provides blue dot suggestions when a formula contains something that cannot be delegated.

Mavi noktalar yalnızca temsilci seçme desteği sunan veri kaynaklarında çalışan formüllerde gösterilir.Blue dots are only shown on formulas that operate on delegable data sources. Mavi nokta görünmüyorsa ancak formülünüzde temsilci seçme işleminin düzgün çalışmadığını düşünüyorsanız veri kaynağı türünü yukarıdaki temsilci seçilebilir veri kaynakları listesinden kontrol edin.If you don't see a blue dot and you believe your formula is not being properly delegated, check the type of data source against the list of delegable data sources above.

ÖrneklerExamples

Bu örnekte [dbo].[Products] içinde meyve adlarını içeren bir SQL Server tablosunu kullanacağız.In this example, we will use a SQL Server table that contains products, in particular fruits, names [dbo].[Products]. Yeni ekranda PowerApps bu veri kaynağına bağlı ve üç ekranlı basit bir uygulama oluşturabilir:On the New screen, PowerApps can create a basic three screen app connected to this data source:

Üç ekranlı uygulama

Galeri denetiminin Items özelliğindeki formüle göz atın.Note the formula for the Gallery's Items property. Formülde kullanılan SortByColumns ve Search işlevleri için temsilci seçilebilir.It is using SortByColumns and Search functions, both of which can be delegated.

Şimdi metin girişi denetimine "Apple" yazalım.Let's type "Apple" into the search text-input control. Dikkat ederseniz yeni aramadaki yeni giriş işlenirken bir an için ekranın en üstünde hareket eden noktalar görebilirsiniz.If we are very observant, we will momentarily see marching dots on the top of the screen while the new entry in the new search is processed. Hareket eden noktalar SQL Server ile iletişim kurulduğunu gösterir:The marching dots indicate that we are communicating with the SQL Server:

Metin girişi denetimi arama

Formülün tamamı temsilci seçmeye uygun olduğundan [dbo].[Products] tablosunda milyonlarca kayıt olsa bile tümünü bulabilir ve kullanıcı sonuçlarda gezinirken bunları görüntüleyebiliriz.Because this is all delegable, even if the [dbo].[Products] table contains millions of records, we will still find them all, paging through them in the gallery as the user scrolls through the results.

Hem "Apple" hem de "Pineapple" eşleşmesinin görüntülendiğine dikkat edin.You will notice that we are seeing a match for both "Apple" and "Pineapple". Search işlevi bir terimi metin sütununun tamamında arar.The Search function will find a search term anywhere in a text column. Bunun yerine arama teriminin yalnızca meyve adının başında geçtiği örnekleri bulmak istediğimizi düşünelim.If instead, let's say we wanted to only find the search term at the beginning of the fruit's name. Temsilci seçilebilir başka bir işlev olan Filter işleviyle daha karmaşık bir arama terimi kullanabiliriz (kolaylık açısından SortByColumns çağrısını kaldıracağız):We can use another delegable function, Filter, with a more complicated search term (for simplicity we'll remove the SortByColumns call):

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

Bu formül düzgün çalışıyor gibi görünüyor. "Apples" girişi gösterilirken "Pineapple" gösterilmiyor.This appears to be working, only "Apples" is correctly showing now and "Pineapple" is not. Ancak galerinin yanında mavi bir nokta ve formülün bir kısmının altında mavi bir dalgalı çizgi görünüyor.However, there is a blue dot showing next to the gallery and there is a blue wavy line under a portion of the formula. Hatta ekran küçük resminde de mavi bir nokta var.There is even a blue dot showing in the screen thumbnail. Galerinin yanındaki mavi noktanın üzerine geldiğimizde şu açıklamayı görebiliriz:If we hover over the blue dot next to the gallery, we see the following:

Mavi noktanın üzerine gelme

Temsilci seçmeyi destekleyen Filter işlevini temsilci seçmeyi destekleyen SQL Server ile birlikte kullanıyor olmamıza rağmen Filter işlevinde kullandığımız formül temsilci seçmeyi desteklemiyor.Although we are using Filter which is a delegable function, with SQL Server which is a delegable data source, the formula we used within Filter is not delegable. Mid ve Len için herhangi bir veri kaynağında temsilci seçilemez.Mid and Len cannot be delegated to any data source.

Ancak formül çalıştı, değil mi?But it worked, didn't it? Bir noktaya kadar.Well, kind of. Sarı tehlike simgesi ve kırmızı dalgalı çizgi hatası yerine mavi nokta gösterilmesinin nedeni de budur.And that is why this is a blue dot instead of a yellow hazard icon and red wavy error. [dbo].[Products] tablosunda 500'den az kayıt varsa formülün mükemmel bir şekilde çalıştığını söyleyebiliriz.If the [dbo].[Products] table contains less than 500 records, then yes, this worked perfectly. Tüm kayıtlar cihaza getirildi ve Filter işlevi yerel olarak uygulandı.All records were brought to the device and the Filter was applied locally.

Ancak tabloda 500'den fazla kayıt varsa galeride yalnızca tablonun ilk 500 kaydında bulunan ve "Apple" ile başlayan girişler görüntülenir.If instead this table contains more than 500 records, then only fruit which begin with "Apple" in the first 500 records of the table will be displayed in the gallery. 501 veya 500.001 numaralı kayıtta "Apple, Fuji" girişi varsa bu giriş görüntülenmez.If "Apple, Fuji" appears as a name in record 501 or 500,001 it will not be found.