[Obs#30] 更多的Dataview: 動態查詢筆記資料
查詢語法與YAML簡介
Dataview提供類似資料庫的結構化查詢語言(Structured Query Language,SQL)的簡化語法,讓我們可以查詢筆記的詮釋資料(Metadata),將筆記的即時動態透過簡單的語法就能顯示出來。
Dataview使用的詮釋資料主要來自筆記開頭的YAML區域與檔案資訊:
- YAML區:筆記開頭以三個減號夾住的區域,用來定義該篇筆記的屬性(詮釋資料,Metadata)
- YAML欄位:固定欄位有aliases與tags,其他我們可自行定義
- 欄位的值不要使用中括號和井號
- 欄位的值若有多個,用中括號夾住
- YAML輸入完成後,檢視預覽面板是否可正確解析,若顯示(INVALID YAML)則否必須修正
```dataview [TABLE|LIST|TASK] field1, field2, ..., fieldN FROM #tag or "folder" or [[link]] WHERE somefield = somevalue COMMAND argument COMMAND argument ... COMMAND argument ```
相關連結
增強功能
- 查詢來源(from)增加連結
[[link]]
from [[Link]]
: 連結到我的筆記 (Backlink)list from [[note]]
// List all notes which link to[[note]]
from outgoing([[Link]])
: 我的筆記向外連結的筆記list from outgoing([[note]])
// List all notes that[[note]]
links to
- Group by
- Flatten
- 可使用 as 中文欄名了
範例
Todo list/進度管理
1. 特定標籤+Emoji
```dataview table flag as 標示,file.ctime as 建檔時間 from #project-todo ```
2. Group by
用Group by分群。下列用status分成4個群組。分群後產生的陣列是rows。
```dataview table status, rows.file.name as 檔名, rows.file.ctime as 建檔時間 from #project-todo where status group by status ```
3. Flatten
把多個資料攤平逐一顯示。例如一本書有3名作者則顯示成3筆記錄。
```dataview table member,status,flag from #project-todo sort file.name flatten member ```
contains(含有)
▼ 檔名含有特定字串(Obsidian)的筆記
```dataview list from "" where contains(file.name, "Obsidian") ```
▼ 找出按〔Ctrl+V〕貼入的圖檔
```dataview list from "" where contains(file.name, "Pasted ") ```
反向/內部連結
▼ 反向連結:指向from的筆記
```dataview table file.ctime as "建檔日期" from [[SmartGit Notes]] ```
▼ 向外連結:from裡使用到的筆記
```dataview table file.ctime as "建檔日期" from outgoing([[SmartGit Notes]]) ```
日期比對
- now, today, yesterday, tomorrow等只能放在date()裡
- 日期與日期比較
``` where file.mtime >= date(yesterday) ```
- 3天內修改的筆記: 使用dur函數
``` where date(today) - file.mtime <= dur(3 days) ```
- 範例將#project-todo改成 "" 就可查詢整個儲存庫。
1. 今日修改的檔案
```dataview table file.mtime from #project-todo WHERE file.mtime >= date(today) - dur(1 day) ```
2. 三天內建立的筆記
```dataview table file.ctime from #project-todo where file.ctime >= date(today) - dur(3 days) sort file.mtime desc ```
3. 今年新建立的筆記
```dataview table file.ctime from #project-todo where file.ctime.year = date(today).year ```
4. 建檔迄今過了多少時間
```dataview table file.ctime, date(now)-(file.ctime) as 迄今時數 from #project-todo sort date(today)-(file.ctime) ```
教學影片
##
您可能也會有興趣的類似文章
- [Obs#26] Dataview外掛: 製作索引筆記利器;動態查詢筆記資料 (6則留言, 2021/02/19)
- Obs135|解鎖簡易Dataview查詢:驚人的SQL技巧,使用Query All The Things(QATT)外掛 (0則留言, 2023/08/19)
- Obsidian 1.0新手教學—打造個人知識管理利器,專屬的第二大腦 (2022年) (4則留言, 2022/10/22)
- Obs138|以標籤為基底,用Dataview形成索引筆記的嘗試 (0則留言, 2023/09/03)
- [Obs#46] 筆記整理─找出孤兒(Orphans)和缺少標籤的筆記的 4 個方法 (0則留言, 2021/08/14)
- [Obs#115]用Obsidian建立萬用的收藏資料庫(Collections);善用Minimal Theme與Dataview (0則留言, 2023/02/26)
- Obsidian常見問題011:Dataview如何顯示本地圖片? (0則留言, 2023/03/08)
- Obs133 | Properties (Obsidian 1.4)! 視覺化YAML編輯,讓Frontmatter可用性又向上一階 (0則留言, 2023/07/29)
- Obs130|用Dataviewjs將Dataview表格產生成Markdown格式,並複製到剪貼簿的技巧 (2則留言, 2023/05/20)
- Obs134|用Dataviewjs製作簡單的建檔統計圖-使用Charts外掛 (0則留言, 2023/08/13)
- Obs137|用Dataviewjs讀取CSV資料以繪製統計圖表 (0則留言, 2023/09/03)
- Obs139|5個方便維護Properties的外掛:Linter、TagMany、File Cooker、Tag Wrangler、Templater Hotkeys (0則留言, 2023/09/10)
- Obs126|Obsidian 2023/04 7個新外掛介紹與評析 (0則留言, 2023/04/29)
- [Obs#27] Timelines:時間軸外掛 (0則留言, 2021/03/12)
- Obs140|Obsidian進階全文檢索與複製結果的外掛-Query Control、Better Search View、Float Search、Text Expand、File Cooker (0則留言, 2023/09/15)
Sorry, 很久沒用Google sc…