Obsidian은 지식 관리와 노트 작성을 위한 강력한 소프트웨어입니다. 사용자는 마크다운(Markdown)을 이용하여 노트를 작성하며, 이 노트들은 링크를 통해 상호 연결됩니다. Obsidian의 주요 특징은 무한한 지식 그래프의 구축이 가능하다는 점이며, 이를 통해 사용자는 자신의 생각과 지식을 체계적으로 정리하고 연결할 수 있습니다. 옵시디언 시작하기
Obsidian은 무엇보다 다양한 플러그인을 지원하여 사용자의 필요에 따라 기능을 확장할 수 있으며, 이를 통해 더욱 맞춤화된 지식 관리 경험을 제공합니다. Obsidian의 플러그인은 Obsidian 소프트웨어의 기능을 확장하거나 새로운 기능을 추가할 수 있는 도구입니다. 사용자는 이러한 플러그인을 설치함으로써 기본적으로 제공되는 기능 이외에도 다양한 작업을 보다 효율적이고 편리하게 수행할 수 있습니다.
예를 들어, 시각적으로 정보를 정리하고 관리할 수 있는 마인드맵 플러그인, 노트 간의 연결 관계를 시각적으로 표현하는 그래프 뷰 플러그인, 마크다운 파일 내 데이터를 조회하고 정렬할 수 있는 데이터뷰 플러그인 등이 있습니다.
튜토리얼 환경: 윈도우 11, Obsidian v1.5.12, Dataview 0.5.66v
소개
데이터뷰 플러그인은 Obsidian 노트의 메타데이터를 기반으로 테이블, 리스트, 그리고 차트 등의 형태로 정보를 시각화할 수 있게 해주는 확장 기능입니다. 이는 Markdown 파일 안에 있는 YAML front matter, 인라인 필드, 그리고 태그 등을 이용해 정보를 추출하고 정렬할 수 있게 합니다.
이 플러그인의 주된 목적은 사용자가 자신의 노트 내에 숨겨진 데이터를 쉽게 발견하고, 이를 통해 보다 유의미한 인사이트를 얻을 수 있도록 하는 것입니다. 데이터뷰는 복잡한 쿼리를 수행하여 특정 조건에 맞는 노트를 찾아내고, 이를 다양한 형태로 시각화함으로써 정보의 가치를 극대화합니다.
플러그인 주요 기능
Dataview 플러그인은 데이터 조회 및 정렬, 시각화, 사용자 정의 쿼리 등의 기능을 제공하여 사용자가 노트를 효율적으로 관리하고 데이터를 분석할 수 있도록 도와줍니다.
- 데이터 조회 및 정렬: 데이터뷰 플러그인을 사용하면, 특정 조건에 따라 노트를 조회하고 정렬할 수 있습니다. 예를 들어, 특정 태그가 붙은 노트나 특정 기간 동안 작성된 노트 등을 쉽게 찾아낼 수 있습니다. 이를 통해 사용자는 노트를 효율적으로 관리하고 원하는 정보에 빠르게 접근할 수 있습니다.
- 시각화: 데이터뷰 플러그인은 노트의 메타데이터를 기반으로 한 시각화 기능을 제공합니다. 사용자는 테이블, 리스트, 그래프 등 다양한 형태로 데이터를 시각화할 수 있습니다. 이를 통해 사용자는 데이터를 보다 직관적으로 이해하고 분석할 수 있습니다.
- 사용자 정의 쿼리: 데이터뷰 플러그인은 사용자가 자신만의 쿼리를 작성할 수 있도록 지원합니다. 사용자는 필요에 따라 복잡한 데이터 분석과 조회 작업을 수행할 수 있습니다. 이를 통해 사용자는 데이터를 자유롭게 조작하고 분석하여 다양한 정보를 추출할 수 있습니다.
Dataview에서 사용하는 데이터
Dataview는 Obsidian에서 작성 된 데이터를 가져와서 사용자가 원하는 형식으로 보여주는 것이 목적인데 여기서 사용하는 데이터는 Obsidian 노트의 메타데이터입니다. 이 메타데이터 유형은 사용자가 Frontmatter에 직접 추가한 값과 자동으로 할당되는 Implicit field 값 이렇게 두 가지로 나누어 볼 수 있습니다.
Frontmatter
데이터뷰 플러그인을 효과적으로 사용하기 위해서는 Obsidian 문서에 프론트매터(Frontmatter)가 잘 구성되어 있어야 합니다. 프론트매터는 문서의 최상단에 위치하며, YAML(YAML Ain't Markup Language)(링크 업데이트 예정) 형식으로 메타데이터를 정의하는 부분입니다. 이 메타데이터는 데이터뷰 플러그인이 문서를 분석하고, 필터링하며, 정렬하는 데 중요한 역할을 합니다. Obsidian Frontmatter Properties 더 알아보기(링크 업데이트 예정)
Implicit field
Dataview 플러그인은 노트에 대한 다양한 기본 정보를 자동으로 메타데이터로 추가합니다. 이러한 정보에는 노트의 파일명, 파일 경로, 파일 크기, 생성 시간, 수정 시간, 포함된 태그 등이 있습니다. 사용자가 별도로 메타데이터를 작성하지 않아도 이 정보들을 쿼리에서 활용할 수 있습니다. Implicit Fields 더 알아보기
file.aliases
: 노트에 지정된 별칭들을 나타냅니다. 별칭을 사용하면 노트를 다양한 이름으로 참조할 수 있습니다.file.cday
: 노트가 생성된 날짜(연-월-일)를 나타냅니다.file.ctime
: 노트가 생성된 정확한 시간(타임스탬프)을 나타냅니다.file.day
: 노트에 지정된 날짜를 나타냅니다(주로 프런트매터 메타데이터 내 date 필드를 통해 설정됨).file.etags
: 노트 내에서 사용된 특별한 태그들을 나타냅니다.file.ext
: 노트 파일의 확장자를 나타냅니다.file.folder
: 노트가 위치한 폴더의 경로를 나타냅니다.file.frontmatter
: 노트의 프런트매터 전체를 나타냅니다.file.inlinks
: 다른 노트들에서 현재 노트로의 인바운드 링크(들어오는 링크) 목록을 나타냅니다.file.link
: 현재 노트의 링크를 나타냅니다. 이를 통해 다른 노트에서 현재 노트를 쉽게 참조할 수 있습니다.file.lists
: 노트 내에 포함된 리스트들을 나타냅니다.file.mday
: 노트가 마지막으로 수정된 날짜(연-월-일)를 나타냅니다.file.mtime
: 노트가 마지막으로 수정된 정확한 시간(타임스탬프)을 나타냅니다.file.name
: 노트의 파일명(확장자 포함)을 나타냅니다.file.outlinks
: 현재 노트에서 다른 노트로의 아웃바운드 링크(나가는 링크) 목록을 나타냅니다.file.path
: 노트 파일의 전체 경로를 나타냅니다.file.size
: 노트 파일의 크기를 바이트 단위로 나타냅니다.file.starred
: 노트가 즐겨찾기로 지정되었는지 여부를 나타냅니다.file.tags
: 노트에 포함된 태그들을 나타냅니다.file.tasks
: 노트 내에 포함된 작업(체크박스로 표시된)들을 나타냅니다.
설치
커뮤니티 플러그인 탐색 페이지를 통해 Obsidian Dataview 플러그인을 찾고 설치할 수 있습니다. Obsidian에서 커뮤니티 플러그인을 설치하는 방법은 Obsidian 커뮤니티 플러그인 기본적인 설치 방법 문서를 확인하세요.
기본 사용법
Dataview는 네 가지 기본 형식을 제공하여 데이터를 표시하며, Dataview와 Dataview.js를 사용하여 다양한 데이터 쿼리 및 처리 작업을 수행할 수 있습니다. 이를 통해 사용자는 데이터를 보다 효율적으로 관리하고 분석할 수 있습니다.
참고: Dataview 플러그인은 특성 상 Obsidian을 처음 시작하는 경우 작성된 글이 많이 없어 데이터를 참조하는 등의 테스트를 진행하는 것이 어려울 수 있는데, Dataview 예제 저장소에서 여러가지 데이터가 포함된 Vault를 다운로드해 바로 테스트를 진행할 수도 있습니다. 이 저장소는 Dataview 플러그인을 사용하는 다양한 방법을 보여주기 위해 구성되었으며, 기본적인 문법 예시부터 복잡한 자바스크립트를 활용한 해결책까지 포함되어 있어, 사용자들이 자신의 데이터와 필요에 맞는 Dataview 쿼리를 구축할 수 있도록 돕습니다.
데이터 표시 기본 형식
Dataview에서 데이터를 표시하는 데에는 네 가지 기본 형식이 있습니다. 기본 형식을 적절히 활용하여 다양한 데이터를 시각적으로 표현할 수 있습니다.
Table
- Table 형식 쿼리는 데이터를 행과 열로 구성된 표로 나타냅니다. 위 이미지에서는 열 값을 지정하지 않아 단일 열만 표시되지만 원하는 방식으로 얼마든지 열을 추가해서 데이터를 확인할 수 있습니다.
- 각 행은 데이터의 개별 항목을 나타내며, 각 열은 해당 데이터의 특정 속성을 나타냅니다.
- 테이블 형식은 정형화된 데이터를 보여주거나 비교할 때 유용합니다.
List
- List 형식 쿼리는 위 그림과 같이 목록 형식은 데이터를 순서대로 나열하여 표시합니다.
- 각 항목은 순차적으로 표시되며, 데이터 간에 명확한 구분이 있습니다.
- 목록 형식은 단순한 데이터의 표현이나 나열된 정보를 제공할 때 유용합니다.
Task
- Task 형식 쿼리를 사용하면 볼트 내의 모든 작업(task)에 대한 상호작용 가능한 목록을 출력할 수 있습니다.
- TASK 쿼리의 특징은 결과로 페이지가 아닌 구체적인 작업을 반환한다는 점입니다. 이는 모든 데이터 명령어가 작업 수준에서 작동한다는 것을 의미하며, 이를 통해 작업의 상태나 작업 자체에 지정된 메타데이터를 기준으로 작업을 세밀하게 필터링할 수 있습니다.
- TASK 쿼리는 Dataview Query Language(DQL)를 사용하여 파일을 조작할 수 있는 유일한 방법입니다. 일반적으로 Dataview는 파일 내용을 변경하지 않지만, TASK 쿼리를 통해 작업을 체크하면 원본 파일에서도 해당 작업이 체크된 상태로 변경됩니다. Dataview 설정의 Task Settings에서, dataview 내에서 작업을 체크할 때 완료 메타데이터 필드를 자동으로 설정하도록 선택할 수 있습니다. 단, 이 기능은 dataview 블록 내에서 작업을 체크할 때만 작동합니다.
Calendar
- 달력 형식은 일정이나 시간에 관련된 메타데이터를 활용해 월별 달력 형태로 데이터를 점(dot)으로 표시합니다.
- 각 날짜에 해당하는 데이터를 달력 형식으로 시각화하여 보여줍니다.
- 시간에 따른 데이터 변화나 일정을 확인할 때 유용합니다.
- Calendar 형식의 경우 다른 쿼리 유형 방식과 다르게
CALENDAR file.ctime
과 같이 참조할 날짜 정보가 필수로 필요합니다.
데이터를 참조하는 방식
Obsidian의 Dataview에서 데이터를 참조해 다루는 방식은 크게 Dataview와 Dataview.js 두 가지가 종류가 있습니다. 일반적으로 Dataview는 간단한 쿼리에 적합하고, Dataview.js는 더 복잡한 데이터 처리 작업에 적합합니다. 상황에 따라 두 가지 방식을 적절히 혼합하여 사용할 수 있습니다.
Dataview
```Dataview
Dataview로 데이터를 쿼리할 때 Obsidian 내에서는 백틱(`
)을 세 번 나열한 후, 그 안에 dataview
라고 명시해야 합니다.
- Dataview는 Obsidian의 표준 플러그인으로, 메타데이터 기반의 쿼리를 사용하여 데이터를 가져오고 표시할 수 있습니다.
- 메타데이터와 Dataview 문법을 사용하여 간단한 질의부터 복잡한 뷰까지 구현할 수 있습니다.
- 구문이 간결하고 가독성이 좋아 초보자도 쉽게 사용할 수 있습니다.
Dataview.js
```Dataviewjs
Dataviewjs로 데이터를 쿼리할 때 Obsidian 내에서는 백틱(`
)을 세 번 나열한 후, 그 안에 dataviewjs
라고 명시해야 합니다.
- Dataview.js는 Dataview 플러그인에 대한 JavaScript API입니다.
- 메타데이터 쿼리보다 더 복잡한 로직을 구현할 때 사용됩니다.
- JavaScript 프로그래밍 지식이 필요하지만, 데이터 조작과 변형에 더 많은 유연성을 제공합니다.
- 복잡한 알고리즘, 동적 데이터 생성, 외부 데이터 통합 등의 작업에 유용합니다.
- 이를 사용하면 보다 다양하게 데이터를 처리하고 시각적인 요소를 생성할 수 있습니다. 이와 관련된 내용은 Obsidian Dataview 플러그인 JavaScript 코드블럭 참조 방식(링크 업데이트 예정)을 정리한 글을 확인하세요.
Dataview.js
를 사용하기 위해서는 Dataview 설정의 Enable JavaScript Queries 옵션을 활성화 해야 합니다. 인라인 쿼리를 사용하는 경우에는 그 아래 옵션도 같이 활성화합니다.
쿼리(데이터 참조) 예시
Dataview와 Dataviewjs를 활용하면 메타데이터 기반의 다양한 데이터 쿼리와 처리가 가능합니다. 상황에 맞는 적절한 방식을 선택하여 사용하면 됩니다. Dataviewjs를 활용하면 Dataview의 메타데이터 기반 쿼리보다 더 복잡한 데이터 처리 작업을 수행할 수 있습니다. 상황에 따라 두 가지 방식을 적절히 혼합하여 사용하면 좋습니다.
볼트의 모든 노트 보기
이 쿼리를 데이터가 보여지길 원하는 위치에 작성하면 위와 같이 현재 사용 중인 Obsidian 볼트의 모든 노트 링크를 LIST(목록) 형태로 출력할 수 있습니다.
- Dataview
```dataview
LIST
```
- Dataviewjs
```dataviewjs
dv.list(dv.pages()
.map(page => page.file.link))
```
특정 태그가 있는 모든 노트 보기
이 쿼리는 example
태그를 포함하는 모든 노트를 목록으로 나열합니다. contains(file.tags, example)
함수를 사용하여 파일의 태그 중에서 example 태그를 포함하는 파일을 찾습니다.
- metadata
---
tags: [example, tag]
---
- Dataview
```dataview
LIST
WHERE contains(file.tags, "example")
```
- Dataviewjs
```dataviewjs
dv.list(
dv.pages()
.where(page => page.file.tags?.includes("#example"))
.map(page => page.file.link)
);
```
특정 속성을 가진 페이지 목록
이 쿼리는 메타데이터에서 priority
속성의 값이 1
(아래 예제는 텍스트 기준)인 모든 페이지를 테이블 형식으로 나열합니다. priority
열에는 해당 속성 값이 표시됩니다.
- metadata
---
priority: "1"
---
- Dataview
```dataview
TABLE
priority
FROM ""
WHERE priority = "1"
```
- Dataviewjs
```dataviewjs
dv.table(["File", "priority"],
dv.pages()
.filter(p => `${p.priority}` === "1")
.map(p => [p.file.link, p.priority])
);
```
특정 날짜 속성을 가진 노트 보기
다음과 같이 사용하면 testdate가 정확히 2024-04-01
인 모든 문서를 찾아 해당 문서의 링크와 testdate 값을 테이블 형태로 표시합니다. Dataview 쿼리는 Obsidian의 Dataview 플러그인이 활성화된 상태에서 마크다운 문서에 직접 입력하여 사용할 수 있습니다
- metadata
---
testdate: 2024-04-01
---
- Dataview
```dataview
TABLE testdate
WHERE testdate = date(2024-04-01)
```
- Dataviewjs
```dataviewjs
dv.table(["File", "testdate"],
dv.pages()
.where(p => p.testdate && dv.date(p.testdate).equals(dv.date("2024-04-01")))
.map(p => [p.file.link, p.testdate])
);
```
속성별 집계
이 쿼리는 category
가 article
인 모든 페이지를 달력 형식으로 나열합니다. CALENDAR
명령어를 사용하여 특정 카테고리에 속하는 페이지들을 시간 순서에 따라 시각적으로 표시할 수 있습니다. 단, 달력 형식으로 나타내기 위해서는 페이지에 날짜가 명시되어 있거나, 파일 이름에 날짜가 포함되어 있어야 합니다.
참고: 현재기준 DataviewJS API에서는 dv.calendar 등 CALENDAR 관련 함수를 제공하지 않거나 관련 방법을 찾을 수 없습니다. 그래서 캘린더 형식으로 데이터를 표시하는 것은 기본 Dataview 쿼리를 사용합니다.
- metadata
---
category: article
testdate: 2024-04-01
---
- Dataview
```dataview
CALENDAR testdate
WHERE category = "article"
```