Skip to main content
  1. Posts/

Getting started with Obsidian Dataview: a beginner's guide

·1162 words·6 mins·
Table of Contents

Obsidian’s strength is plain-text Markdown. Its weakness, once your vault grows past a few hundred notes, is that the same plain-text simplicity makes it hard to ask questions across notes. The Dataview plugin closes that gap. It lets you query your vault like a database: generated lists, tables, and task views that update themselves as your notes change.

This post is aimed at beginners. It covers what Dataview is, how to install it, the basics of writing queries, and how I use it inside a working set of templates for tracking people, meetings, and daily notes. If you want to skip ahead and clone the working setup, my obsidian-starter repo has every template, plugin config, and vault layout this post references.

The plugin stack
#

Dataview doesn’t stand alone. The setup that makes it sing has three companions:

  • Dataview itself. The query engine.
  • Templater. Parameterizes templates with date math and dynamic title insertion. Every template snippet in this post uses Templater syntax (<% tp.file.title %> and friends).
  • Periodic Notes. Replaces Obsidian’s core Daily Notes plugin with daily, weekly, and monthly note support. Pairs cleanly with Dataview queries that walk the time hierarchy.
  • Calendar. Sidebar calendar for jumping between periodic notes. The obsidian-starter repo’s README covers the install order and the specific settings I recommend for each. Get those configured first; everything below assumes they’re in place.

Installing Dataview
#

If you skip the starter repo and want only Dataview:

  1. Open Obsidian Settings.
  2. Navigate to Community Plugins.
  3. Click Browse and search for Dataview.
  4. Click Install, then Enable.

In Dataview Settings, I keep these on:

  • Automatic task completion tracking
  • Use emoji shorthand for completion
  • Recursive sub-task completion
  • Enable inline Dataview (so you can use = queries mid-paragraph)

I leave DataviewJS off. The plain query language covers everything below and most of what you’ll want.

Dataview basics
#

Dataview supports three main output types.

Tables for structured data:

table title, author, rating
from "Books"
where rating >= 4
sort rating desc

Lists for showing related notes:

list from "Projects" where status = "Active"

Tasks to pull checkbox items from across the vault:

task from "Work" where contains(text, "deadline")

Each query lives inside a code block tagged ```dataview. The query runs every time the note is opened, so the view is always current.

Now to the patterns I actually use day to day.

The simplest pattern: a Map of Contents
#

Before the multi-query templates, start with one Atlas page per category. My vault has Atlas/People Map.md and Atlas/Meetings Map.md. Each one is a single Dataview block:

table without id 
file.link as "Name", company as "Company", role as "Role", location as "Location"
from "People"
sort file.link asc

The result is a live table of every note inside the People folder, sorted alphabetically, with columns pulled from frontmatter fields. Drop in a Person note with company:, role:, and location: filled out, and it appears in the Map automatically. Delete a person, and they’re gone.

If you take nothing else from this post, the Map-of-Contents pattern is the highest-value Dataview move. It works for People, Meetings, Books, Recipes, Tasks, Projects, anything you’d otherwise maintain as a hand-written index. Write the query once, get the live view forever after.

The Person template
#

The Person template is where Dataview earns its keep. It pulls three views together: every note that mentions this person, every outstanding task that names them, and every meeting they participated in.

Here’s the template (source):

---
company: 
team: 
role: 
location: 
email:
aliases:
---
# [[<% tp.file.title %>]]

## Details
- **Preferred Pronouns:** 
- **Interests:** 
- **Pets:** 

## Mentions
```dataview
TABLE without id
file.link as "Note", file.cday as "Date"
FROM !"Templates" AND !"Meetings"
where contains(file.outlinks, [[]])
SORT file.cday DESC
```

## Tasks
```dataview
task
where contains(text, "<% tp.file.title %>")
```

## Meetings
```dataview
TABLE without id
file.link as "Meeting", file.cday as "Date"
FROM "Meetings" 
where contains(file.outlinks, [[]])
SORT file.cday DESC
```

All three queries use the same idea: Dataview’s [[]] shorthand for “the current note” lets each query find anything that wikilinks back here.

  • Mentions walks every note outside Templates and Meetings and returns any note whose outlinks include this person. If you wikilink them in a daily note, a project doc, or another person’s note, it shows up here.
  • Tasks finds every checkbox item across the vault whose text contains the person’s name. Helpful for “what am I supposed to follow up on with this person.”
  • Meetings scopes the same outlinks check to the Meetings folder so meetings get their own section, separate from the broader Mentions list.

All three work the moment you start using the template. No special inline fields, no extra frontmatter to maintain. Wikilinks are the source of truth.

The Meeting template
#

The Meeting template (source) is bare-bones, and that’s the point:

# [[<% tp.file.title %>]]

## Participants
- 

## Agenda
- 

## Notes
- 
  
## Action Items
- [ ]

The trick is in the Participants list. Type - [[, pick the person from Obsidian’s link suggestions, and the wikilink populates. That outlink is what the Person template’s Meetings query finds via file.outlinks. No frontmatter field to maintain. No participants list to keep in sync. The wikilinks are the source of truth.

Action Items use a Markdown checkbox so the Tasks query in the Person template picks them up too, even months after the meeting.

Wiring it up: wikilink people in your daily notes#

For the Mentions query to find anything, you need to wikilink people somewhere in your daily notes (or any note outside Templates and Meetings). A daily note that drops a few wikilinks will populate every named person’s Mentions table on the next refresh:

# 2025-01-29

## Field Notes
- Had a great discussion with [[Alice Johnson]] about the project timeline
- Sent follow-up emails to [[Bob Smith]] on feature requests
- [[Charlie Lee]] mentioned a book recommendation

No inline fields. No frontmatter. The link is the signal. Open Alice Johnson’s Person note tomorrow and this daily note will be in her Mentions list with the correct date.

The same pattern works for project notes, planning docs, anything you write. If you reference a person, drop the wikilink. Their Person page will surface it.

Closing notes
#

If you’re new to PKM in Obsidian, Dataview is the single plugin that most changes what’s possible. It removes the manual maintenance work that quietly erodes most note-taking systems. The broken links, the stale indexes, the lists you stopped updating six months ago. Dataview replaces them with views that maintain themselves.

Start with the Map of Contents pattern. Add one Person, one Meeting, and one daily note with a wikilink back to the person. Watch the views populate. Once you’re comfortable, the advanced queries (date-range filters, tag grouping, vault-wide dashboards) open up from the same foundation.

The obsidian-starter repo has the full setup as a clone-and-go starting point.


Additional resources
#

Chandler Thompson
Author
Chandler Thompson
Perpetual Hobbyist.

Related