Avertissements de délégation, limites et fonctions non délégables

Effectué

Power Apps utilise des visuels pour vous aider à comprendre, en tant que créateur d’applications, quand la délégation se produit. Maker Portal propose également un paramètre que vous pouvez ajuster pour augmenter la quantité de données retournées quand la délégation n’est pas possible.

Avertissements de délégation

Chaque fois que vous utilisez une fonction non délégable, Power Apps la souligne d’une ligne bleue et affiche un triangle d’avertissement jaune, comme illustré ci-dessous.

Capture d’écran d’une fonction non délégable avec une ligne bleue et un triangle d’avertissement jaune.

Vous disposez ainsi d’un indicateur visuel clair signalant que la délégation ne se produit pas. Autrement dit, vous ne voyez peut-être pas toutes vos données. Il est important de comprendre quelques points concernant cet indicateur visuel.

  • Power Apps fournit cet avertissement quelle que soit la taille de votre source de données. Même si votre source de données comprend uniquement quelques éléments et que la délégation n’est pas techniquement une source de problème pour vous, l’avertissement s’affiche malgré tout. N’oubliez pas que les 500 premiers éléments sont renvoyés par défaut et traités localement. L’avertissement s’affiche chaque fois que votre formule n’est pas déléguée.

  • L’indicateur d’avertissement est traité uniquement par le biais du premier élément qui provoque une délégation. Dans la capture d’écran ci-dessus, notez que seul le champ souligné « FirstName » est en bleu. Cela s’explique par le fait que c’était le premier élément ayant provoqué une délégation. « LastName » entraîne également une délégation dans ce scénario. Cela peut prêter à confusion, car les gens tentent de déterminer quelle est la différence entre FirstName et LastName, au lieu de résoudre le problème réel, qui est la fonction Search. Si vous êtes confronté à cette confusion, réorganisez votre formule. Cela permet de contrôler la saisie, et le premier champ, quel qu’il soit, affiche le problème.

    Capture d’écran de l’indicateur d’avertissement pour le premier élément ayant causé la délégation.

  • Cet indicateur visuel est présent uniquement lorsque vous vous trouvez dans Maker Portal, lors de la création de l’application. Lorsqu’un utilisateur exécute l’application, il ne reçoit pas de notification indiquant que la délégation ne se produit pas et qu’il ne voit peut-être que des résultats partiels. Gardez cela à l’esprit lorsque vous concevez votre application et créez-la en conséquence.

Changer le nombre d’enregistrements retournés quand la délégation n’est pas disponible

Quand, pour une raison quelconque, une formule ne peut pas déléguer à la source de données, Power Apps récupère par défaut les 500 premiers enregistrements de cette source de données, puis traite la formule localement. Power Apps prend en charge l’ajustement de cette limite de 1 à 2 000. Vous pouvez ajuster cette limite dans les paramètres Avancés.

  1. Dans Maker Portal, cliquez sur Fichier en haut à gauche.

  2. Dans le menu le plus à gauche, sélectionnez Paramètres.

  3. Sous Paramètres de l’application, sélectionnez Paramètres avancés.

  4. Définissez la limite de ligne de données pour les requêtes non délégables concernant toute valeur comprise entre 1 et 2 000.

  5. Après avoir défini la limite, cliquez sur la flèche en haut à gauche pour enregistrer le changement apporté et retourner dans Maker Portal.

Capture d’écran de la zone Paramètres > Paramètres avancés Power Apps avec une limite de lignes de données définie.

Vous pouvez être amené à ajuster cette limite pour deux raisons.

  • Pour augmenter la limite si vous utilisez des données où 500 enregistrements ne suffisent pas, mais où 2 000 suffisent. Par exemple, si vous avez une liste de clients et que vous savez que vous n’aurez jamais plus de 1 000 clients, vous pouvez concevoir votre application de façon à ignorer la délégation et à toujours retourner la totalité des 1 000 enregistrements.

  • Pour diminuer la limite à 1 ou 10 afin de faciliter les tests. Si vous êtes confronté à des scénarios où vous ne savez pas si une fonction non délégable est à l’origine de problèmes rencontrés avec votre application, vous pouvez réduire la limite, puis faire un test. Si vous définissez la limite à 1 et que votre galerie présente un seul enregistrement, vous savez que vous aviez une fonction non délégable. Ce réglage accélère votre processus de résolution des problèmes.

Fonctions non délégables

Dans l’unité précédente, vous avez découvert les fonctions qui sont délégables et leurs relations avec les différentes sources de données. Les autres fonctions, non traitées dans cette unité, ne sont pas délégables. Les fonctions suivantes sont des fonctions importantes qui ne prennent pas en charge la délégation.

  • First, FirstN, Last, LastN

  • Choices

  • Concat

  • Collect, ClearCollect (aucune de ces fonctions ne renvoie d’avertissement de délégation, mais elles ne sont pas délégables)

  • CountIf, RemoveIf, UpdateIf

  • GroupBy, Ungroup

Toutes ces fonctions ne sont pas délégables. Par conséquent, en les ajoutant à une formule, vous pouvez prendre une fonction précédemment délégable et la rendre non délégable, comme illustré dans l’exemple précédent.

Fonctions délégables partiellement prises en charge

Les fonctions de mise en forme de table ci-dessous sont considérées comme partiellement délégables. Cela signifie que les formules dans leurs arguments peuvent être déléguées. Toutefois, la sortie de ces fonctions est soumise à la limite d’enregistrement de non-délégation.

  • AddColumns

  • DropColumns

  • ShowColumns

  • RenameColumns

Un modèle courant consiste à fusionner des informations d’une table dans une autre à l’aide d’AddColumns et de LookUp. Cette opération est communément appelée « jointure » dans le jargon des bases de données. Par exemple :

AddColumns( Products, "Supplier Name", LookUp( Suppliers,
Suppliers.ID = Product.SupplierID ).Name )

Même si Products et Suppliers sont potentiellement des sources de données délégables et que la fonction LookUp fait partie de la catégorie délégable, la fonction AddColumns affiche une délégabilité partielle. Par conséquent, le résultat de la formule entière reste limité au segment initial de la source de données Products.

Même si la fonction LookUp et la source de données associée permettent la délégation, facilitant ainsi la découverte de Suppliers sur un vaste jeu de données, elles comportent une mise en garde. LookUp nécessite des requêtes distinctes sur la source de données pour chacun des enregistrements initiaux dans Products, ce qui entraîne une activité réseau accrue. Toutefois, si le jeu de données Suppliers est relativement petit et reste stable, une autre approche consiste à mettre en cache la source de données dans l’application. L’utilisation d’un appel Collect lors de l’initialisation de l’application (à l’aide d’OnVisible sur l’écran d’ouverture) permet des opérations LookUp ultérieures directement dans la source de données mise en cache, atténuant ainsi les discussions sur le réseau.