티스토리 뷰
옵시디언 사용기8 - 데이터뷰(Dataview)
Kimyo 2022. 9. 8. 22:10옵시디언은 매우 단순한 프로그램입니다. 다른 노트에서 다 제공하는 서식 버튼조차 없어 마크다운 기반의 텍스트 편집을 해야합니다.
동시에 옵시디언은 매우 강력한 프로그램이기도 합니다. HTML, CSS 편집이 가능하고, 프론트매터(Frontmatter)를 통해 메타데이터를 관리할 수 있습니다. 여기에 더해 커뮤니티플러그인인 데이터뷰(Dataview)를 활용하면 메타데이터를 표 형태로 시각화 하는 것까지 가능합니다.
옵시디언에 관한 일련의 포스팅을 하면서 '일단락은 데이터뷰(Dataview)에서 나겠구나' 생각을 해왔었습니다. 그만큼 옵시디언의 데이터뷰는 유용하면서도 노트관리에 필수적인 기능입니다.
목차
1. 데이터뷰(Dataview)란?
데이터뷰는 각 노트에 메타데이터 형태로 저장된 데이터를 표 형태로 시각화 할 수 있는 플러그인입니다. 옵시디언에서 자체 지원하는 플러그인은 아니지만, 커뮤니티 플러그인 중에서는 순위권에 꼽는 플러그인이라 믿고 사용할 만 합니다.
데이터뷰는 커뮤니티 플러그인이기 때문에 설치를 먼저 진행해야 합니다. 데이터뷰 설치 방법은 다음과 같습니다.
옵시디언 데이터뷰 설치 방법
- 환경설정(
Ctrl
+,
) → 커뮤니티 플러그인 → 탐색(Browse) - 데이터뷰(Dataview) 검색 및 설치
- 환경설정 → 커뮤니티 플러그인 → 데이터뷰 활성화
중간에 커뮤니티 플러그인을 사용할 것인지 경고창이 뜨면 사용하겠다고 체크해주면 됩니다.
2. 데이터뷰 재료 : 메타데이터
데이터뷰는 말 그대로 데이터(Data)를 보여주는(View) 도구입니다. 따라서 보여주는 기능을 구현하기에 앞서 데이터(Data)를 준비해야 합니다.
2.1. 프론트매터, 인라인필드
데이터뷰로 보여줄 데이터를 만드는 방법은 앞선 포스팅에서 소개해드린 메타데이터를 활용하는 방법입니다. 프론트매터(Frontmatter), 인라인필드(Inline Field) 어느 쪽으로 삽입하여도 무방합니다.
다만, 앞으로 데이터뷰로 데이터를 시각화하여야 하니, 어떤 항목(Column)을 보여줄까를 정해야 합니다.
저는 매 일기에 기상시간, 취침시간, 운동 여부, 독서 여부, 포스팅 여부 등을 프론트매터에 작성하고 있습니다. 일기를 작성할 때마다 잊지 않고 매일 목표를 달성할 수 있어서 좋고, 데이터뷰로 시각화하여 관리하는 기분도 좋습니다.
2.2. 자체내장필드 (Implicit Field)
우리가 프론트매터나 인라인필드를 정해주지 않더라도, 옵시디언 노트 자체가 갖고 있는 기본적인 메타데이터가 있습니다. 이를 자체내장필드(Implicit field)라고 합니다.
옵시디언 자체내장필드
- 파일명 : file.name
- 폴더명 : file.folder
- 경로명 : file.path ( file.folder + file.name)
- 링크명 : file.link
- 만든 시간 : file.ctime (날짜 + 시간)
- 만든 날짜 : file.cday
- 수정 시간 : file.mtime (날짜 + 시간)
- 수정 날짜 : file.mday
- 태그 : file.tags
- 백링크 : file.inlinks
- 아웃링크 : file.outlinks
- 별칭 : file.aliases
- 할일목록 : file.tasks
3. 옵시디언 데이터뷰 작성
데이터뷰를 작성하기 위한 재료(메타데이터)를 알아보았으면, 이제 데이터뷰를 작성하는 방법을 알아볼 차례입니다.
3.1. 옵시디언 데이터뷰 종류
옵시디언에서 제공하는 데이터뷰는 3종류(TABLE, LIST, TASK)입니다. 똑같은 폴더의 문서를 TABLE, LIST, TASK 로 각각 가져와보겠습니다.
3.1.1. TABLE 로 가져오는 경우
TABLE은 원하는 데이터를 표 형태로 가져오는 것입니다. 표 형태이기 때문에 행(Row)과 열(Column) 로 표현되기 때문에 어떤 열을 표현할 지 고민이 필요합니다.
3.1.2. LIST로 가져오는 경우
똑같은 내용을 LIST 로 가져오면 아래와 같이 단순한 목록으로 표현됩니다. TABLE로 가져올 때에 제1열만 가져오는 것과 같다고 볼 수도 있습니다. 즉, LIST는 TABLE에서 열이 삭제된 버전이기 때문에 TABLE의 사용법을 알면 LIST 의 사용법도 완전히 익히는 셈입니다.
3.1.3. TASK 로 가져오는 경우
똑같은 대상을 TASK 로 가져오면 아래와 같이 단순한 할일목록 형태로 표현됩니다. (저는 굳이 할일 목록을 옵시디언에서 관리하고 있지 않기 때문에, 급조한 할일목록이 만들어졌습니다.)
마찬가지로, TABLE의 사용법을 알 면 TASK도 거의 아는 셈이라, 향후 설명은 TABLE 위주로 할 생각입니다.
3.2. 옵시디언 데이터뷰 작성 문법
LIST 와 TASK 는 TABLE 에서 열(Column Field)에 관한 문법만 제외하면 나머지 문법이 똑같습니다. 그래서 TABLE을 기준으로 옵시디언 데이터뷰 사용법을 설명하겠습니다.
데이터뷰를 만들기 위한 문법은 다음과 같습니다.
- 백틱 3개( ``` ) 와
Dataview
키워드로 데이터뷰를 시작합니다. TABLE
: 데이터뷰를 어떤 형태로 보일 것인지 선언합니다.FIELD
: 어떤 데이터를 표의 열(column)에 나타낼지 선언합니다.metadata as 표시명
형태로 적습니다.as 표시명
은 생략해도 무방합니다.- 여러 개 필요하면 콤마로 나누어 목록 형태로 적습니다.
FROM
: 어디에서 가져올 지, 폴더명이나 태그명을 적습니다.WHERE
: 제한 조건을 적습니다.SORT
: 오름차순, 내림차순 규칙을 적습니다.- 백틱 3개( ``` )로
dataview
블록을 종료합니다.
예를 들어, 아래와 같이 데이터뷰 TABLE 코드를 작성할 수 있습니다.
``` dataview
TABLE
column1 as "열1",
column2 as "열2",
column3 as "열3"
FROM "POSTING/OBSIDIAN" and #포스팅
WHERE file.cday > date(2022-09-01)
SORT file.name ASC
```
그러면 아래와 같이 열1, 열2, 열3을 나타내는 TABLE 형태의 DATAVIEW 가 만들어집니다.
4. 옵시디언 데이터뷰 TIP
옵시디언 데이터뷰를 다루다보면 금방 부딪치게 되는 불편함 등이 있습니다. 개인적으로 겪어본 순서대로 정리해두려 합니다.
4.1. 옵시디언 데이터뷰 첫 열(File) 제거 방법
옵시디언에서 데이터뷰로 TABLE을 만들면, 자동적으로 첫 열에 파일명(FILE) 필드가 형성되어 있습니다. 이를 없애기 위해서는 단순히 TABLE without ID
로 데이터뷰를 시작해주면 됩니다. (콤마가 없다는 점을 조심!)
즉, 예시 코드에 without ID
를 다음과 같이 추가하고, 제목이 없으면 곤란하므로 title 필드를 추가해 보겠습니다.
``` dataview
TABLE without ID
title as "제목",
column2 as "열2",
column3 as "열3"
FROM "POSTING/OBSIDIAN" and #포스팅
WHERE file.cday > date(2022-09-01)
SORT file.name ASC
```
아래와 같이 File 열이 사라지고, 제가 지정한 제목 열이 추가되었습니다.
4.2. 옵시디언 데이터뷰 날짜 표현 방식 변경 방법
옵시디언 데이터뷰로 TABLE을 만들면 날짜가 "8월 04, 2022 "처럼 원치 않는 형식으로 표현될 수 있습니다.
이를 해결하기 위해 데이터뷰 환경설정에서 날짜의 표시형식을 바꿔주거나 데이터뷰 코드에 dateformat 을 적용하는 방법 등이 있습니다.
먼저, 환경설정을 바꾸는 법부터 알아보겠습니다.
- 환경설정 (
ctrl
+,
) → DATAVIEW → Date Format 으로 이동하여 날짜 형태를 변경합니다.
- 구분 형식(Luxon date format Option) 에 따라서 원하는 방식으로 날짜를 편집합니다.
- 예를 들어,
2022-03-08
을 기준으로 구분코드를 작성하면 다음과 같습니다.- yyyy : 4자리 연도 (예: 2022)
- yy : 2자리 연도 (예: 22)
- M: 1자리 월(예: 3)
- MM : 2자리 월(예: 03)
- MMM: 1자리 월 + "월"(예: 03월)
- dd: 2자리 날짜 (예: 08)
- d: 1자리 날짜 (예: 8)
- ccc: 요일 1자리 (예: 화)
- cccc: 요일 3자리 (예: 화요일)
- 따라서,
yy-MM-dd(ccc)
로 데이터포맷 옵션을 정해두면, 앞으로 데이터뷰에서 날짜가22-03-08(화)
형식으로 표현됩니다.
만약, 데이터뷰별로 다른 방식으로 날짜를 표현하고 싶다면, 데이터뷰 코드 자체에 dateformat 함수를 쓸 수도 있습니다.
- 예를 들어, 다음과 같이
file.cday
가 들어갈 자리를dateformat(file.cday, "yy-mm-dd (aaaa)"
로 바꿔보겠습니다. TABLE dateformat(file.cday,"yy-mm-dd (cccc)") as 작성일 FROM "POSTING/OBSIDIAN" and #포스팅 WHERE file.cday > date(2022-09-01) SORT file.name ASC
- 그러면 아래와 같이 작성일이 원하는 형식으로 표현됩니다.