Filtrer et trier des données de base de données
Lorsque vous souhaitez filtrer et trier des données de base de données, utilisez un composant SQL/NoSQL-WHERE/ORDER. Ceci vous permet de saisir manuellement une clause SQL WHERE qui filtre les données. En option, vous pouvez aussi spécifier une clause ORDER BY si vous souhaitez trier les enregistrements par un champ de base de données particulier, dans un ordre ascendant ou descendant.
Le composant SQL/NoSQL-WHERE/ORDER doit être connecté à une table ou un champ du composant de mappage de base de données. Il est également possible de connecter un composant SQL/NoSQL-WHERE/ORDER avec un composant Join si vous avez besoin de filtrer un ensemble rejoint ou des enregistrements. Pour plus d’informations, voir Rejoindre les données de base de données.
Ajouter un composant SQL/NoSQL-WHERE/ORDER
Pour ajouter un composant SQL/NoSQL-WHERE/ORDER au mappage, suivez les instructions suivantes :
1.Allez au menu Insérer and cliquez sur SQL/NoSQL-WHERE/ORDER. Par défaut, le composant a la structure suivante :
2.Connecter une table ou un champ de base de données de source à l'item table/field du composant SQL/NoSQL-WHERE/ORDER. Vous pouvez trouver un mappage échantillon FilterDatabaseRecords.mfd (voir la capture d’écran ci-dessous) dans le dossier suivant : <Documents>\Altova\MapForce2025\MapForceExamples\Tutorial\. Dans ce mappage, le composant SQL/NoSQL-WHERE/ORDER prend les données de la table source utilisateurs, filtre tous ses enregistrements et sélectionne uniquement ceux où le last name commence par la lettre M (voir l’explication dans la sous-section ci-dessous).
3.Double-cliquez sur l’en-tête du composant SQL/NoSQL-WHERE/ORDER. De manière alternative, cliquez avec la touche droite sur la barre de l’en-tête et sélectionnez Propriétés depuis le menu contextuel. Cela ouvre la boîte de dialogue Propriétés SQL/NoSQL-WHERE/ORDER.
4.Saisir la clause WHERE SQL dans le champ de saisie en haut. Dans notre exemple, la clause SQL Where est la suivante : last_name LIKE :sqlparam. En option, saisir la clause ORDER BY. L'image ci-dessus illustre les clauses WHERE et ORDER BY définies dans le mappage FilterDatabaseRecords.mfd (ces paramètres sont expliqués plus bas). Pour plus d'exemples, voir Créer des clauses WHERE et ORDER BY.
Paramètres dans les composants SQL/NoSQL-WHERE/ORDER
Le composant SQL/NoSQL-WHERE/ORDER est utilisé dans le mappage FilterDatabaseRecords.mfd a une clause WHERE suivante : last_name LIKE :sqlparam, où last_name se réfère au nom de champ de la base de données dans la table connectée ; LIKE est un opérateur SQL ; :sqlparam crée un paramètre appelé sqlparam dans le mappage.
Les paramètres dans le composant SQL/NoSQL-WHERE/ORDER sont optionnels. Ils sont utiles si vous souhaitez passer une valeur dans la clause WHERE depuis le mappage. Sans paramètres, la clause WHERE ci-dessus pourrait avoir été écrite comme suit : Last LIKE "M%". Ceci extrairaient toutes les personnes dont le nom de famille commence par la lettre M. En vue de rendre cette requête même plus flexible, nous avons ajouté un paramètre au lieu de "M%". Cela permet de fournir d'autres lettres depuis le mappage, par ex., D, et donc d'extraire les personnes dont le nom de famille commence avec D simplement en changeant une constante, ou un paramètre d'entrée de mappage. Dans le mappage ci-dessus, la lettre d'entrée provient d'un simple composant d'entrée appelé input. Si vous double-cliquez sur la barre de titre de ce composant et que vous ouvrez ses propriétés, vous remarquerez que m est donné en tant que valeur d'exécution au moment du design (voir la capture d’écran ci-dessous) :
Dans le mappage, le caractère générique % est fourni par un constant. Ce caractère générique est concaténé avec une valeur de paramètre à l’aide de la fonction concat. L’avantage étant que vous ne devez pas saisir de caractère générique dans la ligne de commande si le mappage est exécuté dans un autre environnement (par ex., le serveur MapForce Server).
Apparence de composants SQL/NoSQL-WHERE/ORDER
Des composants SQL/NoSQL WHERE/ORDER changent leur apparence dépendant de leurs paramètres y définis. Ainsi, vous pouvez consulter rapidement directement depuis le mappage ce que le composant SQL/NoSQL WHERE/ORDER fait (voir la table ci-dessous)
Une clause WHERE avec un paramètre a été définie. | |
Une clause WHERE avec un paramètre a été définie. Le paramètre name est visible sous l'item table/field. | |
Une clause WHERE avec un paramètre a été définie. De plus, une clause ORDER BY a été définie. Le tri est indiqué par l'icône de tri A-Z. |
Placer le curseur de la souris sur l'en-tête SQL/NoSQL WHERE/ORDER ouvre une infobulle affichant les différentes clauses qui ont été définies.
Filtre des données dans Azure CosmosDB (Enterprise Edition)
Si le nom d’un conteneur dans votre CosmosDB a un caractère spécial (par ex., +, -, @, etc.) ou s’il est un mot-clé, ce nom ne pourra pas être utilisé dans les files d’attente, et vous recevrez une erreur de syntaxe depuis la base de données. Pour éviter de tels problèmes potentiels, MapForce utilise la syntaxe suivante pour les requêtes de CosmosBD :
SELECT * FROM ROOT AS c WHERE c.<field> ORDER BY c.<field>
Le mot-clé ROOT dans la clause FROM référence le conteneur actuel que vous requêtez. Depuis que le mot-clé ROOT ne peut pas être utilisé dans les champs d’adresse des clauses WHERE et ORDER BY, le conteneur est dénommé par un nom alias c qui est attribué au conteneur par le mot-clé AS. Attribuer des noms d’alias au conteneur permet de filtrer et trier les contenus du conteneur.
Notez que dans le dialogue WHERE/ORDER, toutes les références de champ doivent être préfixées avec le nom alias du conteneur c (voir l’exemple ci-dessous).
SELECT * FROM ROOT AS c WHERE c.age > 20 ORDER BY c.name