Tutoriel Dataview

Tutoriel inspiré par Obsidian Rocks : https://obsidian.rocks/dataview-in-obsidian-a-beginners-guide/

Vous pouvez vous aider de https://s-blu.github.io/basic-dataview-query-builder/ pour bâtir vos requêtes.

Installer le module Dataview

Aller dans Paramètres > Modules complémentaires > Activer les modules complémentaires (si c’est la première fois que vous installez un module communautaire) > Parcourir > chercher Dataview et cliquer sur Installer > cliquer sur Activer.

Types d’informations que l’on peut requêter

Les requêtes Dataview peuvent porter sur :

  • les propriétés (en-tête YAML)
  • les tâches
  • les items en listes
  • le chemin et le nom des notes
  • les liens entrants (inlinks) et liens sortants (outlinks)
  • la taille des notes (en octets)
  • les dates de création et de modification des notes
  • les champs en ligne

Un champ en ligne permet d’insérer une information requêtable directement dans le corps de la note. Elle est utile quand cette information ne concerne pas la note dans son ensemble (contrairement à la propriété de l’en-tête).

Syntaxe : Propriété:: Valeur

Pour cacher cette syntaxe il faut écrire Faire ce devoir avec (Qui:: Isabelle) qui s’affichera Faire ce devoir avec Isabelle.

Première requête en Dataview Query Language

```dataview
LIST 
```

crée un index de toutes vos notes Obsidian.

Filtrer les notes à afficher

FROM

On peut restreindre la requête à un dossier :

```dataview
LIST FROM "Cours"
```

ou un tag :

```dataview
LIST FROM #outil
```

Il est aussi possible d’exclure un tag avec la syntaxe -#tag et d’exlure un dossier avec la syntaxe -"Dossier".

WHERE

On peut choisir de filtrer sur un champ :

```dataview
LIST
WHERE Qui = "Isabelle"
```

Qui est un champ en ligne que vous avez créé (les champs en ligne sont déterminés par l’utilisateur uniquement).

C’est la commande WHERE qui permet d’exclure les notes qui ne remplissent pas le(s) condition(s) voulue(s).

La commande WHERE s’applique à l’ensemble des champs requêtables, à savoir :

Nom du champ Type de données Description
file.name Texte Le nom de la note.
file.folder Texte Le chemin du dossier dans lequel se trouve la note.
file.path Texte Le chemin complet de la note, y compris le nom du fichier.
file.ext Texte L’extension de la note, généralement md.
file.link Lien Un lien vers la note.
file.size Nombre La taille (en octets) de la note.
file.ctime Date avec heure La date à laquelle la note a été créée.
file.cday Date La date à laquelle la note a été créée.
file.mtime Date avec heure La date à laquelle la note a été modifiée pour la dernière fois.
file.mday Date La date à laquelle la note a été modifiée pour la dernière fois.
file.tags Liste Une liste de tous les tags uniques dans la note. Les sous-tags sont indexés pour chaque niveau, par exemple #Tag/1/A sera indexé comme [#Tag, #Tag/1, #Tag/1/A].
file.etags Liste Une liste de tous les tags explicites dans la note ; contrairement à file.tags, elle ne décompose pas les sous-tags, c’est-à-dire [#Tag/1/A].
file.inlinks Liste Une liste de tous les liens entrants vers cette note, c’est-à-dire toutes les notes contenant un lien vers cette note.
file.outlinks Liste Une liste de tous les liens sortants de cette note, c’est-à-dire tous les liens que la note contient.
file.aliases Liste Une liste de tous les alias pour la note tels que définis via l’en-tête YAML.
file.tasks Liste Une liste de toutes les tâches dans la note.
file.lists Liste Une liste de tous les éléments de liste dans le fichier (y compris les tâches).
file.day Date Disponible uniquement si le fichier contient une date dans son nom de fichier (sous la forme yyyy-mm-dd ou yyyymmdd), ou s’il contient une propriété ou un champ Date.

Pour manipuler des dates (champs file.day, file.ctime, file.cday, file.mtime, file.mday) il est généralement utile de les comparer à la date du jour. Par exemple

```dataview
LIST
WHERE file.mtime >= date(today) - dur(1 week)
```

exclut les fichier qui n’ont pas été modifiés dans la semaine écoulée (littéralement : la requête ne garde que les fichiers dont la dernière modification est postérieure à la date du jour moins 1 semaine).

Toutes les options permettant de manier les dates et les durées sont décrites dans la documentation Dataview.

LIMIT

Pour n’afficher que les 5, 10, 20 premiers résultats, il est possible d’utiliser la commande LIMIT 5 ou LIMIT 10 etc.

Choisir ce qu’on veut afficher

L’affichage des résultats peut prendre quatre formes :

  • une liste
  • un tableau
  • une liste de tâches
  • un calendrier

LIST

Toutes les requêtes jusqu’ici utilisaient la commande LIST, qui affiche les résultats (c’est-à-dire les noms des notes) sous forme de liste à puces.

Il est possible de compléter le nom des notes en affichant le chemin des dossiers par exemple :

```dataview 
LIST file.folder
```

TABLE

La commande TABLE affiche les résultats de la requête sous forme de tableau, avec une ou plusieurs colonnes. Par exemple, la requête ci-dessous affiche la liste des notes sous la forme d’un tableau avec une unique colonne :

```dataview
TABLE
```

Pour avoir plusieurs colonnes, il suffit de spécifier les colonnes à afficher en les séparant par une virgule :

```dataview
TABLE file.cday, file.folder, file.tags
```

Il est également possible de modifier l’en-tête des colonnes en précisant :

```dataview
TABLE file.cday AS "Date de création", file.folder AS Dossier, file.tags as Tags
```

Et il est possible de modifier la première colonne (par défaut le nom des notes) avec la commande TABLE WITHOUT ID :

```dataview
TABLE WITHOUT ID
file.link AS Note, file.cday AS "Date de création", file.folder AS Dossier, file.tags as Tags
```

TASK

La commande TASKretourne des tâches et non pas des pages. Ces tâches se comportent comme des tâches classiques et à l’inverse des autres requêtes, celle-ci fait plus qu’afficher des informations, et permet de les modifier :

```dataview
TASK
```

ou

```dataview
TASK
WHERE !completed AND contains(tags, "#urgent")
```

CALENDAR

La commande CALENDAR affiche un calendrier sur lequel chaque note est représentée par un point. Par conséquent, la requête doit préciser le champ de type date qui est pris en compte :

```dataview
CALENDAR file.ctime
```

Si tous les résultats de la requête ne possèdent pas ce champ de type date (ici file.ctime) alors le calendrier ne s’affiche pas.

Trier ou grouper les résultats à afficher

SORT

La commande SORT permet de trier les résultats à afficher selon un ou plusieurs champs, dans l’ordre des champs (en cas d’ex-aequo).

Le tri peut se faire dans l’ordre croissant (ASC) ou décroissant (DESC) :

```dataview
TABLE file.cday, file.folder, file.tags
SORT file.name ASC, file.cday DESC
```

GROUP BY

La commande GROUP BY permet d’afficher plusieurs résultats par ligne, une ligne étant créée pour chaque valeur possible :

```dataview
TASK
GROUP BY file.folder
```

Rédigé par Antoine Blanchard en novembre 2023