Tuto Dataview dans Obsidian 2022
Based on PKMind - Obsidian - Boostez votre Productivité's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Dataview devient réellement utile quand les métadonnées YAML/front matter sont cohérentes et présentes sur toutes les notes concernées.
Briefing
Dataview dans Obsidian sert de brique centrale pour transformer un dossier de notes en véritable système de gestion des connaissances, à condition de maîtriser sa syntaxe et ses pièges. L’approche mise en avant consiste à partir d’une requête simple (liste) puis à la faire évoluer vers des tables, des filtres plus fins et des champs calculés, afin d’obtenir des résultats directement exploitables pour organiser, retrouver et analyser l’information.
La base commence par une requête de type liste : Dataview lit les fichiers d’un dossier et affiche ceux qui correspondent à des critères. Le point clé est l’usage de métadonnées dans la zone YAML/front matter (en haut de chaque note). Pour ne récupérer que certains documents, il faut définir un champ cohérent partout — par exemple `type: film` — puis filtrer avec `where type = film`. L’atelier insiste sur la rigueur de la syntaxe : un espace après le `:` compte, et l’absence de ce champ dans une note fait qu’elle disparaît des résultats. Pour vérifier rapidement qu’aucune note n’a été oubliée, une requête de contrôle permet d’afficher les autres documents qui ne sont pas des films.
Ensuite, la requête passe de la liste à la table pour structurer l’affichage avec des colonnes. L’exemple construit une table des films avec les acteurs, puis montre un cas fréquent : un film peut contenir plusieurs acteurs, ce qui produit des lignes “désagréables” où les valeurs s’accumulent. La solution consiste à “aplatir” la donnée avec `flatten acteur`, ce qui génère une ligne par acteur tout en répétant le film associé. À partir de là, des critères plus avancés apparaissent : filtrer les films dont un acteur contient un texte donné via `contains`. Le tutoriel met aussi en garde sur les différences de casse (majuscule/minuscule) et propose de normaliser avec `upper` ou `lower`, en précisant que ces fonctions doivent être écrites en minuscules pour fonctionner.
Le texte aborde aussi des subtilités de recherche : quand un champ contient plusieurs éléments (comme plusieurs acteurs), les recherches partielles sur une valeur peuvent être problématiques dans certaines versions, mais le comportement est présenté comme corrigé. Autre partie importante : la manière d’écrire les champs dans le corps de la note. Les “inline fields” (dans le texte) sont plus capricieux : selon la syntaxe, le champ peut ne pas être reconnu. L’exemple montre plusieurs formes qui marchent (avec guillemets, parenthèses, ou crochets), et souligne un cas pratique pour afficher automatiquement la date de dernière modification grâce à `file.mtime`.
Enfin, le tutoriel traite les champs imbriqués (objets dans YAML), où l’accès se fait via `eval.avis` plutôt que `avis` seul. Pour rendre les tables plus lisibles, il est possible d’utiliser des alias et d’éviter l’affichage de l’ID interne avec `without ID`, ce qui supprime le lien technique vers la note et améliore l’esthétique. L’ensemble vise un objectif concret : des requêtes Dataview fiables, maintenables et adaptées à un réseau de connaissances réellement exploitable au quotidien.
Cornell Notes
Dataview permet de bâtir dans Obsidian des listes et surtout des tables alimentées par les métadonnées (YAML/front matter) de chaque note. La clé de la fiabilité tient à la cohérence des champs : si `type: film` n’est pas présent partout, les requêtes `where type = film` ne retrouveront pas les notes manquantes. Pour gérer des champs multi-valeurs (ex. plusieurs acteurs), `flatten acteur` transforme une table “une ligne par film” en “une ligne par acteur”, tout en répétant le film. Les filtres de texte utilisent `contains`, mais la casse doit être normalisée avec `upper`/`lower` écrits en minuscules. Les champs imbriqués exigent un chemin du type `eval.avis`, et `without ID` aide à produire des tables plus propres.
Pourquoi une requête Dataview peut “oublier” des notes même si elles semblent correspondre ?
Comment passer d’une liste brute de notes à une table exploitable ?
Que faire quand un filtre `contains` échoue à cause des majuscules/minuscules ?
Pourquoi `contains` peut être délicat avec des champs multi-éléments, et quel changement est mentionné ?
Comment accéder à un champ imbriqué dans Dataview ?
Pourquoi utiliser `without ID` et comment améliorer la lisibilité d’une table ?
Review Questions
- Dans quelles conditions une note disparaît-elle d’une requête `where type = film`, et comment vérifier rapidement les notes manquantes ?
- Quel est le rôle de `flatten` quand un champ contient plusieurs valeurs, et pourquoi cela change-t-il le nombre de lignes ?
- Comment construire un filtre `contains` robuste face aux différences de casse, et pourquoi les fonctions `upper`/`lower` doivent-elles être écrites en minuscules ?
Key Points
- 1
Dataview devient réellement utile quand les métadonnées YAML/front matter sont cohérentes et présentes sur toutes les notes concernées.
- 2
Les filtres `where` dépendent strictement de la syntaxe YAML (notamment l’espace après `:`) ; une erreur de format fait disparaître des résultats.
- 3
Pour des champs multi-valeurs (ex. plusieurs acteurs), `flatten` transforme la table en lignes “une valeur par ligne”, en répétant les informations associées.
- 4
Les recherches textuelles avec `contains` doivent gérer la casse via `upper` ou `lower`, et ces fonctions doivent être écrites en minuscules pour éviter les erreurs.
- 5
Les champs imbriqués exigent un chemin complet (ex. `eval.avis`), sinon les colonnes restent vides.
- 6
Les inline fields dans le texte sont plus sensibles à la syntaxe ; des formes comme parenthèses, crochets ou guillemets peuvent être nécessaires pour que Dataview les reconnaisse.
- 7
`without ID` permet de supprimer l’ID technique et d’obtenir des tables plus propres, surtout quand on ajoute des alias de colonnes.