Przez pierwsze dwa lata w Obsidianie miałem 800 notatek i żadnego sposobu, żeby je przeszukać sensowniej niż przez wbudowane wyszukiwanie tekstowe. Wiedziałem, że gdzieś jest notatka o kliencie X. Wiedziałem, że gdzieś jest lista przeczytanych książek z 2024 roku. Ale dotarcie do tego zajmowało więcej niż napisanie od nowa.

Potem zainstalowałem Dataview. Plugin, który robi z vaultu bazę danych. Notatki to wiersze. Frontmatter to kolumny. Możesz pisać zapytania jak SQL, ale w środku Markdowna.

Dziś moja dashboardowa notatka pokazuje mi: aktywnych klientów, draft posty czekające na publikację, książki, które właśnie czytam, zaległe akcje ze spotkań. Generuje się dynamicznie z reszty vaultu. Zero ręcznej aktualizacji.

Ten post pokaże Ci, jak to działa, jakich zapytań używam i kiedy Dataview jest przesadą.

Co to jest Dataview

Dataview to community plugin do Obsidiana, który traktuje notatki jak rekordy w bazie danych. Każda notatka ma metadane (z frontmattera albo inline w treści), które Dataview indeksuje. Potem piszesz zapytania, które wyciągają z vaultu konkretne zbiory notatek z konkretnymi polami.

Składnia jest podobna do SQL: LIST, TABLE, TASK, CALENDAR, plus FROM, WHERE, SORT, GROUP BY. Jeśli pisałeś kiedyś SQL, opanujesz w godzinę.

Główna różnica w stosunku do prawdziwej bazy: dane są w plikach Markdown, nie w tabeli. Edytujesz notatkę, zapytanie automatycznie się przelicza. Zero importów, zero eksportów, zero synchronizacji między systemami.

Po co Ci to

Najczęstsze use case’y, które widzę u siebie i innych:

  • Dashboard klientów: lista aktywnych zleceń z polami status, termin, kwota
  • Backlog postów: drafty z polami status, priorytet, tagi
  • Książki: co czytasz, co planujesz, oceny, autorzy
  • Tracking nawyków: daily notes z polami sport, sen, focus, generowane zestawienia tygodniowe
  • Notatki ze spotkań: zapytanie po dacie, kliencie, taskach
  • Lista podcastów: co odsłuchałeś, ratingi, najważniejsze cytaty

Jak masz pod 200 notatek, Dataview to overkill. Jak masz nad 500, zaczyna być game changer.

Instalacja i pierwszy widok

  1. Settings → Community plugins → Browse → “Dataview” → Install → Enable
  2. W ustawieniach Dataview włącz “Enable JavaScript Queries” (dla bardziej zaawansowanych rzeczy później)
  3. Stwórz nową notatkę, wklej:
LIST
FROM ""
LIMIT 10

Po zapisaniu zobaczysz listę 10 dowolnych notatek z vaultu. Działa. Reszta to dodawanie filtrów i pól.

Jak nadać notatkom metadane

Dwa sposoby.

Frontmatter (preferowany):

---
client: TechCorp
status: active
priority: high
due-date: 2026-06-15
---

Inline (dla luźniejszych notatek):

status:: active
due-date:: 2026-06-15

Inline jest wygodne, gdy nie chcesz całego frontmattera. Frontmatter jest standardem i działa też z innymi narzędziami (Jekyll na mój digital garden czyta go natywnie).

Mieszanie obu jest legalne i często wygodne. Frontmatter dla głównych pól, inline dla pojedynczych dopisków.

Mój dashboard klientów

W folderze /Klienci/ każda notatka klienta ma template, który opisałem w poście o templates. Frontmatter zawiera client, status, since.

Zapytanie:

TABLE 
  status, 
  since AS "Klient od",
  file.mtime AS "Ostatnia aktualizacja"
FROM "Klienci"
WHERE status = "active"
SORT file.mtime DESC

Wynik to tabela ze wszystkimi aktywnymi klientami, posortowana po ostatniej aktualizacji notatki. Otwieram dashboard, widzę, kogo nie ruszyłem od tygodnia, ping.

Mój backlog postów blogowych

Każdy draft posta na mrellwart.com siedzi w /posts/drafts/ z frontmatterem:

---
status: draft
priority: high
target-date: 2026-05-15
tags: [obsidian, tutorial]
---

Dashboard pisarski:

TABLE 
  status,
  priority,
  target-date AS "Planowana data"
FROM "posts/drafts"
WHERE status != "published"
SORT priority DESC, target-date ASC

Otwieram raz w tygodniu. Wiem dokładnie, co czeka, co priorytetowe, co przeterminowane.

Mój tracker książek

W /Books/ każda książka to notatka z template, który opisałem wcześniej.

Zapytania, których używam:

Co aktualnie czytam:

LIST
FROM "Books"
WHERE status = "reading"

Wszystkie książki tego roku, posortowane po ratingu:

