Obsidian Tutorial 4: Die Dataview Erweiterung

Community-Erweiterungen

Im ers­ten Artikel die­ser Reihe bin ich bereits auf eini­ge der mit­ge­lie­fer­ten Erweiterungen ein­ge­gan­gen. Noch span­nen­der sind jedoch die Community-Erweiterungen. Dieser Bereich muss aller­dings zunächst akti­viert wer­den. Der ent­spre­chen­de Dialog gibt eini­ge Hinweise, die sorg­fäl­tig durch­ge­le­sen wer­den soll­ten. Grundsätzlich könn­ten Entwickler Schindluder mit einer die­ser Erweiterungen trei­ben, daher soll­ten sie nicht aus dubio­sen Quellen instal­liert wer­den. Die Erweiterungen in die­sem offi­zi­el­len Katalog erhal­ten zwar einen ers­ten Code-Review, und da die meis­ten Open Source sind, kann der Code auch ein­ge­se­hen wer­den. Dennoch bleibt immer ein Restrisiko, z.B. dass ein unbe­ab­sich­tig­ter Fehler etwas Schädliches bewirkt. Der Tipp, den die meis­ten Tutorials geben, ist, nur Erweiterungen zu ver­wen­den, die vie­le Downloads haben, und um die­se geht es dann auch hier.

In die­sem Bildschirm (Einstellungen –> Externe Erweiterungen) müs­sen die Community-Erweiterungen akti­viert wer­den.

Nachdem der „Durchsuchen”-Button gedrückt wur­de, wird end­lich den Katalog ange­zeigt. Zunächst gehe ich auf die vier Erweiterungen ein, die ich unten rot mar­kiert habe und wer­de mit der „Dataview” Erweiterung in die­sem Artikel begin­nen.

Dataview

Für die Dataview-Erweiterung ist eine Vault wie eine Datenbank, an die mit einer Abfragesprache Daten gesucht und dar­ge­stellt wer­den kön­nen. Diese Abfragesprache bie­tet eine Vielzahl von Möglichkeiten, auch kom­ple­xes­te Abfragen zu erstel­len. Ich wer­de mich jedoch auf ein­fa­che Abfragen beschrän­ken. Wer tie­fer ein­tau­chen möch­te, dem wer­den die vie­len Videos auf YouTube emp­foh­len und natür­lich die Dokumentation.

Um etwas Spielmaterial zu haben, kann hier eine klei­ne Zip-Datei her­un­ter­ge­la­den wer­den, in dem ein Ordner ver­packt ist mit 10 Markdown Dateien, in denen die Eigenschaften der ein­zel­nen Weine in Property-Listen abge­legt sind. Nach dem Entpacken kann sie ein­fach in den Obsidian-Ordner ver­scho­ben wer­den. Danach soll­te sofort ein Ordner namens „03 Wein” im Datei-Explorer erschei­nen.

Installation

Das Klicken auf die Dataview Kachel star­tet den Installationsprozess, als ers­tes wer­den Detailinformationen zur Erweiterung ange­zeigt, die eini­ge Hinweise für die Verwendung geben. Als nächs­ten Schritt nach­dem der Knopf „Installieren” geklickt wur­de. ändert sich der Bildschirm leicht und statt des „Installieren” Knopf, wer­den nun die Funktionen „Aktivieren” und „Desinstallieren” ange­bo­ten. An die­ser Stelle wird natür­lich „Aktivieren” geklickt und zu guter letzt dann der Knopf Optionen

Screen der Dataview-Erweiterung Detail Ansicht vor der Aktivierung
Die Dataview-Erweiterung muss noch Aktiviert wer­den

Nach die­sen Schritten wird dann der Einstellungsdialog der Dataview-Erweiterung ange­zeigt.

Hier müs­sen noch das Datumsformate ange­passt wer­den, dazu wird etwas run­ter­ge­scrollt, bis zu die­sen bei­den Optionen und die Einstellungen ent­spre­chend ange­passt:

Screen mit den Datumsformat Änderungen in den Dataview-Einstellungen.
Die Datumsformat Änderungen

Die Liste

Mit der Dataview-Erweiterung ist es mög­lich, Abfragen zu erstel­len, die ent­we­der Listen, Aufgabenlisten oder Tabellen zur Darstellung des Ergebnisses nut­zen. Fangen wir mit der Liste an.

Als Spielwiese wird erst ein­mal eine neue Notiz erstellt und z.B. „Dataview Test” genannt.
Wir star­ten mit der ein­fachs­ten Abfrage, bei der Links zu allen Dateien in der Vault gelis­tet wer­den.

