목차
이번 글에서는 옵시디언 데이터뷰의 핵심이라고 할 수 있는 WHERE 명령어에 대해 알아본다.
옵시디언 데이터뷰,WHERE의 역할
기본적으로 FROM과 WHERE는 무수히 많은 노트를 필터링 해주는 명령어이다.
그 중에서도 FROM은 주로 노트의 위치나 태그를 특정하는 역할이며,
WHERE는 각각의 노트를 특정 기준에 따라 걸러내 주는 역할이다.
개별 노트를 조건에 따라 필터링하기 때문에 FROM 보다 더 세세한 접근이 가능하다.
WHERE는 엑셀의 IF문과 비슷해서 사용자의 역량에 따라 유용성이 크게 달라진다.
조건 작성에 사용되는 기능들의 학습이 필요할 수 있으며, 사전에 개별 노트의 Properties를 잘 작성해 두어야 쓸 수 있는 기능들도 있다.
본 글에서는 WHERE의 기본적 사용 방법과 간단한 예시들을 소개해 본다.
데이터뷰 WHERE 사용법 및 알아야 할 내용
기본적인 사용법은 아래와 같다.
TABLE
WHERE 조건 작성
WHERE의 뒷 부분에 특정 노트를 구분해 낼 수 있는 조건을 입력하면 된다.
따라서, 얼마나 다양한 조건을 DATAVIEW 문법으로 풀어낼 수 있을 지가 관건이다.
다양한 조건 연결하기
WHERE 또한 FROM과 마찬가지로 다양한 조건을 연결하여 사용할 수 있다.
TABLE
WHERE 조건1 AND (조건2 OR 조건3) AND NOT (조건4)
위와 같은 형태로 다양한 조건의 조합이 가능하다.
Properties 활용
DATAVIEW에서는 Properties의 적극 활용이 필요하다.
사람에 따라 “메타데이터”, “프론트메타”라고 부르기도 한다. 본 글에서는 옵시디언 기본 설정에 따라 Properties로 명명하도록 하겠다.
참고로 Properties는 각 노트의 성격을 규정하기 위해 작성하는 내용으로, 문서 시작 위치에서 “-“를 세 번 입력하면 나타난다.
위에서 연습 삼아 작성한 Properties를 WHERE로 활용해보면 아래와 같다.
TABLE
WHERE 진행 = "진행" and 메모 != "연습", 문서번호 > 200
TABLE
WHERE 진행 = "진행" and 메모 != "연습" and 문서번호 > 200
연산자 활용
위와 같이 WHERE 명령어에서는 연산 부호를 적절히 활용해야 한다.
등호
- = (같다), != (같지 않다)
부등호
- > , < , >= , <=
WHERE 활용 예시
예시 1. 이름에 특정 단어가 반복되어 들어가는 경우.
본인이 아래와 같이 파일 제목을 작성하고 있다고 가정해보자.
그 중 옵시디안을 주제로 하는 노트들이 정리된 페이지를 작성하고 싶다면, DATAVIEW를 다음과 같이 작성 할 수 있다.
LIST
WHERE contains(file.name, "옵시디안")
WHERE file.name != this.file.name
모음 파일 자체도 WHERE 조건에 해당하기 때문에 이를 제외하기 위해 WHERE file.name != this.file.name을 추가했다.
예시2. 일주일 이내에 작성한 파일만 보고 싶은 경우
최근에 작성한 파일만 보고 싶은 경우에는 아래와 같은 구문을 활용할 수 있다.
LIST
WHERE file.ctime>= date(today) - dur(7 day)
한번 작성한 노트를 지속하여 수정해서 쓰는 경우에는 file.ctime을 file.mtime으로 바꿔서 쓰면 된다.
날짜는 최근이 “큰 값”이므로, 위의 구문을 굳이 해석해보면, “오늘(date(today))로부터 7일 이전(-dur(7 day))보다 작성 시간(file.ctime)이 최근(>=)인 노트를 찾아줘”가 되겠다.
물론 dur()에 들어가는 값은 변경 가능하다. 1 day는 물론, 10 month나 20 hour를 넣어도 잘 작동한다.
결론
Where의 기본적인 사용 방법에 대해 알아보았다. 다음 글에서는 Where의 활용도를 높이기 위한 Implicit Fields에 대해 알아보고, 활용 방안에 대해 고민해 보도록 하자.