Delegation in Power Apps: waarom je maar 500 rijen ziet

Delegation in Power Apps is de verklaring achter een van de vreemdste bugs die je kunt tegenkomen: je app werkt perfect in de test, maar zodra de data groeit “verdwijnen” er rijen. Het echte verhaal: je formule kan niet worden gedelegeerd aan de databron, dus de app haalt maar de eerste 500 rijen op en rekent daarmee verder. In dit artikel leggen we met één voorbeeld uit hoe dat werkt, hoe je het herkent en hoe je het structureel oplost.
Wat is delegation in Power Apps?
Delegeren betekent werk uitbesteden. Een canvas app haalt zijn gegevens uit een databron, zoals een Dataverse-tabel, een SharePoint-lijst of een SQL-database. Bij een delegeerbare formule stuurt de app het werk naar die databron: “geef mij alle klanten uit Zwolle” gaat als vraag naar de bron, en alleen het antwoord komt terug. Snel en compleet, hoeveel rijen er ook zijn.
Kan de databron de bewerking niet uitvoeren, dan draait het om: de app haalt zelf rijen op en rekent lokaal. En daar zit de val. De app haalt standaard alleen de eerste 500 rijen op, in te stellen tot maximaal 2000. Alles daarbuiten bestaat simpelweg niet voor je formule. Geen foutmelding, geen lege app, gewoon stilletjes onvolledige resultaten.
Een beeld dat helpt: de databron is een bibliothecaris met een enorm magazijn. Bij delegation vraag je de bibliothecaris om alle boeken over Zwolle, en je krijgt precies die boeken mee. Zonder delegation neem je zelf de eerste 500 boeken van de plank mee naar huis en zoek je daarin. Staat het boek dat je zoekt op plek 800, dan vind je het nooit.

