La délégation Power Apps

La délégation Power Apps est un mécanisme qui demande à la source de données de filtrer les données avant de les renvoyer vers PowerApps.

SharePoint, SQL Server et Microsoft Dataverse prennent en charge la délégation.

Grâce à ce mécanisme, les performances sont meilleures.

En l’absence de délégation, la source de données renvoie toutes les données et c’est PowerApps qui filtre sur le périphérique local.

Si vous rencontrez des erreurs dans les manipulations ci-dessous, lisez l’article qui explique comment débuguer les erreurs dans Power Apps.

Gardez à l’esprit que l’interface a pu évoluer fortement depuis que cet article a été rédigé.

Limite des 2000 lignes

Vous savez que Power Apps ne peut récupérer que 2000 éléments au maximum.

Vous pouvez modifier cette valeur dans le menu Fichier puis le lien Paramètres.

Toutefois, vous ne pouvez pas dépasser la valeur de 2000.

Concrètement, s’il y a 2100 enregistrements qui devraient être renvoyés par une fonction de filtre, vous recevrez les 2000 premiers enregistrements et 100 enregistrements ne seront pas renvoyé.

Ce qui peut fausser vos calculs ou affichages.

C’est vrai pour toutes les sources de données et toutes les licences.

Scénario sympa

Dans ce scénario, on suppose que la valeur maximum de la limite de lignes de données pour les requêtes non délégables est au maximum (2000).

Une application Power Apps utilise une formule avec deux filtres imbriqués. Le premier filtre est basé sur une fonction FILTER().

Le second filtre, qui récupère le résultat du premier filtre, ne garde que 10% des résultats du premier filtre.

Donc, si le premier filtre renvoie 300 éléments au maximum, le second va renvoyer 30 éléments (10 % du premier jeu).

Tout va bien. Pour l’instant.

Scénario moins sympa

Ici aussi, on suppose que la valeur maximum de la limite de lignes de données pour les requêtes non délégables est au maximum (2000).

Il y a aussi une formule avec deux filtres imbriqués qui fonctionne exactement comme dans le scénario sympa ci-dessus.

Lors de l’exécution de l’application, le premier filtre cherche à renvoyer 3000 éléments. Toutefois, Power Apps n’en recevra que 2000. Dans ces conditions, le second filtre renverra une table de 200 lignes (10% de 2000). Le résultat attendu était d’avoir 300 lignes (10% de 3000) et non pas seulement 200.

Ca ne va pas.

C’est maintenant qu’il faut comprendre le rôle et l’intérêt de la délégation dans Power Apps.

Intérêt de la délégation Power Apps

SharePoint, Dataverse et SQL Server supportent la délégation.

Cela signifie que Power Apps délègue le traitement des données à ces sources de données, plutôt que de traiter les données localement dans l’application elle-même.

Concrètement, dans le cas des deux scénarios précédents et grâce à la délégation, les filtres s’exécutent directement sur ces sources de données avant de renvoyer les résultats.

Notamment, le scénario moins sympa renvoie bien 300 lignes.

En effet, la limite des 2000 maximum s’applique au nombre de lignes renvoyées à Power Apps et non pas à la source de données.

La source de données filtre les 3000 enregistrements avec le 1er FILTER().

Ces enregistrements sont ensuite filtrés avec le 2nd FILTER() de 10%

Comment fonctionne la délégation Power Apps

La formule qui utilise la fonction Power Apps FILTER() est traduite dans le langage de manipulations de données que comprend la source de données délégable.

Pour prendre un exemple simpliste :

Filter(Table;Title = 42)

donne quelque chose qui doit ressembler à :

Select * From Table Where Title=42

Sauf que c’est plus compliqué que ça.

La délégation Power Apps peut être variable

La délégation dépend à la fois : 1) de la fonction appelée ou de l’opérateur concerné, 2) de la nature des données (texte, booléen, etc.), 3) de la source de données.

En effet, toutes les sources de données délégables n’acceptent pas toutes les fonctions ou tous les types de données.

Par exemple : Power Apps delegable functions ands operations for SharePoint

La délégation Power Apps : Opérateurs Fonctions délégables SharePoint
La délégation Power Apps : Opérateurs Fonctions délégables SharePoint

De ces 3 tableaux, il ressort que globalement SQL Server accepte la délégation pour plus de fonctions / types de données que SharePoint ou Common Data Service (Microsoft Dataverse).

Toutefois, dans la pratique, c’est encore un peu plus compliqué que ça.

Persistance de la délégation

Il est relativement « facile » de faire sauter la délégation, même en utilisant une fonction délégable.

Pour cela, il suffit d’utiliser une fonction non-délégable dans une fonction délégable.

Sur sa page Understand delegation in a canvas app, Microsoft donne un exemple avec une fonction non délégable à l’intérieur d’une fonction FILTER().

Filter('Fruit';Left(Name;Len(TextSearchBox1.Text))=TextSearchBox1.Text)

Comme les fonctions LEFT() et LEN() ne sont pas délégables, la formule ne peut pas s’exécuter sur le serveur, malgré la présence de la fonction FILTER() qui est délégable.

Elle doit s’exécuter localement.

La manipulation est terminée.


Publié

dans

par

Étiquettes :

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *