查詢語法與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外掛: 製作索引筆記利器;動態查詢筆記資料 (0則留言, 2021/02/19)
- [Obs#27] Timelines:時間軸外掛 (0則留言, 2021/03/12)
- [Obs#13] 快速開啟筆記的方法:快速切換對話窗與obsidian:// URI 命令行 (0則留言, 2020/10/18)
- TortoiseSVN: 解決TSVNCache佔用CPU過高的設定 (0則留言, 2007/08/21)
- es+fzf:超快速找檔神器-用Everything Search的命令行es.exe,整合fzf的模糊搜尋;WSL也能使用! (0則留言, 2020/03/14)
- [Obs#15] 在筆記裡複製、使用obsidian網址與工作空間的使用 (0則留言, 2020/10/27)
- espanso Forms 表單熱字串替換-用對話窗輸入常用文字 (0則留言, 2020/09/27)
- [Obs#16] 使用區塊代碼以快速跳轉位置的方法 (0則留言, 2020/10/29)
- [Obs#12] Obsidian v0.8.4~v0.8.9的新增功能 (0則留言, 2020/09/06)
- Obsidian (黑曜石)筆記軟體的基本操作指引 (0則留言, 2020/06/23)
- [Obs#18] v0.9.16 YAML增強功能: tags與aliases (0則留言, 2020/11/20)
- [Obs#22] 讓有效學習更簡單!Markdown匯出到Anki | 使用Flashcards外掛 (0則留言, 2020/12/12)
- 使用Memory Fox附加元件為Firefox進行定期記憶體瘦身 (3則留言, 2010/02/27)
- [Windows] 用Gitea架設自用的Git Server (2則留言, 2017/07/21)
- 超強筆記軟體Obsidian (黑曜石)介紹與Zettelkasten筆記系統簡述 (0則留言, 2020/06/21)