obsidian dataview語法有超級多種,網上各種琳瑯滿目,宛如百貨公司專櫃般時髦又晦澀的語法,你真的需要嗎?
不過,在開始之前,可以看看用obsidian整理讀書筆記!文組生的2個私藏範例,也許不用學dataview就能高效完成你想做的事!
今天,吐司編將努力用淺顯易懂的方式,分享自己最常用的幾種dataview語法,在分享之前,想先簡單帶大家看過幾個必定要會的基礎obsidian dataview語法:
obsidian基礎dataview語法
首先,請想像你想吃鹽酥雞,正要跟老闆點餐。
dataview呈現形式
光是鹽酥雞,就有四種方式:你想要裝一起、分開、直接吃不用袋子,還是要袋子?
在這個階段,只有3種方式,是不是簡單多了呢?主要是告訴系統:我們想要將數據提取為怎樣的外觀呈現:
- table:以表格形式呈現資料
- list:以列點形式呈現資料
- task:篩選出有check box的資料
dataview細節
接著,你還需要向老闆補充具體細節,例如,你想要從哪個地方產出的雞肉、想要雞肉帶有偏酸還是偏甜的特質等等。
這也是第二步驟,搞定外觀之後,告訴系統:你想要在哪個地方篩選資料;有特別的偏好嗎?
- from:顧名思義是告訴系統,從哪個資料夾/標籤挑選資料?
- tag :挑選出帶有某標籤的資料
- folder:挑選出某資料夾內的資料
- [[]]:挑選出連結到此筆記的資料
- where:where的概念可能較複雜,不過大抵是篩選資料的意思
例如,雞排要不要切?新鮮度(檔案創立的日期)是多少?不要加香菜(不包含特定文字) - sort:排序資料,可能是依創立時間、修改時間、文件大小、字數等等
dataview官方文檔說明
屬性名 | 說明 | 格式 |
---|---|---|
file.name | 該檔案標題(字串) | 字串 |
file.folder | 該檔案所在的資料夾路徑(字串) | 字串 |
file.path | 該檔案的完整路徑(字串) | 字串 |
file.link | 該檔案的連結(連結) | 連結 |
file.size | 該檔案的大小(位元組)(數字) | 數字 |
file.ctime | 該檔案的建立日期(日期和時間) | 日期和時間 |
file.cday | 該檔案的建立日期(僅日期) | 日期 |
file.mtime | 該檔案最後編輯日期(日期和時間) | 日期和時間 |
file.mday | 該檔案最後編輯日期(僅日期) | 日期 |
file.tags | 筆記中所有標籤組成的陣列 | 陣列 |
file.etags | 筆記中所有明確標籤組成的陣列 | 陣列 |
file.outlinks | 該檔案所有外部連結組成的陣列 | 陣列 |
file.aliases | 筆記中所有別名組成的陣列 | 陣列 |
file.day | 該檔案的隱含日期 |
obsidian dataview範例:基礎用法
範例1:查看最近新建的筆記
“`dataview
table
from ""
where date(today) - file.cday <= dur(20 days)
sort file.ctime DESC
“`
第一行:你可以選擇要用list或table顯示
第二行:””意思是所有在此儲存庫的筆記,也可篩選tag或資料夾,只要在””內填入自己想篩選的tag或檔案夾即可,例如from #tag
第三行:意思是今天的日期減去檔案創建日期,小於等於20天(這個20可自由變更)
第四行:將檔案建檔時間降冪排列;與之相反的是升冪排列,將DESC改為ASC即可。
dataview範例2:查看最近修改的筆記
“`dataview
table
from “”
where date(today) – file.mday <= dur(20 days)
sort file.mtime DESC
“`
很簡單!只要把第三行的file.cday改成file.mday;以及把file.ctime改為file.mtime就大功告成啦。
範例3:查看不包含某文字的筆記
在前面加入驚嘆號”!”,在dataview語法中,就代表排除。
例如,如果你想排除檔名帶有特並文字的筆記:
where !contains(file.name,”WP文”)
如果你想排除特定標籤:
where !contains(tag,”MindDuo”)
如果想從FROM那邊修改則較為簡單,只要在前面加入”-“即可:
例如,排除路徑為400-Archive/journals的檔案;排除帶有#外語的標籤。
from “” and -“400-Archive/journals” and -#外語
範例4:查看任務的執行狀況
“`dataview
task
from “”
where date(today) – file.cday <= dur(20 days)
where !completed
“`
這個語法可以自動帶出所有含有check box語法的筆記行。
第四行的where:意思是挑選出今天日期減去筆記創建日期小於等於20天的筆記。
第五行的!completed:篩選出還沒勾選完成的任務,反之,如果要查看已完成的任務,只要把前方的驚嘆號去掉就可以了喔!
不過較方便的作法是直接下載這個checklist的外掛,能自動彙整還沒完成的任務。
dataview範例5:查看正在思考/有疑問的筆記
首先,我會在YAML區中加入這些資訊:
—
tag : 思考
Q : [ChatGPT如何幫助SEO?]
sum : [NLP格式,關鍵字探勘,內容摘要,改寫]
—
第一行:tag代表這則筆記的標籤
第二行:Q代表對這則筆記的疑問,有時可能有很多則,就可以用[,]的格式,框住問題,並以半形的逗號區隔
第三行:sum是我真對問題的思考或總結,手法與第二行相同
接著是obsidian的查詢語法:
“`dataview
table Q,sum
from “”
where tag = “思考”
sort file.mtime DESC
“`
dataview成功後看起來會像這樣:
obsidian dataview:個人進階用法
dataview範例6:幫筆記取綽號
這個語法其實是aliases,意思是”別名”,但吐司編覺得這就等同於幫筆記取綽號,好可愛!
例如蘋果可以是apple;也能是リンゴ,或是你繕打文件時,同個名詞可能會有不同表達方式,例如寫作、書寫等。
aliases: [,]
方法和範例5類似,只要以逗號區隔綽號就大功告成!
之後若在搜索欄查詢蘋果,帶有apple、リンゴ的筆記也會一起被顯示。
範例7:查看單字語境被引用的次數
這是我個人使用的英語單字筆記術,由於我是以語境主題區分單字,例如旅遊、飲食等等,所以這個dataview語法很方便查看那些時常被引用的主題筆記,詳細的做法可以閱讀:🔤英文單字筆記模板|Notion和Obsidian
範例8:查看還沒被連結到其他筆記的筆記
如果要計算跟長度、總計相關的數值,可以用length。
例如,要知道這則筆記有多少個連結:
length(file.outlinks) , length(file.inlinks)
所以,如果要查看新建的檔案有哪些還沒被連結到其他筆記,你可以在原本的table旁邊加入:
“`dataview
table length(file.outlinks) , length(file.inlinks)
“`
特別注意:由於這個dataview語法會顯示筆記中”複製貼上的圖片”在length(file.outlinks)欄位,如果你不想要顯示圖片,可以加上:
where contains(file.name, “Pasted “)
範例9:更改筆記呈現的形式|卡片庫
有些人可能覺得一列列數據很無聊,不夠美觀,其實你可以像Notion一樣,用卡片的形式列出來!
其實很簡單,只要在最前面加入以下代碼即可:
—
cssClasses : cards
—
如果有任何疑問,都可以到 吐司出版社 私訊我喲!
延伸閱讀:
參考資料:
obsidian插件dataview官方文档翻译 – 知乎
Day 23 : 插件篇 02 — 如何在 Obsidian 中自動彙整筆記?使用 Dataview 查詢與呈現符合條件的筆記 – iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天