Delegatie is een zeer belangrijk concept om te begrijpen, vooral als u met grote sets gegevens in PowerApps werkt. Wanneer u bijvoorbeeld bewerkingen uitvoert, zoals filteren of zoeken naar specifieke records in PowerApps, wordt het werk door de delegatie naar de gegevensbron verplaatst. Wat dat echt betekent, is dat bewerkingen zoals zoeken, filteren en opzoeken bij de gegevensbron worden uitgevoerd in plaats van de geheel gegevensset naar het apparaat en vervolgens lokaal verwerken. In wezen is delegeren een veel krachtigere methode, omdat het gegevens sneller verwerkt en de prestaties van de app verbetert. Delegable bronnen zijn Dynamics 365 (CRM), Common Data Service voor Apps, SharePoint en SQL Server. In de blogpost van vandaag bespreken we algemene delegatiewaarschuwingen en hoe we deze kunnen vermijden.

delegatie waarschuwingen

Merk op dat in het algemeen delegatie niet van toepassing is op gegevenssets met minder dan 500-records, omdat deze zonder problemen op het apparaat kunnen worden verwerkt. Hoewel deze 'limiet' kan worden gewijzigd, kan dit de prestaties opofferen.

Redenen voor delegatiewaarschuwing

Als u een delegatiewaarschuwing krijgt tijdens het uitvoeren van bewerkingen in uw formules, betekent dit dat een of meer van de bewerkingen die worden uitgevoerd om een ​​van de volgende redenen niet naar de andere server kunnen worden verplaatst:

  • Mogelijk gebruikt u een functie die (nog) niet wordt ondersteund door de betreffende gegevensbron. Een gedetailleerde lijst met ondersteunde bewerkingen vindt u hier: https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/delegation-overview
  • Met betrekking tot de filterfunctie gebruikt u mogelijk geen constante waarden in een uitdrukking (zie Voorbeelden van scenario's die een delegatiewaarschuwing veroorzaken hieronder).
    • Dit betekent dat de uitdrukking een waarde bevat die VERSCHILLEND zal zijn, afhankelijk van de waarde van een bepaalde kolom in de gegevensset.
    • Wanneer een waarde in een filterexpressie afhankelijk is van een kolom in de gegevensset die wordt gefilterd, is de waarde niet bekend op het moment van ophalen en daarom kan de verwerking niet naar de gegevensbron worden verplaatst. (De gegevensbron kan de berekeningen niet uitvoeren - deze kan alleen het ingestelde aantal uitdrukkingen evalueren Bekijk hier de verhalen van onze tevreden klanten.)

Voorbeelden van scenario's die delegatiewaarschuwing veroorzaken

Voorbeeld #1 - Het volgende filter geeft een delegatiewaarschuwing:

Filter (Jobs, 'Voorlopige startdatum taak' <= Datum toevoegen(Vandaag (), 7, dagen))

Uitgifte: DateAdd is geen constante waarde. Het filter is afhankelijk van de waarde van deze expressie, maar de expressie kan niet worden overgedragen naar de gegevensbron (niet in de lijst met ondersteunde bewerkingen). Als gevolg hiervan kan de gehele filterbewerking niet worden overgedragen.

Oplossing: Evalueer de DateAdd-expressie afzonderlijk en sla de waarde op in een variabele (DateLimit) voor gebruik in de filterfunctie. DateLimit is een constante waarde op het moment van filteren. Het filter geeft niet langer een delegatiewaarschuwing.

set (DateLimit, DateAdd (Vandaag (), 7, Dagen));

Filter (Jobs, 'Voorlopige startdatum taak' <= DateLimit )

Voorbeeld #2 - Het volgende filter geeft een delegatiewaarschuwing:

Filter (Jobs, 'Project Manager' = Opzoeken(Gebruikers, domeinnaam = Gebruiker (). E-mail, systeemgebruiker))

Kwestie: LookUp is geen constante waarde Het filter is afhankelijk van de waarde van deze uitdrukking, maar de uitdrukking kan niet worden overgedragen naar de gegevensbron (niet in de lijst met ondersteunde bewerkingen). Als gevolg hiervan kan de gehele filterbewerking niet worden overgedragen.

Oplossing: Evalueer de LookUp-expressie afzonderlijk en sla de waarde op in een variabele (UserGuid) voor gebruik in de filterfunctie. UserGuid is een constante waarde op het moment van filteren. Het filter geeft niet langer een delegatiewaarschuwing.

set (UserGuid, LookUp (Gebruikers, domeinnaam = Gebruiker (). E-mail, systeemgebruiker));

Filter (Jobs, 'Project Manager' = UserGuid )

Delegatiewaarschuwingen vermijden

Zoals u in de bovenstaande voorbeelden kunt zien, elimineert het gebruik van alleen constante waarden in uw filteruitdrukkingen, het scheiden van andere onafhankelijke berekeningen en het opslaan van het resultaat in een variabele. Het is ook nuttig om alleen expressies te gebruiken die worden ondersteund, zoals beschreven in het gekoppelde artikel hierboven.

Gelukkig PowerApps'ing!

Avatar voor Joe D365

Joe D365

Joe D365 is een Microsoft Dynamics 365 superheld die op pure Dynamics adrenaline draait. Als het gezicht van PowerObjects, is de missie van Joe D365 om innovatieve manieren te onthullen om Dynamics 365 te gebruiken en de toepassing naar meer bedrijven en organisaties over de hele wereld te brengen.