```dataview
LIST
```

Wie in der Datenbank Welt üblich wer­den ich ver­su­chen die Abfragebefehle in Großbuchstaben zu Schreiben, was die Übersicht etwas erhöht. In mei­ner klei­nen Vault, die ich zum Schreiben die­ses Tutorials ver­wen­det habe, wer­den im Moment nicht vie­le Dateien ange­zeigt. Es soll­ten aber zumin­dest die Weine zu sehen sein:

Um eine Darstellung wie die im obe­ren Bild zu bekom­men, bei der links die Quellcode-Ansicht und rechts der Lesemodus ange­zeigt wird, wird auf den Tab der offe­nen Notiz mit der rech­ten Maustaste (oder ⌘-Klick oder Ctrl-Klick) geklickt und in dem Menü „Rechts tei­len” aus­ge­wählt. Dadurch wer­den dann zwei Versionen der aktu­el­len Datei ange­zeigt. In der einen Notiz kann die Quellcode-Ansicht ange­zeigt wer­den und in der ande­ren der Lesemodus.

Nun aber zurück zum „list”-Befehl, der noch mehr kann. Dazu ver­än­dern wir ein­fach den vor­he­ri­gen Aufruf. Es wer­de dann viel­leicht im Lesemodus zunächst eini­ge Fehlermeldungen ange­zeigt, aber sobald der kor­rek­te Ausdruck ein­ge­tippt wur­de, soll­ten die ent­spre­chen­de Liste ange­zeigt wer­den.

Falls man im Live-Preview einen Code-Block bear­bei­ten möch­te, muss der Cursor im Bereich des Code-Blocks ste­hen. Woraufhin oben rechts am Block ein klei­nes Icon erscheint, mit dem der Block in den Editier-Modus geschal­tet wird.

Das nächs­te Beispiel zeigt, wie in der eben erstell­ten Liste neben den Link zur Notiz, auch der Wert eine Eigenschaft ange­zeigt wird (hier der Notiz type )

Wenn das Ziel ist, nur eine Liste mit den Notizen aus dem Ordner „03 Wein” anzu­zei­gen, wird die­ser Ordner hin­ter dem Schlüsselwort FROM defi­niert. Zusätzlich zeigt das Beispiel, wie die Ausgabe mit SORT file.name ASC auf­stei­gend sor­tiert wer­den kann.

Mit der obi­gen Abfrage wer­den aller­dings alle Notizen in dem Ordner ange­zeigt, ein­schließ­lich der Notiz „Keine Weindatei!”. Da in den Wein Notizen die Eigenschaft type = wein defi­niert ist, kann der type für die Abfrage genutzt wer­den. Auf die­se Weise wer­den nur Weine als Ergebnis ange­zeigt. Wenn die Angabe des Ordners weg­ge­las­sen wer­den wür­de, wür­den alle Notizen im gesam­ten Vault gefun­den wer­den, in denen die Eigenschaft type = wein defi­niert ist. Hier also die Abfrage mit dem Zusatz WHERE type = wein:

Wenn die Eigenschaft als Wert eine Liste hat, wie bei den Weinen die Eigenschaft rebe, dann muss die Abfrage etwas anders gestal­tet wer­den:

Abfrage Syntax ist im Prinzip nicht schwer, aber da man sie wohl nie so oft ver­wen­det, kann es eine gute Idee sein, sich für sol­che Dinge auch Notizen im der Vault machen.

Mit ein biß­chen Übung und Nachlesen, kön­nen auch kom­ple­xe­re Erbnisse erreicht wer­den:

Die LIST-Abfrage bie­tet eine gute Möglichkeit, Notizen zu erstel­len, die alle Notizen mit bestimm­ten einer Ausprägung einer Eigenschaft oder die bestimm­te „Tags” ent­hal­ten anzei­gen. Für so eine Notiz wird oft der Ausdruck „MOC” ver­wen­det, was für „Map of Content” steht. Im Prinzip ist ein „MOC” ein Ersatz oder eine Ergänzung Ordner. In einem „MOC”-Übersicht kön­nen Notizen aus ver­schie­de­nen Ordnern stam­men und trotz­dem als zu einer defi­nier­ten Kategorie ange­hö­rig ange­zeigt wer­den. So könn­ten Notizen auch in zwei oder mehr „MOC”-Übersichten ange­zeigt wer­den, was in einer Ordnerstruktur nur durch Kopieren der Datei erreicht wer­den kann.

Notizen kön­nen auch mit einer ande­ren Syntax nach „Tags” gesucht wer­den. Dabei ist es dann auch nicht rele­vant, ob die­se in den Properties unter tags auf­ge­führt sind oder mit dem # mar­kiert sind.

