Avec Dataview pour Obsidian, comment configurer le...

Créé le : 21 juillet 2025

Répondu en utilisant O3 par Chat01

Question

Avec Dataview pour Obsidian, comment configurer le tableau de listes excluant les listes sans mot ?

Réflexion

Interpreting Dataview request

The user is asking for help with configuring a Dataview table in Obsidian that excludes list items without words. It seems they’re using Dataview to query notes, possibly focusing on tasks or lists. The goal is to display only lists with content and ignore empty list entries. I can help by explaining how to write a Dataview query that filters out these empty list items and provide a relevant code snippet for their setup.

Providing Dataview query example

To filter out empty list items in Dataview, you can use the FLATTEN function and check item length or use WHERE to exclude blank entries. For instance:

dataview
TABLE join(filter(list, (l) => l != "" and l != null), ", ") as "Liste" WHERE list WHERE length(filter(list, (l) => l != "" and l != null)) > 0

Alternatively:

dataview
TABLE liste FROM "" WHERE liste AND any(liste, (l) => l != "")

You can also handle blank lines in lists by filtering with regexmatch.

Dat

Thought for 41 seconds

Réponse

Voici une façon simple – et “tout Dataview” – d’afficher une colonne de listes en ignorant les entrées vides (et en excluant les notes dont la liste est entièrement vide).

Supposons un champ YAML appelé liste :

yaml
liste: - Paris - # ← ligne vide ou blanc seul - Tokyo

1. Enlever les éléments vides

dataview
TABLE join( filter(liste, (el) => !regexmatch("^\\s*$", el)), ", " ) AS "Liste filtrée" WHERE liste
  • filter() prend la liste et ne garde que les éléments dont le contenu n’est pas uniquement des espaces (regexmatch("^\\s*$", el) retourne true quand la chaîne est vide ou blanc).
  • join() assemble ensuite ce qui reste dans une seule cellule, séparé par des virgules.

2. Écarter les notes dont la liste est (après nettoyage) complètement vide

Ajoutez un deuxième WHERE qui teste qu’il reste au moins un mot :

dataview
TABLE join( filter(liste, (el) => !regexmatch("^\\s*$", el)), ", " ) AS "Liste filtrée" WHERE liste WHERE length( filter(liste, (el) => !regexmatch("^\\s*$", el)) ) > 0

Ainsi :

  • Les notes dont tous les éléments sont vides / constitués d’espaces disparaissent du tableau.
  • Les notes qui contiennent au moins un vrai mot apparaissent, mais sans les lignes vides.

Variante “FLATTEN”

Si vous préférez travailler élément par élément :

dataview
FLATTEN liste AS item WHERE !regexmatch("^\\s*$", item) GROUP BY file.name TABLE array(item) AS "Liste filtrée"
  • FLATTEN déplie la liste.
  • On enlève les items vides.
  • GROUP BY recompose par note et array(item) re-fait la liste filtrée.

Points clés à retenir

  • Test du vide : regexmatch("^\\s*$", el) repère à la fois la chaîne vide et les blancs/retours à la ligne.

    Vous pouvez remplacer par trim(el) = "" si vous utilisez Dataview v0.6+.

  • filter() + join() suffisent lorsque vous voulez juste nettoyer l’affichage.
  • Deuxième WHERE indispensable pour ne pas montrer les notes complètement vides.

Adaptez simplement le nom du champ YAML (liste) et le séparateur de join() à vos besoins.

Partager cette Q&R