Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Grundlegendes zur Delegierung
Power Apps funktioniert am besten mit einer Back-End-Datenquelle, wenn eine Power Fx Abfrage vollständig in eine entsprechende Abfrage übersetzt wird, die auf der Datenquelle ausgeführt wird. Power Apps sendet eine Abfrage, die die Datenquelle versteht, die Datenquelle führt die Abfrage aus und Power Apps ruft die Ergebnisse ab. Die Datenquelle filtert beispielsweise die Daten und gibt nur die Zeilen zurück, die den Filterkriterien entsprechen. Wenn dies funktioniert, wird die Abfrage an die Datenquelle delegiert .
Power Fx Abfragen können nicht immer in äquivalente Abfragen für jede Datenquelle übersetzt werden. Zum Beispiel unterstützt Dataverse mehr Abfragefunktionen als Excel. Dataverse unterstützt den Abfrageoperator in (Mitgliedschaft), Excel jedoch nicht. Eine Abfrage kann nicht delegiert werden, wenn sie eine Funktion verwendet, die von der Datenquelle nicht unterstützt wird. Wenn ein Teil eines Abfrageausdrucks nicht delegiert werden kann, wird Power Apps kein Teil der Abfrage delegieren.
Wenn eine Abfrage nicht delegiert werden kann, ruft Power Apps die ersten 500 Datensätze aus der Datenquelle ab und führt anschließend die Aktionen in der Abfrage aus. Sie können diesen Grenzwert auf 2.000 Datensätze erhöhen. Wenn Sie den GrenzwertPower Apps ändern, wird die Ergebnisgröße auf 500 Datensätze begrenzt, damit die Leistung Ihrer App erhalten bleibt. Größere Ergebnissets können zu Leistungsproblemen für Ihre Power Apps führen.
Diese Einschränkung kann jedoch ein Problem darstellen, da die Abfrage möglicherweise falsche Ergebnisse zurückgibt, wenn die Datenquelle mehr als 500 oder 2.000 Datensätze enthält. Wenn Ihre Datenquelle z. B. 10 Millionen Datensätze enthält und Ihre Abfrage den letzten Teil der Daten bearbeiten muss, z. B. Familiennamen, die mit Z beginnen, und Ihre Abfrage einen nicht delegierbaren Operator wie distinct verwendet, erhalten Sie nur die ersten 500 oder 2.000 Datensätze. Das bedeutet, dass Sie falsche Ergebnisse erhalten.
Erstellen Sie Ihre Power Fx-Abfragen mithilfe der delegierbaren Tabellen für Ihre Datenquelle. Verwenden Sie nur Abfragefunktionen, die delegiert werden können. Nur so können Sie die Leistung Ihrer App aufrechterhalten und sicherstellen, dass Benutzer auf alle benötigten Informationen zugreifen können.
Beachten Sie die Warnungen vor Delegierungen, die Orte zeigen, an denen eine Delegierung nicht möglich ist. 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.
Anmerkung
Mithilfe von Delegierungswarnungen können Sie Ihre App so verwalten, dass die Ergebnisse korrekt zurückgegeben werden. Wenn die Daten in Ihrer Datenquelle 500 Datensätze überschreiten und eine Funktion nicht delegiert werden kann, markiert Power Fx die Formel mit einer blauen Unterstreichung.
Delegierbare Datenquellen
Die Delegierung arbeitet nur mit bestimmten tabellarischen Datenquellen. Wenn eine Datenquelle die Delegierung unterstützt, skizziert deren Connector-Dokumentation diese Unterstützung. Diese tabellarischen Datenquellen sind beispielsweise am beliebtesten und unterstützen so die Delegierung:
- Power Apps Delegations-Funktionen une Vorgang für Microsoft Dataverse
- Power Apps Delegations-Funktionen und Vorgang für SharePoint
- Power Apps Delegations-Funktionen und Vorgang für SQL-Server
- Power Apps Delegations-Funktionen und Vorgang für Salesforce
Für importierte Excel-Arbeitsmappen (mit der Datenquelle Der App statische Daten hinzufügen), Sammlungen und Tabellen, die in Kontextvariablen gespeichert sind, ist keine Delegierung erforderlich. All diese Daten befinden sich bereits im Arbeitsspeicher, und Sie können die gesamte Power Apps-Sprache verwenden.
Delegierbare Funktionen
Verwenden Sie nur Formeln, die delegiert werden können. Dieser Artikel listet Formelelemente auf, die delegiert werden können. Jede Datenquelle ist anders, und nicht alle unterstützen alle Elemente. Überprüfen Sie Ihre Formel auf Delegierungswarnungen.
Filterfunktionen
Die Funktionen Filter, Suche, First und LookUp können delegiert werden.
In den Funktionen Filter und LookUp können Sie für Spalten der Tabelle Folgendes verwenden, um dann die entsprechenden Datensätze auszuwählen:
- And (einschließlich &&), Or (einschließlich ||), Not (einschießlich !)
-
In> [!HINWEIS]
In is only delegated for columns on the base data source. Wenn beispielsweise die Datenquelle die Konten-Tabelle ist, dann delegiert
Filter(Accounts, Name in ["name1", "name2"])
zur Bewertung an die Datenquelle. AberFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
delegiert jedoch nicht, da sich die Spalte Vollständiger Name in einer anderen Tabelle (PrimaryContact) als Konten befindet. Der Ausdruck wird lokal ausgewertet. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- Konstante Werte, die in allen Datensätzen gleich sind, z.B. Steuerelementeigenschaften sowie globale und Kontextvariablen.
Sie können auch Teile Ihrer Formel verwenden, die zu einem konstanten Wert für alle Datensätze ausgewertet werden. Beispielsweise ist Left( Language(), 2 ), Date( 2019, 3, 31 ) und Today() nicht von Spalten des Datensatzes abhängig und gibt daher für alle Datensätze den gleichen Wert zurück. Diese Werte können als Konstante an die Datenquelle gesendet werden und blockieren die Delegierung nicht.
In der obigen Liste werden die folgenden wichtigen Elemente nicht aufgeführt.
- If
- *, /, Mod
- Spaltenumwandlungsvorgänge Text, Wert
- Concatenate (einschließlich &)
- ExactIn
- Funktionen für die Zeichenfolgenbearbeitung: Lower, Upper, Left, Mid, Len, ...
- Signale: Location, Acceleration, Compass, ...
- Volatile: Rand, ...
- Sammlungen
Delegierung und Sammlungen
Wenn Sie With
, UpdateContext
oder Set
verwenden, erstellen sie intern Sammlungen. Sammlungen sind eine statische speicherinterne Liste von Datensätzen und nehmen nicht an der Delegierung teil. Es wird keine Delegierungswarnung angezeigt.
Abfrageeinschränkungen
Nachschlage- und Erweiterungsebenen
Power Apps ermöglicht die Verwendung von bis zu zwei Nachschlageebenen. Dies bedeutet, dass ein Power Fx-Abfrageausdruck maximal zwei Suchfunktionen enthalten kann, um die Leistung aufrechtzuerhalten. Wenn ein Abfrageausdruck eine Suche enthält, ruft Power Apps zuerst die Basistabelle ab und führt dann eine zweite Abfrage durch, um die erste Tabelle mit den Suchinformationen zu erweitern. Eine darüber hinausgehende Ebene wird maximal unterstützt. Für Offlineszenarien wird jedoch nur eine Ebene der Sucherweiterung unterstützt.
Erweitern oder verknüpfen Sie bis zu 20 Entitäten in einer einzigen Abfrage. Wenn Sie mehr als 20 Tabellen in einer Abfrage verknüpfen müssen, versuchen Sie, wenn möglich, eine Ansicht auf dem Datenserver zu erstellen.
Ausdrucksauswertung - Eigenschaft der Entität muss auf der linken Seite „links“ eines Gleichheitsoperators sein
Setzen Sie die Eigenschaft einer zu vergleichenden Entität auf die linke Seite (LHS) einer Gleichung. Zum Beispiel im folgenden Ausdruck steht die Entitätseigenschaft Unternehmenseinheits-ID.Name auf der linken Seite und der Ausdruck funktioniert:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Aber dieser Ausdruck funktioniert nicht:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Sortierfunktionen
Sort und SortByColumns können delegiert werden.
Bei Sortieren kann die Formel nur der Name einer einzelnen Spalte sein und keine anderen Operatoren und Funktionen enthalten.
Aggregatfunktionen
Einige Aggregatfunktionen können basierend auf der Back-End-Unterstützung delegiert werden. Funktionen wie Sum, Average, Min und Max können delegiert werden. Zählfunktionen wie CountRows und Zählungkönnen ebenfalls delegiert werden. Für Removelf und Updatelf gelten jedoch Delegierungseinschränkungen. Nur eine begrenzte Anzahl von Datenquellen unterstützt die Delegierung für diese Funktionen. Weitere Informationen finden Sie unter Delegierungsliste.
Nicht delegierbare Funktionen
Für alle anderen Funktionen einschließlich der Folgenden wird die Delegierung nicht unterstützt:
Nicht delegierbare Grenzwerte
Formeln, die nicht delegiert werden können, werden lokal verarbeitet. Durch die lokale Verarbeitung können Sie die vollständige Power Apps Formelsprache verwenden. 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. Dieser Vorgang kann einige Zeit in Anspruch nehmen und dazu führen, dass Ihre App langsam oder nicht mehr reaktionsfähig erscheint.
Um dies zu vermeiden, gilt für Power Apps ein Standardgrenzwert von 500 Datensätzen für die Datenmenge, die lokal verarbeitet werden kann. Mit diesem Grenzwert können Sie kleine Datensätze vollständig verwenden und die Verwendung großer Datensätze durch das Anzeigen von Teilergebnissen verfeinern.
Seien Sie vorsichtig, wenn Sie diese Funktion verwenden, da sie Benutzer verwirren kann. Angenommen, Sie verwenden die Funktion Filter mit einer Auswahlformel, die nicht delegiert werden kann, für eine Datenquelle mit einer Millionen Datensätzen, werden nur die ersten 500 Datensätze gescannt. 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.
Aggregatfunktion können auch zu Verwirrung führen. Wenn Sie z. B. Durchschnitt für eine Spalte in derselben Datenquelle mit einer Million Datensätzen verwenden, kann Durchschnitt nicht delegiert werden, da der Ausdruck nicht delegiert ist (siehe vorherigen Hinweis). Es werden nur die ersten 500 Datensätze gemittelt. Wenn Sie nicht aufpassen, könnte ein Benutzer denken, dass eine Teilantwort vollständig ist.
Ändern des Grenzwerts
500 ist die Standardanzahl der Datensätze, aber Sie können diese Anzahl für eine ganze App ändern:
- Wählen Sie Einstellungen.
- Ändern Sie unter Allgemein die Einstellung Datenzeilenlimit von 1 auf 2000.
In einigen Fällen reichen 2.000 (oder 1.000 oder 1.500) Datensätze für Ihr Szenario aus. Wenn Sie diese Zahl erhöhen, damit Sie Ihren Anforderungen entspricht, kann das die Leistung Ihrer App negativ beeinflussen, insbesondere bei Tabellen mit vielen Spalten. Es ist immer noch am besten, so viel wie möglich zu delegieren.
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. Für nicht delegierbare Elemente wird dann genau ein Datensatz zurückgegeben, der beim Testen der App leicht auffindbar sein sollte. Dadurch können unerwartete Ergebnisse vermieden werden, wenn eine Proof of Concept-App in eine Produktionsumgebung überführt werden soll.
Delegierungswarnungen
Power Apps zeigt eine Warnung (gelbes Dreieck) an, wenn Sie eine Formel erstellen, die nicht delegiert werden kann. So lässt sich leichter erkennen, was delegiert wird und was nicht.
Delegierungswarnungen werden nur für Formeln angezeigt, die für delegierbare Datenquellen verwendet werden. 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.
Beispiele
Für dieses Beispiel generieren Sie automatisch eine App mit drei Anzeigen, die auf einer SQL Server-Tabelle mit dem Namen [dbo].[Fruit] basieren. Informationen zum Generieren der App finden Sie in dem Artikel zu Dataverse. Die darin aufgeführten Prinzipien können auch auf SQL Server angewendet werden.
Die Katalogeigenschaft Element ist auf eine Formel festgelegt, die die Funktionen SortByColumns und Search enthält. Beide Funktionen können delegiert werden.
Geben Sie in das Suchfeld Apple ein.
Dann werden im oberen Bereich des Bildschirms vorübergehend Punkte angezeigt, während die App mit SQL Server kommuniziert, um die Suchanforderung zu verarbeiten. Es werden alle Datensätze angezeigt, die den Suchkriterien entsprechen, auch wenn die Datenquelle Millionen von Datensätzen enthält.
Die Suchergebnisse umfassen die Begriffe „Apples“ und „Pineapple“, weil die Funktion Search eine Textspalte vollständig durchsucht. Wenn Sie nur Datensätze finden wollen, die den Suchbegriff am Anfang des Fruchtnamens enthalten, können Sie eine andere delegierbare Funktion, Filter, mit einem komplizierteren Suchbegriff verwenden. Entfernen Sie der Einfachheit halber den Aufruf SortByColumns.
Die neuen Ergebnisse umfassen dann den Begriff „Apples“, aber nicht die Begriffe „Pineapple“. Ein gelbes Dreieck wird neben dem Katalog und in der Miniaturansicht des Bildschirms angezeigt, wenn in der linken Navigationsleiste Miniaturansichten angezeigt werden. Unter einem Teil der Formel wird eine blaue, wellenförmige Linie angezeigt. Diese Elemente stellen alle jeweils eine Warnung dar. Wenn Sie auf das gelbe Dreieck neben dem Katalog zeigen, wird die folgende Meldung angezeigt:
SQL Server ist eine delegierbare Datenquelle, und Filter ist eine delegierbare Funktion. Die Delegierung von Mid und Len an eine Datenquelle ist aber nicht möglich.
Aber es funktioniert, oder? Na ja, fast. Das ist der Grund dafür, dass es sich um eine Warnung und nicht um eine rote Wellenlinie handelt.
- Wenn die Tabelle weniger als 500 Datensätze enthält, hat die Formel einwandfrei funktioniert. Alle Datensätze wurden auf das Gerät übertragen, und die Funktion Filter wurde lokal angewendet.
- 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.