Grundlagen der Delegierung in einer Canvas-AppUnderstand delegation in a canvas app

Powerapps enthält eine Reihe leistungsfähiger Funktionen zum Filtern, Sortieren und Strukturieren von Tabellen von Daten in einer Canvas-App: die Funktionen " Filter ", " Sort " und " AddColumns ", um nur ein paar zu benennen.Power Apps includes a powerful set of functions for filtering, sorting, and shaping tables of data in a canvas app: Filter, Sort, and AddColumns functions to name just a few. Mit diesen Funktionen können Sie für Ihre Benutzer den genauen Zugriff auf die benötigten Informationen bereitstellen.With these functions, you can provide your users with focused access to the information they need. Für Leser mit Datenbankkenntnissen: Die Verwendung dieser Funktionen entspricht dem Schreiben einer Datenbankabfrage.For those with a database background, using these functions is the equivalent of writing a database query.

Der Schlüssel zur Erstellung von effizienten Apps besteht darin, die Datenmenge gering zu halten, die auf Ihr Gerät übertragen werden muss.The key to building efficient apps is to minimize the amount of data that must be brought to your device. Unter Umständen benötigen Sie aus Millionen von Datensätzen nur eine Handvoll von Datensätzen, oder ein einzelner Aggregatwert kann für Tausende von Datensätzen stehen.Perhaps you need only a handful of records from a sea of million, or a single aggregate value can represent thousands of records. Vielleicht ist es auch möglich, nur den ersten Satz mit Datensätzen abzurufen, und den Rest erst dann bereitzustellen, wenn er vom Benutzer angefordert wird.Or perhaps only the first set of records can be retrieved, and the rest brought in as the user gestures that they want more. Wenn zielgerichtet vorgegangen wird, können die Verarbeitungsleistung, der Arbeitsspeicher und die Netzwerkbandbreite, die für die App erforderlich sind, deutlich gesenkt werden. Dies führt zu kürzeren Reaktionszeiten für Ihre Benutzer – sogar auf Smartphones, die über ein Mobilfunknetz verbunden sind.Being focused can dramatically reduce the processing power, memory, and network bandwidth that your app needs, resulting in snappier response times for your users, even on phones connected via a cellular network.

Die Delegierung von powerapps-Formeln erfüllt die Notwendigkeit, die Daten zu minimieren, die über das Netzwerk verschoben werden.Delegation is where the expressiveness of Power Apps formulas meets the need to minimize data moving over the network. In Kürze delegiert Power Apps die Verarbeitung von Daten an die Datenquelle, anstatt die Daten zur lokalen Verarbeitung in die APP zu verschieben.In short, Power Apps will delegate the processing of data to the data source, rather than moving the data to the app for processing locally.

Wenn dies kompliziert wird und der Grund für diesen Artikel ist, liegt es daran, dass nicht alles, was in einer powerapps-Formel ausgedrückt werden kann, an jede Datenquelle delegiert werden kann.Where this becomes complicated, and the reason this article exists, is because not everything that can be expressed in a Power Apps formula can be delegated to every data source. Die powerapps-Sprache imitiert die Formelsprache von Excel, die mit vollständigem und sofortigem Zugriff auf eine vollständige Arbeitsmappe im Arbeitsspeicher entwickelt wurde und über eine Vielzahl von numerischen und Text Bearbeitungsfunktionen verfügt.The Power Apps 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. Folglich ist die Sprache von Power apps weitaus umfangreicher als die meisten Datenquellen unterstützen können, einschließlich leistungsfähiger Daten Bank Module wie SQL Server.As a result, the Power Apps language is far richer than most data sources can support, including powerful database engines such as SQL Server.

Zum Verwenden von großen Datasets ist die Nutzung von Datenquellen und Formeln erforderlich, für die eine Delegierung möglich ist.Working with large data sets requires using data sources and formulas that can be delegated. Nur auf diese Weise erzielen Sie für Ihre App eine gute Leistung und können sicherstellen, dass die Benutzer auf alle benötigten Informationen zugreifen können.It's the only way to keep your app performing well and ensure users can access all the information they need. Achten Sie auf Delegierungswarnungen, die anzeigen, an welcher Stelle keine Delegierung möglich ist.Take heed of delegation warnings that identify places where delegation isn't possible. Wenn Sie mit kleinen Datasets arbeiten (weniger als 500 Datensätze), können Sie eine beliebige Datenquelle und Formel verwenden, weil die App Daten lokal verarbeiten kann, falls das Delegieren der Formel nicht möglich ist.If you're working with small data sets (fewer than 500 records), you can use any data source and formula because the app can process data locally if the formula can't be delegated.

