Dataview 기초: 확장 문법
FROM
FROM 문은 결과의 출처를 결정하는 데 사용되며, 이 출처는 다음과 같습니다:
Tags
: 해당 태그가 포함된 모든 파일을 선택하려면 FROM #tag를 사용합니다.Folders
: 해당 폴더 안의 모든 파일을 선택하려면 FROM "폴더"를 사용합니다.Single Files
: 특정 파일을 선택하려면 FROM "파일 경로"를 사용합니다.Links
: 특정 파일을 인용한 모든 파일을 선택하거나, 특정 파일에서 인용한 모든 파일을 선택할 수 있습니다.- 파일 [[A]]로 들어오는 모든 페이지를 얻으려면 FROM [[A]]를 사용합니다.
- 파일 [[A]]에서 나가는 링크(즉, 해당 파일의 모든 링크)를 얻으려면 FROM outgoing([[A]])을 사용합니다.
!
또는-
를 사용하여 '제외'를 나타냅니다. 예를 들어, FROM -#Tag 또는 FROM !#Tag는 해당 태그를 제외한 모든 파일을 의미합니다. 폴더와 파일에도 마찬가지로 적용됩니다.
조건 간에는AND
와OR
을 사용하여 '그리고'와 '또는'을 표시하며, 괄호를 사용하여 '그리고'와 '또는'의 관계를 명확히 할 수 있습니다.
FROM이 없고 쿼리 유형만 있는 경우 모든 파일을 쿼리합니다.
예시
Dataview 폴더 내의 모든 파일을 조회합니다:
```dataview
Table
From "Dataview"
```
Dataview 폴더 내의 모든 파일을 조회하되, "Dataview/함수" 폴더의 파일은 제외합니다:
```dataview
Table
From "Dataview" and !"Dataview/함수"
```
파일 A를 인용한 파일을 조회합니다:
```dataview
Table
From [[A]]
```
파일 A에서 인용한 파일을 조회합니다:
```dataview
Table
From outgoing([[A]])
```
WHERE
WHERE 절은 대상 파일에 대한 선별 과정, 즉 필터링을 수행합니다.
- 구문은 WHERE 다음에 조건을 추가하는 방식으로, WHERE 형태로 사용됩니다. 여기서 expression은 참이나 거짓으로 평가되는 표현식을 의미합니다.
- 조건은 expression이 만족하는 객체를 선별하는데 사용됩니다. 이때,
<
,>
,<=
,>=
,=
,+
,-
,*
,/
와 같은 비교 연산자와 기본 산술 연산자를 사용할 수 있습니다. 또한, Dataview가 제공하는 다양한 함수들도 조건에 활용할 수 있습니다. - 만약 where이라는 이름의 속성을 가진 경우, row["where"]를 사용하여 WHERE 연산자를 대체할 수 있습니다.
예시
최근 24시간 이내에 수정된 모든 파일을 찾습니다.
```dataview
LIST
WHERE file.mtime >= date(today) - dur(1 day)
```
완료되지 않고 한 달이 넘은 모든 프로젝트를 찾습니다.
```dataview
LIST
FROM #projects
WHERE !completed AND file.ctime <= date(today) - dur(1 month)
```
완료되지 않았으며, project 태그가 포함된 모든 Task를 검색합니다.
```dataview
TASK
WHERE !completed AND contains(tags, "#project")
```
SORT
SORT는 선택된 파일(또는 task)을 특정 규칙에 따라 정렬하는 데 사용됩니다.
단일 속성에 기반하여 정렬할 때, 구문은 SORT 속성 [ASC/DESC]
입니다. 여기서 ASC는 오름차순 정렬, DESC는 내림차순 정렬을 의미하며, 이들의 전체 명칭인 ASCENDING/DESCENDING으로도 작성할 수 있습니다.
SORT date [ASCENDING/DESCENDING/ASC/DESC]
정렬 기준이 되는 속성 값이 동일한 두 파일이 있는 경우, 여러 정렬 조건을 추가할 수 있습니다. 구문은 다음과 같습니다.
SORT field1 [ASCENDING/DESCENDING/ASC/DESC], ..., fieldN [ASC/DESC]
GROUP BY
GROUP BY
는 데이터를 특정 기준에 따라 그룹화하는 데 사용됩니다. 이를 통해 동일한 카테고리나 속성을 가진 데이터를 함께 볼 수 있습니다.
```dataview
TABLE
title,
count(file.link) as "파일 수"
FROM "노트"
GROUP BY tags
```
이 코드는 '노트' 폴더 내의 파일들을 태그별로 그룹화하고, 각 태그 그룹에 속하는 파일의 수를 표시합니다.
FLATTEN
FLATTEN
은 배열 형태의 데이터를 단일 요소로 분해하는 데 사용됩니다. 배열 내 각 항목을 별도의 행으로 표시할 수 있습니다.
```dataview
TABLE genres
FROM "폴더명"
```
dataview에서 배열형태를 출력하면 이런 형태로 출력이 됩니다.
```dataview
TABLE genres
FROM "폴더명"
FLATTEN genres
```
FLATTEN으로 출력하면 배열 내 항목들이 별도로 나열이 됩니다.
LIMIT & OFFSET
LIMIT
는 표시할 데이터의 수를 제한합니다.
TABLE
WHERE file.mtime >= date(today) - dur(1 day)
LIMIT 10
이 코드는 지난 달에 생성된 10개 파일을 검색합니다.
OFFSET
는 시작점을 지정하여 그 이후의 데이터만 표시합니다.
```dataview
TABLE
title
FROM "노트"
LIMIT 10 OFFSET 5
```
이 코드는 '노트' 폴더에서 6번째 파일부터 시작해 10개의 파일만 표시합니다.
CALCULATIONS
간단한 계산 기능도 지원합니다. sum
, average
, min
, max
와 같은 함수를 사용할 수 있습니다.
```dataview
TABLE
title,
file.size
FROM "노트"
WHERE file.size > 0
SORT sum(file.size) DESC
```
이 코드는 '노트' 폴더의 각 파일에 대해 파일 크기를 표시하고, 파일 크기가 0보다 큰 항목들에 대해 총합을 계산하여 크기 순으로 정렬합니다.
Dataview의 날짜 표시 변경
```dataview
TABLE without ID
file.name,
dateformat(file.ctime, "yyyy-MM-dd") as "생성일"
FROM "노트"
```
Dataview 설정에서 날짜형식을 변경할 수 있습니다. 날짜형식은 Luxon date format Option을 따릅니다. 데이터뷰별로 다른 방식으로 날짜를 표현하고자 한다면, Dataview 스크립트에서 dateformat 함수를 사용해야 합니다.
'옵시디언 활용 > Dataview' 카테고리의 다른 글
Dataview 심화: DataviewJS (0) | 2024.02.01 |
---|---|
Dataview 쿼리를 간단히 만들어주는 Basic dataview query builder (0) | 2024.01.31 |
Dataview 기초: 인라인 쿼리(Inline Query) (0) | 2024.01.31 |
Dataview 기초: 함수 (0) | 2024.01.30 |
Dataview 기초: 소개 (0) | 2024.01.26 |