옵시디언 데이터뷰, 직접 작성하고 활용하기 (Dataview Functions, Metadata)

사실 옵시디언 데이터뷰 사용법을 설명한다는 건 엑셀의 함수 사용법을 설명한다는 이야기와 같다.
각 함수의 내용을 전부 설명해 낸다해도 이를 활용하고 적용하는 건 냉정하게 말해 각자의 센스 문제다.

때문에, 굳이 본인이 데이터뷰의 모든 것을 알려고 하기 보다는,
옵시디언 카페나 해외의 옵시디언 포럼에서 본인에 해당하는 케이스를 찾고 본인에 맞게 조금씩 바꾸어 사용하는 걸 추천한다.

그럼에도 본인이 직접 만들고 싶다면?
혹은 본인이 원하는 기능이 너무나도 유니크한 기능이라 참고할 만한 케이스를 전혀 찾을 수가 없다면?

대부분 의문에 대한 해답이 아래 링크게 전부 담겨있다.

깃허브, 옵시디언-데이터뷰 페이지
https://blacksmithgu.github.io/obsidian-dataview/

하지만 그럼에도 어렵고 뭘 봐야할지 모르는 분들을 위하여,
이번 글에서는 데이터뷰 입문자에서 고급 단계로 넘어가고자 하는 분들이
궁금해 할 만한 부분에 대해 다뤄보고자 한다.


자체 내장 필드 (Implict Fields)

앞서도 말했듯이 해당 글은 옵시디언 데이터뷰에 이미 입문은 하신 분들,
즉 Table 띄우기, 폴더 지정하기, 정렬 등 데이터뷰의 최소한의 이용방법은 아는 사람을 대상으로 한다.

본인이 만약 다른 사람의 데이터뷰 구문을 가져와
칼럼 명이나 폴더 정도를 자신에 맞게 조금 수정하여 쓰는 정도의 수준이라면
그 다음으로 알아야 할 내용은 자체 내장 필드(Implicit Fields)다.

옵시디언 메타데이터, 자체 내장 필드 (출처 : 깃허브_옵시디언-데이터뷰)

관련 내용은 위의 링크를 참조하면 된다.

사용자들이 활용하고 싶어할 만한 기본적인 항목들을 미리 정의해 놓았다고 생각하면 쉽다.

예를들어, file.name 같은 경우 각 파일의 이름을 대변하므로,
다음과 같이 작성하여 원하는 이름의 파일을 불러 올 수 있다.

where file.name = “note name”


같은 원리로 아래와 같이 작성하면 특정 폴더 내의 파일을 불러올 수 있다.

where file.folder = “폴더명”

위 구문의 경우, ‘file이 속한 폴더의 이름이 “폴더명”인 파일을 불러와줘!’ 라는 의미 이므로,
“‘폴더명’이라는 폴더로부터 file을 불러와줘”라는 의미의 From “폴더명” 과는 의미가 다르다.
파일이 속한 폴더의 이름을 비교하는 file.folder와는 달리,
From “폴더명” 은 “폴더명이라는 폴더의 파일을 불러와줘!” 이므로, 하위 폴더의 파일까지 전부 불러온다.

마찬가지로 file.mday와 같은 내장 필드도 유용하다.
where file.mday > date(2024-01-01)
위의 경우 “24년 1월 1일 이후에 내가 수정했던 노트를 모두 불러와줘”라는 의미가 된다.

이처럼 옵시디언이 친절하게 제공하고 있는 자체 내장 필드에서,
본인의 활용 목적에 맞는 항목의 활용이 가능하다.


사용자 정의 Metadata

옵시디언이 제공하는 자체 내장 필드 외에도,
사용자가 직접 필요한 내용을 각 파일에 넣어두고 이를 활용 할 수 있다.

가능한 한 많은 노트들을 정의할 수 있는 항목일 수록 좋다.

예를 들어 본인은 하나의 Vault로 업무용 메모와 개인적인 내용을 함께 정리 중이라면,
Metadata에 해당 항목을 미리 정의해 놓을 수 있다.

위와 같이 노트 우측 상단의 버튼 메뉴에서 Add file Property를 클릭하면,
우측의 이미지와 같이 입력이 가능하다.
혹은 해당 메뉴를 클릭하지 않아도 노트 맨 첫줄에서 하이픈을 연달아 세개 — 입력해도 입력창이 나타난다.

이렇게 미리 본인이 자주 구분하여 확인할 만한 항목을 각 노트에 넣어 두었다면,
데이터뷰에서 where 공사 = “업무” 와 같이 활용하여 해당하는 노트들을 한번에 불러 올 수 있다.