Hinweis

Delegierungs Warnungen wurden zuvor in powerapps als "Blue dot"-Vorschläge gekennzeichnet, aber Delegierungs Vorschläge wurden seit der erneuten Klassifizierung als Warnungen erneut klassifiziert.Delegation warnings were previously flagged in Power Apps as "blue dot" suggestions, but delegation suggestions have since been re-classified as warnings. Wenn die Daten in der Datenquelle 500 Datensätze überschreiten und eine Funktion nicht delegiert werden kann, können Power Apps möglicherweise nicht alle Daten abrufen, und Ihre APP weist möglicherweise falsche Ergebnisse auf.If the data in your data source exceeds 500 records and a function can't be delegated, Power Apps might not be able to retrieve all of the data, and your app may have wrong results. Mithilfe von Delegierungswarnungen können Sie Ihre App so verwalten, dass die Ergebnisse richtig sind.Delegation warnings help you manage your app so that it has correct results.

Delegierbare DatenquellenDelegable data sources

Die Delegierung wird nur für bestimmte tabellarische Datenquellen unterstützt.Delegation is supported for certain tabular data sources only. Wenn eine Datenquelle die Delegierung unterstützt, werden von der zugehörigen Connector-Dokumentation unterstützt.If a data source supports delegation, its connector documentation outlines that support. Diese tabellarischen Datenquellen sind z. b. die beliebtesten und unterstützen die Delegierung:For example, these tabular data sources are the most popular, and they support delegation:

Importierte Excel-Arbeitsmappen (unter Verwendung der Datenquelle statische Daten zu Ihrer APP hinzufügen ), Sammlungen und in Kontext Variablen gespeicherte Tabellen erfordern keine Delegierung.Imported Excel workbooks (using the Add static data to your app data source), collections, and tables stored in context variables don't require delegation. Alle diese Daten befinden sich bereits im Arbeitsspeicher, und die vollständige powerapps-Sprache kann angewendet werden.All of this data is already in memory, and the full Power Apps language can be applied.

Delegierbare FunktionenDelegable functions

Der nächste Schritt besteht darin, nur diejenigen Formeln zu verwenden, die delegiert werden können.The next step is to use only those formulas that can be delegated. Hier sind die Formelelemente angegeben, die delegiert werden können.Included here are the formula elements that could be delegated. Allerdings ist jede Datenquelle anders, und nicht alle unterstützen alle Elemente.However, every data source is different, and not all of them support all of these elements. Überprüfen Sie Ihre Formel auf Delegierungswarnungen.Check for delegation warnings in your particular formula.

Diese Listen werden sich im Laufe der Zeit ändern.These lists will change over time. Wir arbeiten daran, die Delegierung für weitere Funktionen und Operatoren zu unterstützen.We're working to support more functions and operators with delegation.

FilterfunktionenFilter functions

Die Funktionen Filter , Search und LookUp können delegiert werden.Filter, Search, and LookUp can be delegated.

In den Funktionen Filter und LookUp können Sie für Spalten der Tabelle Folgendes verwenden, um die entsprechenden Datensätze auszuwählen:Within the Filter and LookUp functions, you can use these with columns of the table to select the appropriate records:

Sie können auch Teile Ihrer Formel verwenden, die zu einem konstanten Wert für alle Datensätze ausgewertet werden.You can also use portions of your formula that evaluate to a constant value for all records. Beispielsweise ist Left (Language (), 2) , Date (2019, 3, 31) und Today () nicht von Spalten des Datensatzes abhängig und gibt daher denselben Wert für alle Datensätze zurück.For example, Left( Language(); 2 ), Date( 2019; 3; 31 ), and Today() don't depend on any columns of the record and, therefore, return the same value for all records. Diese Werte können als Konstante an die Datenquelle gesendet werden und blockieren nicht die Delegierung.These values can be sent to the data source as a constant and won't block delegation.

In der obigen Liste werden die folgenden wichtigen Elemente nicht aufgeführt:The previous list doesn't include these notable items:

SortierfunktionenSorting functions

Sort und SortByColumns können delegiert werden.Sort and SortByColumns can be delegated.

Bei Sort kann die Formel nur der Name einer einzelnen Spalte sein und keine anderen Operatoren und Funktionen enthalten.In Sort, the formula can only be the name of a single column and can't include other operators or functions.

AggregatfunktionenAggregate functions

