--- title: Obsidian Dataview category: Summary type: Tool/Plugin source: https://github.com/blacksmithgu/obsidian-dataview date: 2026-02-23 tags: [obsidian, dataview, plugin, query, database] --- # Obsidian Dataview **URL:** https://github.com/blacksmithgu/obsidian-dataview **Description:** A data index and query language over Markdown files for Obsidian **Date Summarized:** 2026-02-24 --- ## tl;dr Treat your Obsidian Vault as a **database** that you can query. Query, filter, sort, and extract data from Markdown pages using YAML frontmatter and inline fields. --- ## What It Does Dataview generates data from your vault by pulling information from: 1. **Markdown Frontmatter** — YAML at the top of documents: ```yaml --- alias: "document" last-reviewed: 2021-08-17 rating: 8 status: active --- ``` 2. **Inline Fields** — Key:: Value syntax in documents: ```markdown Basic Field:: Value **Bold Field**:: Nice! You can also write [field:: inline fields] (field2:: hidden field) ``` --- ## Query Modes ### 1. Dataview Query Language (DQL) Pipeline-based, SQL-like expressions: ```dataview TABLE file.name AS "File", rating AS "Rating" FROM #book SORT rating DESC ``` ### 2. Inline Expressions Embed directly in markdown: `= this.file.name` → shows filename ### 3. DataviewJS JavaScript for complex logic: ```dataviewjs for (let group of dv.pages("#book") .where(p => p["time-read"].year == 2021) .groupBy(p => p.genre)) { dv.header(3, group.key); dv.table(["Name", "Rating"], group.rows .sort(k => k.rating, 'desc') .map(k => [k.file.link, k.rating])) } ``` --- ## Example Use Cases **Table of games with metadata:** ```dataview TABLE time-played, length, rating FROM "games" SORT rating DESC ``` **List by tags:** ```dataview LIST FROM #game/moba or #game/crpg ``` **Tasks from active projects:** ```dataview TASK FROM #projects/active ``` **Books read in 2021, grouped by genre:** ```dataviewjs for (let group of dv.pages("#book") .where(p => p["time-read"].year == 2021) .groupBy(p => p.genre)) { dv.header(3, group.key); dv.table(["Name", "Time Read", "Rating"], group.rows.sort(k => k.rating, 'desc') .map(k => [k.file.link, k["time-read"], k.rating])) } ``` --- ## Key Features - ✅ Query any Markdown files in your vault - ✅ Filter by tags, folders, metadata - ✅ Sort by any field - ✅ Group results - ✅ Render as tables, lists, or tasks - ✅ JavaScript API for complex logic - ✅ Inline fields for hidden metadata - ✅ Automatic data index updates --- ## Potential Uses for Corey's Vault 1. **Home Assistant Automations Table** — Query all automations by status 2. **Projects Dashboard** — Active vs completed projects 3. **Daily Notes Query** — Recent entries, completed tasks 4. **Research Summaries** — All `/summarize` outputs by date 5. **Cron Jobs Status** — Active vs disabled jobs --- ## Installation Available in Obsidian Community Plugins: 1. Settings → Community Plugins → Browse 2. Search "Dataview" 3. Install & Enable --- **Full Docs:** https://blacksmithgu.github.io/obsidian-dataview/ --- *Source: https://github.com/blacksmithgu/obsidian-dataview*