Fonctions Sort et SortByColumns

S’applique à : Applications canevas Flux de bureau Applications pilotées par modèle CLI Power Platform

Permet de trier une table.

Note

Les commandes pac power-fx de PAC CLI ne prennent pas en charge la fonction SortByColumns.

Description

La fonction Sort permet de trier une table selon une formule.

La formule est évaluée pour chaque enregistrement de la table et les résultats sont utilisés pour trier la table. La formule doit avoir pour résultat un nombre, une chaîne ou une valeur booléenne ; elle ne peut pas produire une table ou un enregistrement.

Les champs de l’enregistrement en cours de traitement sont disponibles dans la formule. Utilisez l’opérateur ThisRecord ou référencez simplement les champs par leur nom comme vous le feriez pour toute autre valeur. L’opérateur As peut également être utilisé pour nommer l’enregistrement en cours de traitement, ce qui peut faciliter la compréhension de votre formule et rendre les enregistrements imbriqués accessibles. Pour plus d’informations, consultez les exemples ci-dessous et la section Utilisation de l’étendue de l’enregistrement.

Pour trier selon une colonne, puis une autre, incorporez une formule Sort dans une autre. Par exemple, vous pouvez utiliser cette formule pour trier une table Contacts d’abord par une colonne LastName, puis par une colonne FirstName : Sort( Sort( Contacts, LastName ), FirstName )

La fonction SortByColumns peut également être utilisée pour trier une table selon une ou plusieurs colonnes.

La liste de paramètres SortByColumns fournit les noms des colonnes à trier et le sens du tri par colonne. Le tri est effectué dans l’ordre des paramètres (d’abord par la première colonne, puis la deuxième, etc.). Les noms de colonnes sont spécifiés sous forme de chaînes et des guillemets doubles sont requis en cas d’inclusion directement dans la liste de paramètres. Par exemple, SortByColumns( CustomerTable, "LastName" ).

Vous pouvez combiner SortByColumns avec un contrôle Drop down ou List box pour permettre aux utilisateurs de sélectionner la colonne à trier.

En plus du tri croissant ou décroissant, SortByColumns permet d’effectuer un tri basé sur une table de valeurs à une seule colonne. Par exemple, vous pouvez trier les enregistrements en fonction du nom d’un jour de la semaine en indiquant [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] comme ordre de tri. Tous les enregistrements qui incluent Monday sont indiqués en premier, suivis de Tuesday et ainsi de suite. Les enregistrements qui n’apparaissent pas dans la table de tri sont placés à la fin de la liste.

Les tables correspondent à une valeur dans Power Apps, comme une chaîne ou un chiffre. Elles peuvent être transmises et renvoyées par les fonctions. Les fonctions Sort et SortByColumn ne peuvent pas modifier une table ; au lieu de cela, elles prennent une table en tant qu’argument et renvoient une nouvelle table qui a été triée. Pour plus d’informations, voir Utilisation des tables.

Délégation

Lorsque cela est possible, Power Apps délèguera, sur demande, les opérations de filtrage et de tri à la source de données et à la page par le biais des résultats. Par exemple, lorsque vous démarrez une application qui affiche un contrôle Galerie contenant des données, seul le premier ensemble d’enregistrements sera initialement importé dans l’appareil. Lorsque l’utilisateur fait défiler la page, des informations supplémentaires provenant de la source de données s’affichent. Il en résulte un temps de démarrage plus rapide pour l’application et un accès à de très grands ensembles de données.

Toutefois, il se peut que la délégation ne soit pas toujours possible. Les sources de données varient selon les fonctions et les opérateurs qu’elles prennent en charge avec la délégation. Si la délégation complète d’une formule n’est pas possible, l’environnement de création marquera la partie qui ne peut pas être déléguée avec un avertissement. Si possible, envisagez de modifier la formule pour éviter les fonctions et les opérateurs qui ne peuvent pas être délégués. La liste de délégation détaille les sources de données et les opérations qui peuvent être déléguées.

Si la délégation n’est pas possible, Power Apps extraira uniquement un petit ensemble d’enregistrements à utiliser localement. Les fonctions de filtrage et de tri s’exécuteront sur un ensemble réduit d’enregistrements. Il se peut que le contenu de la Galerie ne soit pas exhaustif, ce qui peut désorienter les utilisateurs.

Pour plus d’informations, consultez la Vue d’ensemble de la délégation.

Syntaxe