Sum , Average , Min und Max können delegiert werden.Sum, Average, Min, and Max can be delegated. Diese Delegierung wird derzeit nur von einer begrenzten Anzahl von Datenquellen unterstützt. Weitere Informationen finden Sie in der Delegierungsliste.Only a limited number of data sources support this delegation at this time; check the delegation list for details.

Zählfunktionen wie CountRows , CountA und Count können nicht delegiert werden.Counting functions such as CountRows, CountA, and Count can't be delegated.

Andere Aggregatfunktionen wie StdevP und VarP können nicht delegiert werden.Other aggregate functions such as StdevP and VarP can't be delegated.

Tabellen Strukturierungs FunktionenTable shaping functions

AddColumns , dropcolumns , renamecolumns und showcolumns unterstützen die Delegierung teilweise.AddColumns, DropColumns, RenameColumns, and ShowColumns partially support delegation. Formeln in ihren Argumenten können delegiert werden.Formulas in their arguments can be delegated. Die Ausgabe dieser Funktionen unterliegt jedoch dem Grenzwert für nicht Delegierungs Datensätze.However, the output of these functions are subject to the non-delegation record limit.

Wie in diesem Beispiel verwenden die Hersteller häufig AddColumns und Lookup , um Informationen aus einer Tabelle in eine andere zusammenzuführen, die häufig als Join in der Datenbanksprache bezeichnet wird:As in this example, makers often use AddColumns and LookUp to merge information from one table into another, commonly referred to as a Join in database parlance:

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

Obwohl Produkte und Lieferanten möglicherweise delegier Bare Datenquellen sind und Lookup eine delegier Bare Funktion ist, kann die Ausgabe der AddColumns -Funktion nicht delegiert werden.Even though Products and Suppliers may be delegable data sources and LookUp is a delegable function, the output of the AddColumns function isn't delegable. Das Ergebnis der gesamten Formel ist auf den ersten Teil der Datenquelle Products beschränkt.The result of the entire formula is limited to the first portion of the Products data source. Da die LookUp-Funktion und die dazugehörige Datenquelle delegierbar sind, kann eine Übereinstimmung für Suppliers auch dann überall in der Datenquelle gefunden werden, wenn diese groß ist.Because the LookUp function and its data source are delegable, a match for Suppliers can be found anywhere in the data source, even if it's large.

Wenn Sie AddColumns auf diese Weise verwenden, muss die Suche separate Aufrufe an die Datenquelle für jeden dieser ersten Datensätze in Produktendurchführen, was zu einem großen netzwerkchatter führen kann.If you use AddColumns in this manner, LookUp must make separate calls to the data source for each of those first records in Products, which causes a lot of network chatter. Wenn die Lieferanten klein genug sind und sich nicht häufig ändern, können Sie die Collect -Funktion in OnStart aufrufen, um die Datenquelle in der APP beim Start zwischenzuspeichern.If Suppliers is small enough and doesn't change often, you could call the Collect function in OnStart to cache the data source in your app when it starts. Als Alternative können Sie Ihre APP so strukturieren, dass Sie die zugehörigen Datensätze nur dann abrufen, wenn Sie vom Benutzer angefordert werden.As an alternative, you could restructure your app so that you pull in the related records only when the user asks for them.

Nicht delegierbare FunktionenNon-delegable functions

Für alle anderen Funktionen einschließlich der Folgenden wird die Delegierung nicht unterstützt:All other functions don't support delegation, including these notable functions:

Grenzwerte für Fälle, in denen keine Delegierung möglich istNon-delegable limits

Formeln, die nicht delegiert werden können, werden lokal verarbeitet.Formulas that can't be delegated will be processed locally. Dadurch kann die volle Bandbreite der Formelsprache von powerapps verwendet werden.This allows for the full breadth of the Power Apps formula language to be used. Dies hat aber einen Preis: Alle Daten müssen zuerst auf das Gerät übertragen werden, sodass unter Umständen eine größere Datenmenge über das Netzwerk abgerufen werden muss.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. Dies kann eine Weile dauern, sodass der Eindruck entsteht, dass Ihre App langsam ist oder hängt.That can take time, giving the impression that your app is slow or possibly crashed.

Um dies zu vermeiden, erzwingt Power apps einen Grenzwert für die Datenmenge, die lokal verarbeitet werden kann: standardmäßig 500 Datensätze.To avoid this, Power Apps imposes a limit on the amount of data that can be processed locally: 500 records by default. Wir haben diesen Wert gewählt, damit Sie über vollständigen Zugriff auf kleine Datasets verfügen und die Nutzung Ihrer großen Datasets optimieren können, indem Teilergebnisse angezeigt werden.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.