Im nächs­ten Beispiel habe ich der Einfachheit hal­ber den Tag #hugo als Beispiel in die „Dataview Test”-Notiz geschrie­ben. Die Suche nach list from #hugo lis­tet dann genau die­se Notiz auf. Falls noch ande­re Notizen in der Vault ent­we­der in den Properties oder im Fleißtext exis­tie­ren, kön­nen die­se eben­so gesucht wer­den. Im Moment habe ich in mei­ner Vault nur die Artikel die­ser Reihe in den Properties getaggt, die dann eben­so wie #hugo mit einer Suche auf­ge­lis­tet wer­den. In dem Beispiel habe ich #hugo OR #obsidian. Der drit­te Aufruf in dem Beispiel dient dazu, wenn nur in den „Tags” in den Properties gesucht wer­den soll.

In einer Tabelle kön­nen die Ergebnisse einer Abfrage oft etwas über­sicht­li­cher dar­ge­stellt wer­den als in einer Liste. Daher bie­tet die Dataview-Erweiterung auch die Option, die Ergebnisse als Tabelle dar­zu­stel­len. Das nächs­te Beispiel zeigt eine Tabelle aller Notizen vom type = wein, wobei die Eigenschaften rebe und winzer als Tabellenspalten ange­zeigt wer­den.

Da die Benennung der Spalten durch die tech­ni­schen Namen geschieht, bie­tet die Dataview-Erweiterung die Möglichkeit die­sen Namen durch die Option AS zu ersetz­ten. Die ers­te Spalte ist aller­dings die ID der Notiz, die nur ver­steckt wer­den kann. Wenn in der ers­ten Spalte als „Wein” und der Link zur Notiz ange­zeigt wer­den sol­len, muss statt­des­sen die­se Spalte als file.link AS Weindefi­niert wer­den. So wür­de eine ent­spre­chen­de Anfrage und die Tabelle aus­se­hen, wobei sie Abfrage auf die roten Weine ein­ge­schränkt ist. ‘

Ansonsten gibt es vie­le Ähnlichkeiten zwi­schen Listen und Tabellen, was und wie abge­fragt wird. Wie in den Beispielen zu sehen ist, kann die Dataview-Erweiterung auch auf ande­re Metadaten einer Notiz zugrei­fen, wie z.B. den Namen der Datei, den Link zur Datei, das Erstellungs- oder letz­te Änderungsdatum und vie­les mehr. Es ist auch mög­lich, Abfragen „inline” im Text einer Notiz zu defi­nie­ren. Ich nut­ze z.B. in mei­nen Notizen als Fußzeilen die fol­gen­den Abfragen (natür­lich in den Vorlagen defi­niert):

---
erstellt:  `=dateformat(this.file.ctime, "DDDD HH:mm")`
letzte Änderung: `=dateformat(this.file.mtime, "DDDD HH:mm")`
Ordner: `=this.file.folder`  

Was dann so im Lese-Modus ange­zeigt wird:

Beispiel für eine Inline Dataview-Abfrage
Beispiel für eine Inline Dataview-Abfrage

Aufgaben

Die Dataview-Erweiterung kann auch dazu genutzt wer­den, Aufgaben aus ver­schie­de­nen Notizen in einer Notiz zusam­men zu füh­ren und so einen Überblick zu schaf­fen,. wel­che Aufgaben noch offen sind, die z.B. in den täg­li­chen Notizen defi­niert wer­den kön­nen. Die Syntax für eine Aufgabe ist:

- [ ] Dies ist eine Aufgabe 
- [x] Dies ist eine erledigte Aufgabe
- [ ] Dies ist eine Aufgabe mit einer Variablen [fällig:: 19.10.2023]
Verschiedenen Modi einer Aufgabe
Verschiedenen Modi einer Aufgabe

Im ers­ten Beispiel im nächs­ten Bild wer­den alle Aufgaben mit der Abfrage TASK ange­zeigt, auch die­je­ni­gen ohne Text aus dem Vorlagenordner.

Das zwei­te Beispiel zeigt nur die Aufgaben an, die bereits erle­digt sind, also completed. Die offe­nen Aufgaben wür­den mit der Option !completed auf­ge­lis­tet. Das ! steht dabei für ein logi­sches „nicht”. Eine Aufgabe kann auch direkt in die­ser Übersicht auf „erle­digt” gesetzt wer­den, indem auf die Checkbox geklickt wird. Wenn man das in die­sem Beispiel macht, dau­ert es eini­ge Augenblicke, und die geklick­te Aufgabe wan­dert in den unte­ren Teil.

