L'optimisation de la connexion à des listes SharePoint de grande taille dans PowerApps est cruciale pour assurer des performances fluides, surtout lorsque vous travaillez avec un grand volume de données. Voici quelques bonnes pratiques et techniques pour optimiser cette connexion.
1. Limiter les enregistrements récupérés avec des filtres
Lorsque vous travaillez avec des listes SharePoint volumineuses (plus de 5000 éléments), il est essentiel de limiter le nombre d’enregistrements récupérés à l’aide de filtres.
- Utilisez des filtres spécifiques dans votre source de données pour limiter le nombre d'enregistrements. PowerApps applique une limite de 500 enregistrements par défaut (modifiable jusqu’à 2000), donc réduire la quantité de données à charger via des filtres est un bon point de départ.
Exemple : Filtrer les éléments à récupérer en fonction d'une condition.
powerapps
Filter(SharePointList, Status = "Active")
2. Utiliser les fonctions déléguées
PowerApps utilise un concept appelé délégation pour gérer les grandes quantités de données en SharePoint. Lorsqu'une opération est déléguée, elle est effectuée côté serveur, ce qui permet de récupérer uniquement les données pertinentes.
- Utiliser des fonctions déléguées comme `Filter()`, `Sort()`, `LookUp()` qui sont prises en charge par SharePoint.
Exemple : Déléguer une opération de filtrage.
Filter(SharePointList, Created > Today() - 30)
Cela récupérera uniquement les éléments créés au cours des 30 derniers jours, tout en déléguant l'opération au serveur SharePoint.
3. Éviter les fonctions non déléguées
Certaines fonctions dans PowerApps ne prennent pas en charge la délégation, ce qui signifie que l'application devra d'abord récupérer toutes les données côté client avant de pouvoir traiter la requête, ce qui ralentit considérablement l'application.
- Exemple de fonctions non déléguées : `Len()`, `StartsWith()`, `Mid()`, etc. Évitez-les dans vos requêtes si vous travaillez avec des listes de grande taille.
Mauvais exemple (non délégué) :
Filter(SharePointList, Len(Title) > 10)
4. Limiter les colonnes récupérées (fonction `ShowColumns`)
Si vous n'avez pas besoin de toutes les colonnes de la liste SharePoint, utilisez la fonction `ShowColumns()` pour ne récupérer que les colonnes nécessaires, réduisant ainsi la charge sur le réseau et la performance.
Exemple :
ShowColumns(SharePointList, "Title", "Status", "DueDate")
Cela récupère uniquement les colonnes `Title`, `Status`, et `DueDate` de votre liste SharePoint.
5. Pagination pour charger les données par lot
Pour des listes de très grande taille, vous pouvez implémenter une pagination dans PowerApps, en chargeant les données par lots pour éviter de récupérer un trop grand volume de données d'un coup.
Exemple de pagination (en fonction d'un ID de liste) :
ClearCollect(colPagedItems, Filter(SharePointList, ID > Last(colPagedItems).ID))
Cela permet de récupérer les éléments par lots en fonction de l'ID et d'ajouter chaque lot aux données précédentes.
6. Utiliser des index de colonnes SharePoint
SharePoint permet d’indexer les colonnes dans les listes pour améliorer la performance des requêtes. Si vous effectuez des filtres sur une colonne particulière dans PowerApps, assurez-vous que cette colonne est indexée dans SharePoint.
- Exemple de colonnes à indexer : Colonnes souvent filtrées comme `Created`, `Modified`, ou des colonnes personnalisées.
Pour ajouter un index, dans la liste SharePoint :
- Allez dans Paramètres de la liste > Colonnes indexées > Créer un index.
7. Utiliser des collections temporaires
Lorsque vous travaillez avec des données statiques ou peu modifiées, vous pouvez stocker temporairement les données SharePoint dans des collections PowerApps pour éviter de faire plusieurs appels réseau.
Exemple :
ClearCollect(TempCollection, SharePointList)
Une fois les données chargées dans la collection `TempCollection`, vous pouvez manipuler ces données localement sans avoir à refaire des requêtes vers SharePoint.
8. Éviter les contrôles de galerie chargés de manière excessive
Lorsque vous utilisez des galeries pour afficher des données provenant de SharePoint, essayez de limiter le nombre d’enregistrements chargés simultanément. Trop de données affichées à la fois peut entraîner des ralentissements, surtout si chaque élément de la galerie a plusieurs contrôles.
- Conseil : Affichez une quantité limitée d’éléments et ajoutez une pagination ou un bouton "Charger plus".
9. Désactiver l’actualisation automatique
Par défaut, certaines actions ou modifications dans PowerApps provoquent une actualisation automatique des données. Cela peut entraîner des ralentissements si de grandes quantités de données sont régulièrement rafraîchies.
- Conseil : Désactivez l’actualisation automatique pour les sources de données non essentielles et effectuez des rafraîchissements manuels uniquement lorsque nécessaire.
Refresh(SharePointList)
10. Utiliser Power Automate pour des tâches complexes
Si vous avez besoin de traiter de grandes quantités de données ou d’exécuter des tâches complexes, envisagez d’utiliser Power Automate (anciennement Microsoft Flow) pour traiter ces opérations en arrière-plan, puis renvoyer les résultats dans PowerApps.
Exemple : Utilisez Power Automate pour rechercher et filtrer des éléments dans une liste SharePoint volumineuse, puis retournez uniquement les données filtrées à PowerApps.
Conclusion
En suivant ces bonnes pratiques, vous pouvez optimiser la connexion de vos applications PowerApps à des listes SharePoint de grande taille. L'utilisation de filtres délégués, la limitation des colonnes récupérées, l’indexation des colonnes, et la pagination vous permettront de maintenir des performances optimales tout en améliorant l'expérience utilisateur.