Découvrez la fonction Distinct améliorée

La récupération de la liste des éléments de données uniques est toujours utile lors de la manipulation des données. Dans certains cas, le nombre d’occurrences de chaque valeur est essentiel. La fonction distinct des classes de sélection Collection et Entity permet de récupérer une liste de valeurs uniques. Avec 4D v20, vous pouvez également récupérer le nombre d’occurrences de chaque valeur distincte.

Et ce n’est pas tout !

Un objet de la base de données peut être utilisé pour sauvegarder les données personnalisées saisies par l’utilisateur. Du côté du code, vous devez donc connaître tous les chemins possibles vers l’objet. La fonction distinctPaths a été ajoutée à la classe de sélection des entités.

Voici tout ce que vous devez savoir.

Nouvelle option pour distinct

La syntaxe est identique pour les deux classes, Collection et Entity selection. Vous devez passer la constante ck count values, ou dk count values au second paramètre nommé option pour obtenir une collection de paires d’attributs : value et count.

Si vous ne passez pas l’option, le comportement reste le même ; vous obtenez une collection de valeurs uniques.

Exemple avec Collection

Par exemple, je souhaite obtenir la liste des valeurs uniques d’une collection de catégories et le nombre d’occurrences de chaque catégorie :

var $col; $category: Collection
$category :=New Collection("Famille" ; "Ami" ; "Travail" ; "Famille" ; "Personnel")
$col :=$category.distinct (ck count values)

Le résultat est le suivant :

[
   {"value":"Family","count":2},
   {"value":"Friend","count":1},
   {"value":"Personal","count":1},
   {"value":"Work","count":1}
]

Exemple de sélection d’entités

Par exemple, je souhaite obtenir la liste des pays de mes contacts et le nombre de contacts par pays :

var $countries : Collection
$countries :=ds.Contact.all().distinct("country" ;dk count values
)

Le résultat est le suivant :

[
   {"value":"France","count":2},
   {"value":"Morocco","count":10},
   {"value":"Germany","count":3}
]

Nouvelle fonction « chemins distincts

La fonction distinctPaths de la classe de sélection d’entités renvoie la liste des chemins distincts trouvés dans votre champ d’objet indexé. Vous devez passer le nom du champ d’objet indexé en paramètre. Cette fonction est équivalente à la commande DISTINCT ATTRIBUTE PATHS.

Exemple

Par exemple, je veux récupérer tous les chemins possibles du champ d’objet « address » :

var $paths : Collection
$paths :=ds.Contact.all().distinctPaths("address")

Le résultat est le suivant :

[
   "Number",
   "StreetAddress",
   "ExtendedAddress",
   "Ville",
   "ZipCode",
   "Pays"
]

Suivant…

N’hésitez pas à nous faire part de vos commentaires et de vos idées sur le forum 4D afin de nous aider à améliorer le produit.

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.