Wenn der Aufgaben-Text geklickt wird, öff­net sich die Notiz, in der die Aufgabe ein­ge­ge­ben wur­de.

Im nächs­ten Bild wer­den zunächst alle nicht erle­dig­ten Aufgaben der Notizen im Ordner „Tägliche Notizen” auf­ge­lis­tet, grup­piert den täg­li­chen Notizen. Das let­ze Beispiel fil­tert die Anzeige der Aufgaben nach dem Wert der Variablen fällig = "19.10.2023", die an der Aufgabe defi­niert wur­de.


Mit Hilfe die­ser Abfragen, ist es durch­aus mög­lich eine rudi­men­tä­re Aufgabenverwaltung sich zusam­men zu stel­len. DIe Abfragen, auch bei den Liste oder Tabellen kön­nen durch­aus kom­plex defi­niert wer­den. Es lohnt sich sicher­lich die Dokumentation zu lesen. Aber es rei­chen oft die hier gezeig­ten Beispiele um eine gute Übersicht über die Daten zu bekom­men

Mit Hilfe die­ser Abfragen ist es durch­aus mög­lich, eine rudi­men­tä­re Aufgabenverwaltung zusam­men­zu­stel­len. Die Abfragen, sowohl bei Listen als auch bei Tabellen, kön­nen durch­aus kom­plex defi­niert wer­den. Es lohnt sich sicher­lich, die Dokumentation zu lesen, aber oft rei­chen die hier gezeig­ten Beispiele aus, um eine gute Übersicht über die Daten zu bekom­men.

Kalender

Ein klei­nes Gimmick, das ich auch erst im Rahmen die­ser Artikel Reihe ent­deckt habe habe, ist die Kalenderanzeige. In dem Beispiel wer­den in dem Kalender die Dateien, die an einem bestimm­ten Datum erstellt wur­den, als Punkt ange­zeigt. Der Tag ist zwar anklick­bar und öff­net dann eine Notiz, aller­dings habe ich nicht her­aus­be­kom­men, wel­che Notiz das am Ende ist. Zum Vergleich habe ich auch mal alle Notizen, die am 18.10.2023 erstellt wur­den, als Tabelle gelis­tet. Ich wer­de noch auf die Calendar Community-Erweiterung ein­ge­hen, daher habe ich die­sen Kalender nur erwähnt, weil es ihn gibt. 😉

Lob, Kritik, Korrekturen – ich fin­de alles toll. Schreib es in die Kommentare!

6 Antworten zu „Obsidian Tutorial 4: Die Dataview Erweiterung“

  1. Wunderbar, hab Obisidian schon eini­ge Zeit, aber Dataview hab ich jetzt erst ver­stan­den nach dei­ner guten Beschreibung. Dank dir dafür

    1. Danke für Dein Feedback!

  2. Heute habe ich mich an mei­ne Obsidian Installation gewagt und dann noch etwas im Internet gesucht und bin über Deinen Beitrag gestol­pert. Vielen Dank für die reich­li­chen Beispiele.

    1. Vielen Dank für das Feedback! Ich hof­fe mei­ne klei­nes Tutorial hilft etwas, den Einstieg zu ver­ein­fa­chen. Ich glau­be wich­tig ist, dass man sich nicht in den Möglichkeiten ver­liert, son­dern ein­fach anfängt sei­ne Notizen zu erfas­sen.

  3. Vielen Dank, das ist eine bes­ten (weil kurz und klar) Beschreibungen, die ich bis­her über data­view list und table gefun­den habe. Kannst du mir viel­leicht bei fol­gen­dem Problem hel­fen?
    Ich erzeu­ge fol­gen­de Tabelle:
    „ ‘data­view
    TABLE wit­hout ID JahrAnfang as Anfang, JahrEnde as Ende, file.link as Ereignis, Untertitel as Kommentar
    WHERE JahrAnfang != null
    Sort JahrAnfang asc
    „ ‘
    Nun möch­te ich zusätz­lich, das Anfang (Zahlen) abwei­chend vom Standard rechts aus­ge­rich­tet wer­den.

    Karl

    1. Hallo Karl,

      dan­ke für das Lob. Ich nut­ze Dataviews out of the box, daher bin ich kein Experte für sol­che „Spezialfälle”, wobei Zahlen die rechts aus­ge­rich­tet sind eigent­lich nor­mal sein soll­ten. Ich müss­te da auch etwas for­schen. Hast Du schon in das Obsidian Forum geschaut?

      Gruß Leif

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert