📊 Dataview Query Examples
A collection of useful Dataview queries for common searches and dynamic content generation.
🎯 Basic Queries
List All Files in a Folder
LIST
FROM "FolderName"
SORT file.name ASCTable of Recent Files
TABLE
dateformat(file.mtime, "yyyy-MM-dd HH:mm") AS "Modified",
file.size AS "Size"
WHERE file.mtime > date(today) - dur(7 days)
SORT file.mtime DESCFiles by Tag
LIST
WHERE contains(file.tags, "tagname")
SORT file.name ASC📅 Date-Based Queries
Files Created This Week
TABLE WITHOUT ID
link(file.name, file.name) AS "File",
dateformat(file.ctime, "yyyy-MM-dd") AS "Created"
WHERE file.ctime > date(today) - dur(7 days)
SORT file.ctime DESCMonthly Archive
TABLE WITHOUT ID
dateformat(file.day, "MMMM yyyy") AS "Month",
length(rows) AS "Notes"
FROM "DailyNotes"
GROUP BY dateformat(file.day, "yyyy-MM")
SORT dateformat(file.day, "yyyy-MM") DESCUpcoming Deadlines
TABLE WITHOUT ID
link(file.name, file.name) AS "Task",
deadline AS "Due Date"
WHERE deadline > date(today)
SORT deadline ASC🏷️ Tag Analysis
Tag Frequency
TABLE WITHOUT ID
tag AS "Tag",
length(rows) AS "Count"
FROM ""
FLATTEN file.tags AS tag
GROUP BY tag
SORT length(rows) DESCMulti-Tag Search
LIST
WHERE contains(file.tags, "tag1") AND contains(file.tags, "tag2")Files Without Tags
LIST
WHERE !file.tags OR length(file.tags) = 0🔗 Link Analysis
Most Linked Pages
TABLE WITHOUT ID
link(file.name, file.name) AS "Page",
length(file.inlinks) AS "Backlinks"
WHERE length(file.inlinks) > 0
SORT length(file.inlinks) DESC
LIMIT 10Orphaned Pages
LIST
WHERE length(file.inlinks) = 0 AND
length(file.outlinks) = 0 AND
file.name != this.file.nameLink Network
TABLE WITHOUT ID
link(file.name, file.name) AS "Page",
length(file.inlinks) AS "In",
length(file.outlinks) AS "Out",
length(file.inlinks) + length(file.outlinks) AS "Total"
SORT length(file.inlinks) + length(file.outlinks) DESC
LIMIT 20📝 Content Queries
Files with Code Blocks
TABLE WITHOUT ID
link(file.name, file.name) AS "File",
length(filter(split(file.content, "```"), (x) => true)) - 1 AS "Code Blocks"
WHERE contains(file.content, "```")
SORT length(filter(split(file.content, "```"), (x) => true)) DESCSearch Content
LIST
WHERE contains(file.content, "search term")Files by Word Count
TABLE WITHOUT ID
link(file.name, file.name) AS "File",
length(split(file.content, " ")) AS "Words"
SORT length(split(file.content, " ")) DESC
LIMIT 10✅ Task Management
All Open Tasks
TASK
WHERE !completed
GROUP BY file.nameTasks by Priority
TABLE WITHOUT ID
text AS "Task",
priority AS "Priority",
link(file.name, file.name) AS "File"
FROM ""
FLATTEN file.tasks AS task
WHERE !task.completed
SORT task.priority DESCTask Statistics
TABLE WITHOUT ID
file.name AS "File",
length(filter(file.tasks, (t) => t.completed)) AS "Done",
length(filter(file.tasks, (t) => !t.completed)) AS "Pending",
round(length(filter(file.tasks, (t) => t.completed)) / length(file.tasks) * 100) AS "Progress %"
WHERE file.tasks📊 Metadata Queries
Custom Frontmatter Fields
TABLE
status AS "Status",
project AS "Project",
priority AS "Priority"
WHERE status OR project OR priorityFiles by Type
TABLE WITHOUT ID
type AS "Type",
length(rows) AS "Count"
FROM ""
WHERE type
GROUP BY typeMissing Metadata
LIST
WHERE !file.tags OR !type OR !status🔄 Dynamic Lists
Related to Current File
LIST
FROM
WHERE file.name != this.file.nameSimilar Tags
LIST
WHERE any(file.tags, (t) => contains(this.file.tags, t)) AND
file.name != this.file.nameRecent History
TABLE WITHOUT ID
link(file.name, file.name) AS "File",
dateformat(file.mtime, "yyyy-MM-dd HH:mm") AS "Modified"
WHERE file.mtime > date(today) - dur(24 hours) AND
file.name != this.file.name
SORT file.mtime DESC📈 Analytics Queries
Activity Heatmap Data
TABLE WITHOUT ID
dateformat(file.mtime, "yyyy-MM-dd") AS "Date",
length(rows) AS "Edits"
FROM ""
WHERE file.mtime > date(today) - dur(30 days)
GROUP BY dateformat(file.mtime, "yyyy-MM-dd")Folder Statistics
TABLE WITHOUT ID
file.folder AS "Folder",
length(rows) AS "Files",
sum(rows.file.size) AS "Total Size"
FROM ""
GROUP BY file.folder
SORT length(rows) DESCGrowth Over Time
TABLE WITHOUT ID
dateformat(file.ctime, "yyyy-MM") AS "Month",
length(rows) AS "New Files",
length(filter(rows, (r) => r.file.ctime)) AS "Total"
FROM ""
GROUP BY dateformat(file.ctime, "yyyy-MM")
SORT dateformat(file.ctime, "yyyy-MM") ASC🎨 Advanced Queries
Conditional Formatting
TABLE WITHOUT ID
link(file.name, file.name) AS "File",
choice(priority = "high", "🔴 High",
choice(priority = "medium", "🟡 Medium",
choice(priority = "low", "🟢 Low", "⚪ None"))) AS "Priority"
WHERE priorityComplex Filtering
LIST
WHERE (contains(file.tags, "important") OR priority = "high") AND
file.mtime > date(today) - dur(7 days) AND
!completedCalculated Fields
TABLE WITHOUT ID
link(file.name, file.name) AS "File",
dur(date(today) - file.ctime).days AS "Age (days)",
round(file.size / 1024, 2) AS "Size (KB)"
SORT dur(date(today) - file.ctime).days DESC💡 Tips for Writing Queries
Performance Optimization
- Use
LIMITto restrict results - Filter early with
WHEREclauses - Avoid complex calculations in large datasets
Common Functions
contains()- Check if string/array contains valuelength()- Count items in arrayfilter()- Filter array by conditiondateformat()- Format datesround()- Round numberschoice()- Conditional logic
Query Structure
[QUERY TYPE]
[FIELDS]
FROM [SOURCE]
WHERE [CONDITIONS]
GROUP BY [GROUPING]
SORT [SORTING]
LIMIT [NUMBER]
Copy and modify these examples for your specific needs. Remember to adjust folder names, tags, and field names to match your vault structure.