jeudi 24 mai 2007
Eliminer les doublons dans une vue (même les plus tenaces, et sans laisser de trâce)
C'est en lisant l'excellent article Coding faster lookups in IBM Lotus Notes and Domino publié il y a quelques temps déjà sur developerWorks (oui, j'ai du retard dans mes feeds) que je suis tombé sur l'astuce suivante : Use "Generate unique keys in index" to eliminate duplicate entries", que l'on pourrait traduire par : Utiliser l'option "Générer clés uniques dans l'index" pour éliminer les doublons.
Sous cet intitulé plutôt mystérieux se cache une fonctionnalité redoutable, que j'ignorais par ailleurs totalement : la possibilité de ne lister que les entrées uniques d'une vue, sur base de comparaison de chaînes de caractères. Exactement comme on le fait avec les catégories, sauf que là, point de catégorisation encombrante, la vue reste plate2.

A gauche sans, à droite avec
L'une des principales applications de cette option s'impose d'elle même : plutôt que de faire systématiquement un @Unique derrière un @DbLookup pour supprimer les doublons tout en priant pour que la limite des 64k ne soit jamais atteinte (ou alors une fois que vous aurez changé de job), l'idée devient alors d'utiliser une vue spéciale dotée de cette propriété. Les avantages sont multiples : plus rapide (pas de @Unique à calculer à chaque exécution de la formule, mais au contraire directement calculé dans l'index de la vue), et surtout la garantie que votre appli n'explosera pas en cours de route à cause d'un trop grand nombre de documents (et du coup vous pouvez songer à faire carrière dans votre boite, et par exemple commencer par demander une augmentation).

Petite mise en garde toutefois, en R6, cela ne fonctionne pas sur les champs multi-valués (l'article conseille alors de faire un @Implode dans la colonne puis un @Explode derrière). En R7, le problème est réglé. Et en R5 ou inférieur, je présume que cette option n'existe pas. MAJ : Cette option semble également exister en R5 et même en R4.6.
Quoi qu'il en soit, je n'en reviens toujours pas de ne découvrir un truc aussi fondamental qu'aujourd'hui, après 3 ans & demi de travail dans l'univers de Lotus Notes / Domino. Un truc qui m'aurait sauvé la mise bien des fois par le passé. Force est d'avouer que l'intitulé de section "ODBC Access" est bien trompeur, et est certainement la raison pour laquelle je ne me suis jamais attardé sur cette option. Ce qui est sûr, maintenant, c'est que je ne suis pas près de l'oublier.
2 : à défaut d'être catégorisée, la colonne en question doit tout de même être triée.
jeudi 24 mai 2007 à 00:25 :: Lotus Notes / Domino :: 13 commentaires