Sort( Table, Formula [, SortOrder ] )

  • Table : obligatoire. Table à trier.
  • Formula : obligatoire. Cette formule est évaluée pour chaque enregistrement de la table et les résultats sont utilisés pour trier la table. Vous pouvez référencer des colonnes dans la table.
  • SortOrder : facultatif. Spécifiez SortOrder.Descending pour trier la table dans l’ordre décroissant. SortOrder.Ascending est la valeur par défaut.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table : obligatoire. Table à trier.

  • ColumnName(s) : obligatoire. Noms de colonnes à trier en tant que chaînes.

  • SortOrder(s) : facultatif. SortOrder.Ascending ou SortOrder.Descending. SortOrder.Ascending est la valeur par défaut. Si plusieurs ColumnNames sont fournis, toutes les colonnes sauf la dernière doivent inclure un ordre de tri (SortOrder).

    Note

    Pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, spécifiez ceux-ci sous la forme « _x0020_ ». Par exemple, spécifiez « Nom de colonne » sous la forme « Nom_x0020_de colonne ».

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table : obligatoire. Table à trier.

  • ColumnName : obligatoire. Nom de colonne à trier en tant que chaînes.

  • SortOrderTable : obligatoire. Table de valeurs à une seule colonne à trier.

    Note

    Pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, spécifiez ceux-ci sous la forme « _x0020_ ». Par exemple, spécifiez « Nom de colonne » sous la forme « Nom_x0020_de colonne ».

Exemples

Dans les exemples suivants, nous allons utiliser la source de donnéesIceCream qui contient les données de cette table :

Exemple de glace.

Formule Description Résultat
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Trie IceCream en fonction de sa colonne Flavor. La colonne Flavor contient des chaînes. La table est donc triée par ordre alphabétique. Par défaut, l’ordre de tri est croissant. Trié par ordre alphabétique.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Trie IceCream selon sa colonne Quantity. La colonne Quantity contient des nombres. La table est donc triée par ordre numérique. Par défaut, l’ordre de tri est croissant. Trié numériquement.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Trie IceCream selon sa colonne Quantity. La colonne Quantity contient des nombres. Le tri est donc numérique. L’ordre de tri a été spécifié comme décroissant. Trié numériquement et décroissant.
Sort( IceCream, Quantity + OnOrder ) Trie IceCream selon la somme de ses colonnes Quantity et OnOrder pour chaque enregistrement de manière individuelle. La somme étant un nombre, la table est triée par ordre numérique. Par défaut, l’ordre de tri est croissant. Étant donné que nous trions avec une formule et non avec les valeurs de colonne brutes, il n’existe aucun équivalent à l’utilisation de SortByColumns. Trié numériquement et croissant.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Trie IceCream d’abord selon sa colonne OnOrder, puis selon sa colonne Quantity. Notez que « Pistachio » est passé au-dessus de « Vanilla » dans le premier tri selon OnOrder, puis les deux ont été déplacés vers l’emplacement approprié en fonction de la valeur Quantity. Trié avec Pistache au-dessus de Vanille.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Trie IceCream selon sa colonne Flavor selon la table à une seule colonne contenant « Pistachio » et « Strawberry ». Les enregistrements qui ont le goût (Flavor) « Pistachio » apparaissent en premier dans le résultat, suivis des enregistrements qui contiennent « Strawberry ». Les valeurs de la colonne Flavor qui ne correspondent pas, telles que « Vanilla », apparaissent après les éléments qui ont été mis en correspondance. Trié avec Pistache au-dessus de fraise.

Pas à pas

Pour exécuter ces exemples vous-même, créez la source de données IceCream en tant que collection :

  1. Ajoutez un bouton, puis définissez sa propriété OnSelect sur la formule suivante :
    ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )
  2. Affichez un aperçu de l’application, sélectionnez le bouton, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.
  3. Sélectionnez Collections dans le menu Fichier pour afficher la collection que vous venez de créer, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.

Sort

  1. Ajoutez un autre bouton, puis définissez sa propriété OnSelect sur la formule suivante :
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    La formule précédente crée une deuxième collection, appelée SortByFlavor, qui contient les mêmes données que IceCream. Toutefois, la nouvelle collection contient les données triées par ordre alphabétique par la colonne Flavor dans l’ordre croissant.

  2. Appuyez sur F5, sélectionnez le nouveau bouton, puis appuyez sur Échap.

  3. Sélectionnez Collections dans le menu Fichier pour afficher les deux collections, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.

  4. Répétez les trois dernières étapes, mais en modifiant le nom de la collection que vous souhaitez créer, puis remplacez la formule Sort par une autre formule issue du tableau d’exemples plus haut dans cette section qui utilise Sort.

SortByColumns

  1. Ajoutez un autre bouton, puis définissez sa propriété OnSelect sur la formule suivante :
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    La formule précédente crée une troisième collection, appelée SortByQuantity, qui contient les mêmes données que IceCream. Toutefois, la nouvelle collection contient les données triées par ordre numérique par la colonne Quantity dans l’ordre croissant, puis par la colonne Flavor dans l’ordre décroissant.

  2. Appuyez sur F5, sélectionnez le nouveau bouton, puis appuyez sur Échap.

  3. Sélectionnez Collections dans le menu Fichier pour afficher les trois collections, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.

  4. Répétez les trois dernières étapes, mais en modifiant le nom de la collection que vous souhaitez créer, puis remplacez la formule SortByColumns par une autre formule issue du tableau d’exemples plus haut dans cette section qui utilise SortByColumns.