obsidian dataview好難?初學者也能快速上手的8個範例!

obsidian dataview語法有超級多種,網上各種琳瑯滿目,宛如百貨公司專櫃般時髦又晦澀的語法,你真的需要嗎?

不過,在開始之前,可以看看用obsidian整理讀書筆記!文組生的2個私藏範例也許不用學dataview就能高效完成你想做的事!
今天,吐司編將努力用淺顯易懂的方式,分享自己最常用的幾種dataview語法,在分享之前,想先簡單帶大家看過幾個必定要會的基礎obsidian 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的外掛,能自動彙整還沒完成的任務。

obsidian checklist外掛
obsidian 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、リンゴ的筆記也會一起被顯示。

obsidian dataview範例:別名

範例7:查看單字語境被引用的次數

這是我個人使用的英語單字筆記術,由於我是以語境主題區分單字,例如旅遊、飲食等等,所以這個dataview語法很方便查看那些時常被引用的主題筆記,詳細的做法可以閱讀:🔤英文單字筆記模板|Notion和Obsidian

範例8:查看還沒被連結到其他筆記的筆記

如果要計算跟長度、總計相關的數值,可以用length
例如,要知道這則筆記有多少個連結:

length(file.outlinks) , length(file.inlinks)


所以,如果要查看新建的檔案有哪些還沒被連結到其他筆記,你可以在原本的table旁邊加入:

“`dataview
table length(file.outlinks) , length(file.inlinks)
“`

obsidian dataview範例:單字

特別注意:由於這個dataview語法會顯示筆記中”複製貼上的圖片”在length(file.outlinks)欄位,如果你不想要顯示圖片,可以加上:

where contains(file.name, “Pasted “)

範例9:更改筆記呈現的形式|卡片庫

有些人可能覺得一列列數據很無聊,不夠美觀,其實你可以像Notion一樣,用卡片的形式列出來!

obsidian dataview範例:卡片

其實很簡單,只要在最前面加入以下代碼即可:


cssClasses : cards

如果有任何疑問,都可以到 吐司出版社 私訊我喲!

延伸閱讀:

參考資料:
obsidian插件dataview官方文档翻译 – 知乎
Day 23 : 插件篇 02 — 如何在 Obsidian 中自動彙整筆記?使用 Dataview 查詢與呈現符合條件的筆記 – iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天