Kaum eine Warnung wird in Power Apps so oft ignoriert wie die Delegation-Warnung – und kaum eine ist so tückisch. Sie bedeutet: Die Abfrage kann nicht vollständig an die Datenquelle delegiert werden, also lädt die App nur die ersten N Datensätze (Standard 500, maximal 2000) und wertet den Rest lokal aus. Das Ergebnis sieht in der Testumgebung mit 50 Datensätzen korrekt aus und liefert im Produktivbetrieb mit 3.000 Datensätzen stillschweigend falsche Zahlen.
Erst verstehen, was delegierbar ist
Delegierbarkeit hängt von Datenquelle UND Funktion ab. Bei Dataverse und SQL sind viele Operatoren delegierbar, bei SharePoint deutlich weniger. Typische Nicht-Delegierbare: verschachtelte Sortierungen, bestimmte String-Funktionen, komplexe Kombinationen aus Filter und Sort. Der erste Schritt ist immer: die Abfrage so umformen, dass sie innerhalb der delegierbaren Grenzen bleibt.
Kombinierte Sortierung als konkreter Fall
Ein wiederkehrendes Problem sind Listen, die nach mehreren Kriterien sortiert werden sollen (z. B. erst nach Status, dann nach Datum), während gleichzeitig gefiltert wird. Die naive SortByColumns-über-Filter-Kombination sprengt schnell die Delegation. Die belastbare Lösung ist, die Sortier-Logik in eine delegierbare Struktur zu bringen – etwa über eine berechnete, sortierbare Spalte auf der Datenquelle oder eine bewusst delegierbare Kombination aus Filter und einfacher Sortierung, statt mehrere nicht-delegierbare Operationen zu stapeln.
// Statt nicht-delegierbarer Verschachtelung ...
SortByColumns(Filter(Vertraege, Status = "Offen"), "Prioritaet", "Datum")
// ... die Abfrage auf delegierbare Operatoren und eine
// vorbereitete Sortierspalte reduzieren und clientseitig
// nur den bereits eingegrenzten Ergebnisraum feinsortieren.Wenn es wirklich nicht delegierbar ist
- Ergebnismenge vor der lokalen Verarbeitung mit einem delegierbaren Filter kleinhalten (unter das Limit).
- Collections gezielt und bewusst einsetzen – aber nur für Datenmengen, die garantiert unter der Grenze bleiben.
- Das Delegation-Limit projektweit auf 2000 setzen ist eine Krücke, keine Lösung – es verschiebt das Problem nur nach hinten.