Het voorbeeld: een klantenlijst met 1.200 rijen
Neem een SharePoint-lijst Klanten met 1.200 klanten. Drie daarvan zitten in Zwolle, op rij 300, 800 en 1.100. In een zoekscherm staat een galerij met deze formule in Items:
Filter(Klanten, "Zwol" in Plaats)De operator in zoekt midden in een tekst. SharePoint kan dat niet zelf, dus de app haalt de eerste 500 rijen op en zoekt daarin. Resultaat: één klant, die op rij 300. De andere twee ziet niemand. Schrijf je het zo, dan kan SharePoint het wel zelf:
Filter(Klanten, StartsWith(Plaats, "Zwol"))Nu doet SharePoint het zoekwerk over alle 1.200 rijen en krijg je alle drie de klanten. Het verschil: StartsWith is voor SharePoint delegeerbaar, in niet. De gebruiker moet dan wel het begin van de plaatsnaam typen.
Zo herken je het probleem
- De blauwe golflijn: Power Apps onderstreept niet-delegeerbare formuledelen met een blauwe golflijn en toont een geel waarschuwingsdriehoekje bij de control. Neem die serieus.
- Het werkt in de test, niet in productie: testdata blijft onder de 500 rijen, productiedata niet.
- Zoeken vindt oude records niet: de gezochte rij valt buiten de eerste 500.
- Totalen kloppen niet: een
SumofCountRowsover een niet-delegeerbare set telt alleen de opgehaalde rijen.
Test het met een limiet van 1
Microsoft raadt een handige truc aan om delegation-problemen vroeg te vinden:
- Open je app in Power Apps Studio en kies Settings.
- Zet onder General de Data row limit op 1.
- Speel je app af en loop de schermen langs.
Elke formule die niet delegeert, geeft nu hooguit één rij terug. Dat valt meteen op. Zet de limiet na het testen terug op 500.
Wat is wel en niet delegeerbaar?
Het hangt af van de combinatie databron, functie, operator en kolomtype. Deze tabel geeft de hoofdlijnen voor de twee bronnen die we het vaakst zien, volgens de actuele lijsten op Microsoft Learn:
| Onderdeel | Dataverse | SharePoint |
|---|---|---|
Filter en LookUp met = | Ja | Ja |
<, >, <=, >= op getallen en datums | Ja | Ja |
<> op tekst | Ja | Nee |
StartsWith op tekst | Ja | Ja |
Search of in (zoeken midden in tekst) | Ja | Nee |
in met een lijst waarden, zoals Status in ["Open", "Nieuw"] | Ja | Nee |
IsBlank | Ja, behalve bij keuzekolommen | Nee, gebruik Kolom = Blank() |
Not | Ja | Nee |
Sum, Min, Max, Average | Ja, tot 50.000 rijen | Nee |
Sort en SortByColumns op gewone kolommen | Ja | Ja |
Rekenen met een kolom in de voorwaarde, zoals Budget * 2 > 1000 | Nee | Nee |
Nooit delegeerbaar, bij geen enkele bron: FirstN, Last, LastN, GroupBy, Concat, Choices, Collect en ClearCollect. De volledige matrix per bron staat in het delegation-overzicht op Microsoft Learn, met doorverwijzingen naar Dataverse en SharePoint. SharePoint is dus aanzienlijk beperkter dan Dataverse of SQL.
Vier structurele oplossingen
- Herschrijf de formule delegeerbaar: vaak kan dezelfde logica met andere operatoren, zoals
StartsWithin plaats vaninin het voorbeeld hierboven. Zet de kolom links en de waarde rechts, en reken niet met de kolom zelf. Schrijf dusBudget > 500in plaats vanBudget * 2 > 1000. - Verplaats logica naar de bron: een view in Dataverse, een berekende kolom of een flow die een hulpwaarde vult, maakt een niet-delegeerbare formule overbodig.
- Kies de juiste databron: groeit een SharePoint-lijst structureel boven de duizenden rijen, dan is dat het moment om naar Dataverse te kijken; lees ook ons artikel over Dataverse vs SQL.
- Documenteer bewuste uitzonderingen: blijft een lijst gegarandeerd klein (zoals een keuzelijst met 30 rijen), dan mag je de waarschuwing accepteren. Leg dat vast, zodat niemand er later over struikelt.
Workaround: eerst grof, dan fijn
Lukt geen van de vier oplossingen, dan gebruiken veel makers een tussenoplossing: laat de databron eerst delegeerbaar voorselecteren, bijvoorbeeld op status of datum, en doe de fijne bewerking daarna in de app. Stel dat je in de klantenlijst midden in de naam wilt zoeken, maar alleen onder de actieve klanten in Zwolle:
Filter(
Filter(Klanten, Status = "Actief", StartsWith(Plaats, "Zwol")),
txtZoek.Text in Naam
)
Het idee: het binnenste Filter gaat naar SharePoint en levert bijvoorbeeld 40 klanten op, en het buitenste Filter zoekt daarna lokaal in die 40.
Een eerlijke kanttekening. Microsoft documenteert dit geneste patroon niet. De documentatie over delegation zegt juist dat Power Apps niets van een query delegeert zodra één deel ervan niet delegeerbaar is. Power Apps blijft bij deze formule dan ook een waarschuwing tonen. Gebruik het daarom alleen als de voorselectie gegarandeerd klein blijft: het buitenste filter werkt lokaal en ziet hooguit de eerste 500 rijen van de voorselectie (of maximaal 2000 met de Data row limit onder Settings). Controleer met Live monitor onder Advanced tools welke query Power Apps echt naar de databron stuurt. Zie je het filter op status en plaats in die query terug, dan wordt dat deel gedelegeerd. Zie je het niet, of kan de voorselectie groeien tot boven je rijlimiet, kies dan een van de vier structurele oplossingen.
Veelgemaakte misverstanden
- “Ik zet de limiet op 2000, dan is het opgelost.” Dat verschuift het probleem alleen. Rij 2001 verdwijnt nog steeds, en de app wordt trager.
- “Geen waarschuwing, dus geen probleem.” Werk je met een collectie, of met een tabel in
SetofWith, dan zie je geen waarschuwing. Die data staat al in het geheugen, maar kan bij het vullen al zijn afgekapt. - “Ik laad alles in OnStart met ClearCollect.”
ClearCollectdelegeert niet en haalt dus hooguit 500 of 2000 rijen op. - “CountRows op Dataverse is altijd exact.” Dataverse geeft bij
CountRowseen waarde uit de cache. Voor een exact aantal tot 50.000 rijen gebruik jeCountIf(Tabel, true). - “Wat in Dataverse werkt, werkt ook in SharePoint.” Nee, zie de tabel hierboven. Test een formule altijd tegen de bron waar hij in productie op draait.
Checklist
- Zie je nergens een blauwe golflijn bij een bron die kan groeien?
- Heb je getest met de Data row limit op 1?
- Staat de kolom links in je voorwaarde, zonder berekening erop?
- Zijn bewuste uitzonderingen vastgelegd?
Veelgestelde vragen
Kan ik de limiet van 500 rijen niet gewoon verhogen?
Je kunt hem in de app-instellingen onder General ophogen tot 2000, maar dat verschuift het probleem alleen. Rij 2001 verdwijnt nog steeds, en de app wordt trager omdat hij meer data lokaal verwerkt.
Geldt delegation in Power Apps ook voor model-driven apps?
Nee, dit is een canvas app-onderwerp. Model-driven apps bevragen Dataverse altijd server-side. Binnen custom pages (canvas-techniek) geldt het wel weer.
Waarom geeft Power Apps geen foutmelding?
Omdat het resultaat technisch geldig is: de eerste 500 rijen. De blauwe waarschuwing in de editor ís de foutmelding; in de draaiende app merkt de gebruiker niets. Daarom is het zo’n sluipend probleem.
Is delegation erg bij kleine lijsten?
Nee. Bij een lijst die aantoonbaar klein blijft is een niet-delegeerbare formule prima. Het wordt pas een bug wanneer data groeit; en data groeit bijna altijd.
Verder lezen
Meer formulewerk? Bekijk de Power Apps functies gids voor alle belangrijke functies met voorbeelden.
Heeft jouw app last van verdwijnende rijen? Neem contact met ons op, vaak is het in een dagdeel structureel opgelost.