TABLE author, rating, file.cday AS "Skończona"
FROM "Books"
WHERE date(file.cday).year = 2026 AND status = "finished"
SORT rating DESC

Książki po autorze:

TABLE rating, file.cday AS "Czytane"
FROM "Books"
WHERE author = "Cal Newport"
SORT file.cday DESC

Cała moja “biblioteka” jest w 60 notatkach markdown. Nie potrzebuję Goodreads, nie potrzebuję Notion. Wszystko w vault, wszystko zapytane jednym zapytaniem.

Tracking nawyków z daily notes

W moim template’cie daily note mam inline-fieldy:

sport:: tak
sen-godzin:: 7.5
focus-godzin:: 4
mood:: 7/10

Tygodniowe zestawienie:

TABLE 
  sport, 
  sen-godzin AS "Sen", 
  focus-godzin AS "Focus", 
  mood AS "Nastrój"
FROM "daily"
WHERE file.cday >= date(today) - dur(7 days)
SORT file.name DESC

W jednej tabeli widzę tydzień i mogę zauważyć korelacje: dni bez sportu = gorszy mood, mało snu = mniej focus. Bez Dataview musiałbym to przeglądać ręcznie notatka po notatce.

TASK queries: zaległe akcje ze spotkań

Każda notatka ze spotkania ma sekcję “Akcje” z checkboxami - [ ]. Dataview umie je wyciągnąć:

TASK
FROM "Meetings"
WHERE !completed
SORT file.cday DESC

Wynik to wszystkie nieukończone akcje ze wszystkich spotkań, z linkami do źródłowych notatek. Mój personalny todo list, który aktualizuje się sam.

Zaawansowane: DataviewJS

Jeśli włączysz JavaScript queries, możesz robić rzeczy, których czysty Dataview nie zrobi. Na przykład custom grupowanie, dynamiczne wykresy, agregacje matematyczne.

Przykład: średni czas snu z ostatniego miesiąca.

const pages = dv.pages('"daily"')
  .where(p => p["sen-godzin"] !== undefined)
  .where(p => p.file.cday >= dv.date("today") - dv.duration("30 days"))

const avg = pages.values.reduce((acc, p) => acc + p["sen-godzin"], 0) / pages.length
dv.paragraph(`Średni sen z 30 dni: ${avg.toFixed(2)}h`)

DataviewJS to JavaScript, więc dla programisty to żaden problem. Dla nieprogramisty: pomiń tę sekcję, czysty Dataview wystarczy na 90% potrzeb.

Najczęstsze pomyłki

Składnia bez backticków. Zapytanie musi być w bloku z trzema backtickami i językiem dataview. Bez tego pokaże się jako tekst.

Pomieszanie field names. Frontmatter używa kebab-case jako konwencji (due-date), ale w zapytaniu musisz odwoływać się dokładnie tak, jak napisałeś. dueDate w polu vs due-date w query = nic nie znajdziesz.

Niedopytany WHERE. WHERE status (bez wartości) sprawdza tylko, czy pole istnieje, nie czy ma jakąś wartość. Zwykle chcesz WHERE status = "active".

Brak FROM. FROM "" znaczy “cały vault”. FROM "Klienci" znaczy “folder Klienci”. Tag-based: FROM #klient. Bez FROM zapytanie nie zadziała.

Zbyt skomplikowane na start. Pierwszy dashboard zrób na 5 minut, z dwoma polami. Potem dorabiaj. Próba zbudowania “idealnego dashboardu” na początku kończy się porzuceniem projektu.

Kiedy Dataview to przesada

Dataview wymaga, żeby notatki miały konsekwentne pola. Jeśli Twój vault jest chaotyczny, najpierw posprzątaj.

Jeśli masz pod 200 notatek, wbudowane wyszukiwanie Obsidiana wystarczy.

Jeśli nigdy nie chciałeś zestawień, raportów, dashboardów, prawdopodobnie nie potrzebujesz Dataview. Pisz notatki, używaj backlinków, wszystko w porządku.

Dataview jest dla osób, które myślą o swoich notatkach jak o systemie informacji. Nie każdy musi tak myśleć. To OK.

Od czego zacząć

  1. Zainstaluj plugin. 30 sekund.
  2. Wybierz jeden use case (klienci, książki, posty, daily notes).
  3. Dodaj 2-3 pola w frontmatter istniejących notatek tego typu.
  4. Napisz pierwszy LIST query, zobacz, że działa.
  5. Po tygodniu dorzuć drugi use case.

Pełna dokumentacja Dataview jest na blacksmithgu.github.io/obsidian-dataview. Najpierw “Query Language Reference”, potem “Functions”. Reszta to przykłady.

Dataview to nie kolejny ozdobny plugin. To zmiana w tym, jak myślisz o swoim vault. Z notatnika na bazę wiedzy, którą da się przepytywać. Kiedy raz przeskoczysz, nie wracasz.