Bei der Nutzung dieser Option sollten Sie aber mit Bedacht vorgehen, da sie für Benutzer verwirrend sein kann.Obviously care must be taken when using this facility because it can confuse users. Angenommen, Sie verwenden die Funktion Filter mit einer Auswahlformel, die nicht delegiert werden kann, für eine Datenquelle mit einer Millionen Datensätzen.For example, consider a Filter function with a selection formula that can't be delegated, over a data source that contains a million records. Da der Filtervorgang auf lokaler Ebene durchgeführt wird, werden nur die ersten 500 Datensätze überprüft.Because the filtering is done locally, only the first 500 records are scanned. Wenn der gewünschte Datensatz der 501. oder 500.001. Datensatz ist, wird er nicht berücksichtigt und nicht von der Funktion Filter zurückgegeben.If the desired record is record 501 or 500,001, it isn't considered or returned by Filter.

Aggregatfunktion können auch zu Verwirrung führen.Aggregate functions can also cause confusion. Angenommen, Sie verwenden Average für eine Spalte der Datenquelle mit einer Million Datensätzen.Take Average over a column of that same million-record data source. Da Average noch nicht delegiert werden kann, kann nur für die ersten 500 Datensätze der Mittelwert gebildet werden.Average can't yet be delegated, so only the first 500 records are averaged. Wenn Sie hierbei nicht mit Bedacht vorgehen, könnte eine Teilantwort von einem Benutzer Ihrer App als vollständige Antwort verstanden werden.If you're not careful, a partial answer could be misconstrued as a complete answer by a user of your app.

Ändern des GrenzwertsChanging the limit

Die Standardzahl für Datensätze lautet 500. Sie können diese Zahl aber für die gesamte App ändern:500 is the default number of records, but you can change this number for an entire app:

  1. Klicken Sie auf der Registerkarte Datei auf App-Einstellungen.On the File tab, select App settings.
  2. Ändern Sie unter Erweiterte Einstellungendas Limit für Daten Zeilen für nicht delegier Bare Abfragen zwischen 1 und 2000.Under Advanced settings, change the Data row limit for non-delegable queries setting from 1 to 2000.

In einigen Fällen ist Ihnen möglicherweise bekannt, dass für die Anforderungen Ihres Szenarios ein Grenzwert von 2.000 (oder auch 1.000 oder 1.500) erforderlich ist.In some cases, you'll know that 2,000 (or 1,000 or 1,500) will satisfy the needs of your scenario. Diese Zahl können Sie vorsichtig erhöhen und Ihrem Szenario anpassen.With care, you can increase this number to fit your scenario. Wenn Sie diese Zahl erhöhen, kann das die Leistung Ihrer App negativ beeinflussen, insbesondere bei Tabellen mit vielen Spalten.As you increase this number, your app's performance may degrade, especially for wide tables with lots of columns. Die beste Lösung dafür ist, wenn Sie so viel wie möglich delegieren.Still, the best answer is to delegate as much as you can.

Wenn Sie sicherstellen möchten, dass Ihre Apps auf große Datasets skaliert werden kann, müssen Sie für diese Einstellung den Wert auf 1 reduzieren.To ensure that your app can scale to large data sets, reduce this setting down to 1. Für nicht delegierbare Elemente wird dann genau ein Datensatz zurückgegeben, der beim Testen der App leicht auffindbar sein sollte.Anything that can't be delegated returns a single record, which should be easy to detect when testing your app. Dadurch können unerwartete Ergebnisse vermieden werden, wenn eine Proof of Concept-App in eine Produktionsumgebung überführt werden soll.This can help avoid surprises when trying to take a proof-of-concept app to production.

DelegierungswarnungenDelegation warnings

Damit Sie leichter erkennen können, was nicht delegiert wird, bietet Power apps eine Warnung (gelbes Dreieck), wenn Sie eine Formel erstellen, die etwas enthält, das nicht delegiert werden kann.To make it easier to know what is and isn't being delegated, Power Apps provides warning (yellow triangle) when you create a formula that contains something that can't be delegated.

Delegierungswarnungen werden nur für Formeln angezeigt, die für delegierbare Datenquellen verwendet werden.Delegation warnings appear only on formulas that operate on delegable data sources. Wenn keine Warnung angezeigt wird und Sie der Meinung sind, dass Ihre Formal nicht richtig delegiert wird, können Sie den Typ der Datenquelle anhand der obigen Liste mit den delegierbaren Datenquellen überprüfen.If you don't see a warning and you believe your formula isn't being properly delegated, check the type of data source against the list of delegable data sources earlier in this topic.

