Haben Sie sich jemals gefragt, warum Ihre Power Apps bei großen Datenmengen ins Stocken geraten? Oder sind Sie schon einmal auf dieses berüchtigte Datenzeilenlimit von 500 oder 2.000 gestoßen? Fast jeder Power Apps-Entwickler oder App-Maker kennt das Problem: Man erstellt eine wunderschöne, pixelgenaue App, aber sobald die Datenmenge wächst, geht die Leistung in den Keller. Hier kommt die Power Apps Delegation ins Spiel – ein Konzept, das für jeden, der mit Canvas Apps arbeitet, absolut entscheidend ist.
Delegation in Power Apps ermöglicht die Verarbeitung großer Datenmengen direkt an der Datenquelle, um die Übertragung zum Gerät zu minimieren und die App-Leistung zu verbessern.
Im Kern geht es bei der Power Apps Delegation darum, die Datenverarbeitung nicht in der App selbst, sondern direkt an der Datenquelle durchführen zu lassen. Stellen Sie sich das wie eine SQL-Abfrage vor – zum Beispiel `SELECT * FROM meineSchülerTabelle`. Wenn Power Apps diese Abfrage direkt an SharePoint, Dataverse oder SQL Server delegieren kann, muss es nicht erst alle Daten herunterladen, um sie dann in der App zu filtern oder zu sortieren.
Das minimiert die Datenmenge, die auf das Gerät des Benutzers übertragen werden muss, und sorgt für eine spürbar bessere App-Leistung. Es ist ein gängiges Missverständnis, dass Power Apps die Daten immer vollständig lädt. Bei korrekter Delegation passiert genau das Gegenteil, was enorm wichtig für die Verwaltung großer Datenmengen ist.
Für delegierbare Abfragen lädt Power Apps Daten bei Bedarf stapelweise (z.B. 100 Zeilen), um eine reibungslose Benutzererfahrung zu gewährleisten, selbst bei Tausenden von Datensätzen.
Wenn eine Abfrage delegierbar ist, lädt Power Apps nicht alle 5.000 oder mehr Datensätze auf einmal. Stattdessen werden die Daten in kleinen Stapeln, meist 100 Zeilen auf einmal, geladen. Das ist ein cleverer Mechanismus, um die App reaktionsschnell zu halten.
Wenn Sie durch eine Galerie scrollen und das Ende des aktuellen Stapels erreichen, holt sich die App automatisch den nächsten Stapel. Dies geschieht im Hintergrund und ist für den Nutzer kaum spürbar. So können Power Apps große Datenmengen mühelos verwalten.
Man kann das wunderbar im Monitor-Tool von Power Apps verfolgen. Beim Scrollen sehen Sie, wie `GetRows`-Anfragen im Netzwerk ausgelöst werden, um die nächsten 100 Datensätze abzurufen. Ein einfacher Zähler für `Galerie.AllItems.Count` zeigt Ihnen übrigens, dass anfangs nur die ersten 100 geladen sind, obwohl Ihre Liste viel größer ist.
Die wichtigsten delegierbaren Datenquellen sind Microsoft Dataverse, SQL Server und SharePoint, wobei jede spezifische delegierbare Funktionen und Operatoren unterstützt.
Nicht jede Datenquelle ist gleich delegationsfreundlich. Die Top drei, wenn es um die Anzahl der delegierbaren Funktionen geht, sind Microsoft Dataverse, gefolgt von SQL Server und dann SharePoint. Diese Datenquellen sind am besten dafür geeignet, die Last der Datenverarbeitung zu übernehmen.
Es gibt detaillierte Dokumentationen, welche Funktionen und Operatoren mit welcher Datenquelle delegierbar sind. Ein `Search`-Operator, der auf Dataverse delegierbar ist, kann bei SharePoint zu Problemen führen und ist dort nicht delegierbar.
Die Wahl der richtigen Datenquelle kann also einen riesigen Unterschied machen, wenn Sie mit Power Apps große Datenmengen effizient verarbeiten möchten.
Nicht-delegierbare Abfragen (z.B. ‚Search‘ auf SharePoint, ‚Not‘-Operator) werden lokal in der App verarbeitet und unterliegen einem Datenzeilenlimit (standardmäßig 500, maximal 2000), was zu unvollständigen Ergebnissen führen kann.
Wenn Power Apps eine Abfrage nicht an die Datenquelle delegieren kann, muss es die Arbeit selbst erledigen. Das bedeutet, es lädt einen Teil der Daten in den lokalen Speicher der App und verarbeitet sie dort.
Und hier liegt der Haken: Power Apps ist keine Datenbank. Es kann nicht unendlich viele Daten speichern. Deshalb gibt es das Power Apps Datenzeilenlimit. Standardmäßig sind das 500 Zeilen, maximal können Sie es in den App-Einstellungen auf 2.000 erhöhen. Mehr geht nicht.
Was passiert dann? Wenn Ihre Liste 5.000 Einträge hat, aber Ihre Abfrage nicht delegierbar ist, lädt Power Apps nur die ersten 500 (oder 2.000) Zeilen. Wenn Sie dann eine `Search`-Funktion auf SharePoint verwenden, um nach einem bestimmten Namen zu suchen, finden Sie diesen vielleicht nicht, selbst wenn er in Ihrer Liste existiert – er liegt nur nicht in den ersten 500 Zeilen!
Ein klassisches Beispiel ist die `Search`-Funktion bei SharePoint. Auch der `Not`-Operator kann nicht delegierbar sein. Wenn Sie also `Filter(MeineListe, Region <> „Süd“)` schreiben, kann das zu einer Delegationswarnung führen. Manchmal muss man kreativ werden. Statt `Region <> „Süd“` könnte man schreiben `Filter(MeineListe, Region = „Nord“ || Region = „Ost“ || Region = „West“)`, wenn man die möglichen Werte kennt. Diese Abfrage ist dann oft eine der Power Apps delegierbare Abfragen und liefert vollständige Ergebnisse.
Delegationswarnungen sind visuelle Hinweise (Zickzacklinie, Gefahrensymbol, App Checker), dass eine Abfrage nicht delegierbar ist und eine Anpassung der Formel oder Datenquelle erfordert, um genaue und vollständige Ergebnisse zu gewährleisten.
Power Apps lässt Sie mit nicht-delegierbaren Abfragen nicht im Dunkeln stehen. Sobald Sie eine solche Formel schreiben, sehen Sie eine Zickzacklinie unter dem nicht delegierbaren Teil. Oft erscheint auch ein kleines Gefahrensymbol auf dem Bildschirm, und der App Checker listet die Warnung ebenfalls auf.
Ganz wichtig: Eine Delegationswarnung ist kein Fehler. Sie können Ihre App trotzdem veröffentlichen, und sie wird funktionieren. Aber Ihre Endbenutzer sehen möglicherweise nur einen begrenzten Datensatz, was zu frustrierenden und falschen Ergebnissen führen kann. Es liegt in der Verantwortung des App Makers, diese Warnungen zu beheben.
Vorsicht ist geboten bei sogenannter „getarnter Delegation“. Einige Funktionen, wie zum Beispiel `With`, werfen keine Warnung, obwohl sie nicht delegierbar sind. Um das zu testen, kann man das Datenzeilenlimit temporär auf `1` setzen. Wenn dann nur ein einziger Datensatz angezeigt wird, obwohl viel mehr da sein sollten, ist die Abfrage nicht delegierbar.
Auch das Arbeiten mit Collections ist vom Datenzeilenlimit betroffen. Wenn Sie Daten mit `Collect` oder `ClearCollect` in eine Collection laden, werden standardmäßig ebenfalls nur die ersten 500 (oder 2.000) Zeilen geladen. Dies gilt auch für Variablen und benannte Formeln.
Die Konsequenz ist klar: Überprüfen Sie Ihre Formeln auf delegierbare Abfragen, passen Sie diese gegebenenfalls an oder wählen Sie Datenquellen, die mehr Flexibilität bei der Delegation bieten, um sicherzustellen, dass Ihre App mit Power Apps große Datenmengen korrekt und effizient verarbeitet.
Häufig gestellte Fragen
Warum ist Power Apps Delegation so wichtig?
Weil sie es ermöglicht, die Verarbeitung großer Datenmengen an die Datenquelle auszulagern, anstatt sie in der App lokal zu verarbeiten. Das verbessert die Leistung erheblich und verhindert, dass Ihre App nur mit einem begrenzten Datensatz arbeitet.
Was passiert, wenn eine Abfrage nicht delegierbar ist?
Power Apps versucht, die Abfrage lokal auf dem Gerät auszuführen. Dabei ist es jedoch durch das Power Apps Datenzeilenlimit (standardmäßig 500, maximal 2.000) begrenzt. Das bedeutet, dass die App nur die ersten X Datensätze Ihrer Datenquelle lädt und verarbeitet, was zu unvollständigen oder falschen Ergebnissen führen kann.
Wie erkenne ich eine nicht-delegierbare Abfrage und was sollte ich tun?
Sie erkennen sie an einer Zickzacklinie unter der Formel, einem Gefahrensymbol auf dem Bildschirm oder einer Meldung im App Checker. Um das Problem zu lösen, müssen Sie die Formel so anpassen, dass sie delegierbar wird (z.B. eine andere Funktion verwenden oder die Logik ändern), oder Sie verwenden eine andere Datenquelle, die die gewünschte Funktion delegieren kann.

