Fonction Filter – Performance et délégation
-
Fonction Filter – Performance et délégation
Bonjour à tous.
Récemment, la plupart des questions que je me suis posées vis à vis de Canvas concernent les performances des app et comment les optimiser. Principalement à propos des fonctions Filter.
Un petit récap pour ceux qui ne le savent pas, certaines fonctions (à savoir Filter, Lookup, First et Search) peuvent être déléguées, c’est-à-dire qu’elles peuvent être traitées du côté de la donnée plutôt que directement dans canvas, ce qui est supposé optimiser le temps de requête et surtout ce qui permet de traiter l’intégralité de la donnée plutôt que les 500 à 2000 (en fonction des paramètres) premiers enregistrements disponibles si vous devez traiter votre source de données dans canvas. Pour plus d’informations sur le sujet, cliquez ici.
En fonction des différentes sources de données, les opérateurs utilisés peuvent être déléguables ou non. Personnellement, j’utilise beaucoup Dataverse en parallèle avec canvas, et la meilleure solution que j’ai trouvée lorsque la formule nous le permet est la suivante :
Ici, on utilise une vue Dataverse en guise de formule de filtre, donc on n’a littéralement aucune opération côté canvas, on interroge la vue Dataverse et elle nous retourne les enregistrements qu’on veut en fonction de son filtre. Cette solution est idéale que ce soit d’un point de vue du nombre d’enregistrements traités (puisque la requête est entierement traitée côté donnée, on est certains que notre recherche est faite sur l’intégralité de la table), et point de vue performance, j’ai pu constater une amélioration sur les grosses requêtes (en éspérant que ce ne soit pas simplement mon biais d’observation). Cependant, la limitation est évidente, si on a besoin de faire un filtre par rapport à une information présente uniquement dans notre app, on ne peut pas la faire passer à la vue.
J’en viens donc à ma question : à votre avis, quelle est la version la plus performante de la requête suivante :
Ici, on cherche les devis liés à l’opportunité sélectionnée précédemment dans l’app (condition interne) qui répondent à une condition spécifique que l’on peut mettre sous la forme d’une vue dataverse (externe).
Selon vous, est-il donc plus performant de faire 2 fonctions Filter imbriquées, l’une se basant sur une requête externe, et l’autre venant ajouter le reste de notre condition, ou de faire une seule fonction Filter avec l’intégralité de la requête ? Y a-t-il d’autres facteurs qui influent dont je n’ai pas parlé ?
__________________________________________________________________________________________________________________________________________________________
Voila, voila, je sais que la question est assez spécifique, mais si l’un ou l’une d’entre vous c’est déjà frotté à ce cas de figure ou a simplement une opinion je suis très intéressé. Sur une note en rapport, la plupart des guides d’optimisations des app canvas que j’ai trouvé sur le net sont soit très datés soit plutôt à côté de la plaque, je pensait en refaire un et le poster sur ce forum dans les semaines à venir, donc si vous avez vos propre trucs et astuces que vous voulez partager je serait reconnaissant !
- Cette discussion a été modifiée Il y a 2 mois par Sebastien.
- Cette discussion a été modifiée Il y a 2 mois par Sebastien.
- Cette discussion a été modifiée Il y a 2 mois par Sebastien.
Connectez-vous pour répondre.