BeispieleExamples

Für dieses Beispiel generieren Sie automatisch eine App mit drei Anzeigen, die auf einer SQL Server-Tabelle mit dem Namen [dbo].[Fruit] basieren.For this example, you'll automatically generate a three-screen app based on a SQL Server table named [dbo].[Fruit]. Weitere Informationen zum Generieren der App finden Sie im Thema über Common Data Service auf SQL Server.For information about how to generate the app, you can apply similar principles in the topic about Common Data Service to SQL Server.

App mit drei Bildschirmen

Die Katalogeigenschaft Items ist auf eine Formel festgelegt, die die Funktionen SortByColumns und Search enthält. Beide Funktionen können delegiert werden.The gallery's Items property is set to a formula that contains SortByColumns and Search functions, both of which can be delegated.

Geben Sie in das Suchfeld Apple ein.In the search box, type "Apple".

Dann werden im oberen Bereich des Bildschirms vorübergehend Punkte angezeigt, während die App mit SQL Server kommuniziert, um die Suchanforderung zu verarbeiten.Marching dots appear momentarily near the top of the screen as the app communicates with SQL Server to process the search request. Es werden alle Datensätze angezeigt, die den Suchkriterien entsprechen, auch wenn die Datenquelle Millionen von Datensätzen enthält.All records that meet the search criteria appear, even if the data source contains millions of records.

Suchtext-Eingabesteuerelement

Die Suchergebnisse umfassen die Begriffe Apples, Crab apples und Pineapple, weil die Funktion Search eine Textspalte vollständig durchsucht.The search results include "Apples", "Crab apples", and "Pineapple" because the Search function looks everywhere in a text column. Wenn Sie nur Datensätze suchen wollten, die den Suchbegriff am Anfang des Obstnamens umfassen, können Sie die delegierbare Funktion Filter mit einem komplizierteren Suchbegriff verwenden.If you wanted to find only records that contain the search team at the start of the fruit's name, you can use another delegable function, Filter, with a more complicated search term. (Entfernen Sie der Einfachheit halber den Aufruf SortByColumns.)(For simplicity, remove the SortByColumns call.)

SortByColumns-Aufruf entfernen

Die neuen Ergebnisse umfassen dann den Begriff Apples, aber nicht die Begriffe Crab apples oder Pineapple.The new results include "Apples" but not "Crab apples" or "Pineapple". Dann wird allerdings neben dem Katalog (und in der Miniaturansicht des Bildschirms auf der Navigationsleiste im linken Bereich, die Miniaturansichten anzeigt) ein gelbes Dreieck und unter einem Teil der Formel eine blaue Wellenlinie angezeigt.However, a yellow triangle appears next to the gallery (and in the screen thumbnail if the left navigation bar shows thumbnails), and a blue, wavy line appears under a portion of the formula. Diese Elemente stellen alle jeweils eine Warnung dar.Each of these elements indicate a warning. Wenn Sie auf das gelbe Dreieck neben dem Katalog zeigen, wird die folgende Meldung angezeigt:If you hover over the yellow triangle next to the gallery, this message appears:

Auf Delegierungswarnung zeigen

SQL Server ist eine delegierbare Datenquelle und Filter eine delegierbare Funktion. Allerdings können Mid und Len nicht an jede beliebige Datenquelle delegiert werden.SQL Server is a delegable data source, and Filter is a delegable function, However, Mid and Len can't be delegated to any data source.

Aber es hat funktioniert, oder?But it worked, didn't it? Na ja, fast.Well, kind of. Das ist der Grund dafür, dass es sich um eine Warnung und nicht um eine rote Wellenlinie handelt.And that is why this is a warning and not a red, wavy squiggle.

  • Wenn die Tabelle weniger als 500 Datensätze enthält, hat die Formel einwandfrei funktioniert.If the table contains fewer than 500 records, the formula worked perfectly. Alle Datensätze wurden auf das Gerät übertragen, und die Funktion Filter wurde lokal angewendet.All records were brought to the device, and Filter was applied locally.
  • Wenn die Tabelle mehr als 500 Datensätze enthält, gibt die Formel den 501. Datensatz sowie alle weiteren Datensätze nicht mehr zurück, auch wenn die Kriterien erfüllt sind.If the table contains more than 500 records, the formula won't return record 501 or higher, even if it matches the criteria.