Properties 창을 생성하지 않아도 Metadata를 작성 할 수 있다.

메모 중간에도 Metadata 작성이 가능하다.

항목 :: 내용 과 같이 콜론을 연달아 2회 입력하여 작성하면 노트 어디에 있든 Properties에 입력된 내용과 동일하게 간주된다.
다만, Metadata를 너무 다양하게 사용하면, 필터의 개념은 희미해 질 수 있으므로,
템플릿 등을 활용하여 목적에 맞게 제한적으로 활용하기를 추천한다.

그 외에도 우리에게 좀 더 친숙한 #tag 또한 데이터뷰에서 활용 가능한 Meatadata 중 하나이다.


Metadata를 자유자재로 다뤄보자 Functions

옵시디언 데이터뷰, Functions (출처 : 깃허브_옵시디언-데이터뷰)

메타데이터의 간단한 활용에 어느 정도 감이 왔다면,
그 이후의 데이터뷰의 작성은 얼마나 다양한 Function을 제대로 이해하고 활용할 수 있는 가에 달려있다.

위에서 실은 아무렇지 않게 사용한 where file.mday > date(2024-01-01) 의 date()
또한 숫자와 하이픈의 조합을 옵시디언이 인식하는 날짜로 바꾸어 주는 Function의 하나다.

여기에 dur()라는 Function은 dur(3 days) 와 같이 기간을 입력하게 해주어,
지난 글에서 다뤘던 where file.day >= date(today) – dur(30 days),
“오늘로부터 30일 이전까지의 글들만 불러와줘”라는 매우 유용한 필터를 작성 할 수 있게 된다.

메모의 제목을 특정 양식으로 일정하게 작성중이라면,

contains()가 유용할 수 있다.
예를 들어, 메모의 제목을 “독서 후기, ~를 읽고”, “영화 후기, ~를 보고”, “지름 후기, 필수 가전 ~ 사용기”처럼
제목에 글의 유형이 담긴 키워드를 넣고 있다면,
where contains(file.name, “독서 후기”)
위의 한 줄을 포함하는 것으로 “독서 후기”라는 키워드가 들어간 노트를 불러올 수 있다.
contains(문자열1, 문자열2)는, “문자열1에 문자열2가 포함(contains)되어있는지 “참(True)”, “거짓(False)”으로 판단해줘”라는 의미이므로,
file.name 내에 “독서 후기”를 가지는, “참”으로 구분되는 노트를 불러오게 된다.


여러 개의 조건을 넣고 싶다면, and, or 그리고 !(not)

아무리 상황에 딱 맞는 Function을 골랐어도 조건 하나 만으로는 부족하다.
그럴 땐 여러 개의 조건을 넣을 필요가 있다.

데이터뷰에서는 and와 or를 활용 할 수 있다.
이들을 활용하여, 위에서 작성한 예문들을 합쳐보면 다음과 같다.
where contains(file.name, “독서 후기”) and file.mday > date(2024-01-01)
위와 같이 and 구문을 활용하면, 독서 후기 노트 중 올해 수정한 노트만 불러온다.

or도 마찬가지로 아래와 같은 활용이 가능하다.
where contains(file.name, “독서 후기”) or contains(file.name, “영화 후기”)
위의 구문으로 “독서 후기”와 “영화 후기”를 동시에 불러올 수 있게 되었다.

각 구문에 느낌표 (!)를 추가하면, Function의 “참-거짓”이 반전된다.
where contains(file.name, “독서 후기”) and !(file.folder = “비추천”)
위와 같이 느낌표를 앞에 붙이는 방법으로 특정 폴더의 파일을 제외 할 수 있다.


결론

앞서도 언급했듯, 데이터뷰를 설명한다는 건 엑셀의 함수를 설명한다는 이야기와 같다.
쉽다면 쉬울 수도, 하나 하나 설명하자면 한도 끝도 없을 수도 있다.

데이터뷰를 좀 더 능숙하게 쓰고자 한다면, 위에서 언급한 예에서 벗어나,
본인의 목적에 맞는 Function을 찾고, 가공하는 노력이 필요하다.

이 글을 보고 부디 한 사람이라도 데이터뷰 사용에 도움이 되었으면 하는 바람이다.


옵시디언 관련 글

4 thoughts on “옵시디언 데이터뷰, 직접 작성하고 활용하기 (Dataview Functions, Metadata)”

Leave a Comment