옵시디언 활용/Dataview

Dataview 기초: 확장 문법

반응형

FROM

FROM 문은 결과의 출처를 결정하는 데 사용되며, 이 출처는 다음과 같습니다:

  • Tags: 해당 태그가 포함된 모든 파일을 선택하려면 FROM #tag를 사용합니다.
  • Folders: 해당 폴더 안의 모든 파일을 선택하려면 FROM "폴더"를 사용합니다.
  • Single Files: 특정 파일을 선택하려면 FROM "파일 경로"를 사용합니다.
  • Links: 특정 파일을 인용한 모든 파일을 선택하거나, 특정 파일에서 인용한 모든 파일을 선택할 수 있습니다.
    • 파일 [[A]]로 들어오는 모든 페이지를 얻으려면 FROM [[A]]를 사용합니다.
    • 파일 [[A]]에서 나가는 링크(즉, 해당 파일의 모든 링크)를 얻으려면 FROM outgoing([[A]])을 사용합니다.
! 또는 -를 사용하여 '제외'를 나타냅니다. 예를 들어, FROM -#Tag 또는 FROM !#Tag는 해당 태그를 제외한 모든 파일을 의미합니다. 폴더와 파일에도 마찬가지로 적용됩니다.
조건 간에는 ANDOR을 사용하여 '그리고'와 '또는'을 표시하며, 괄호를 사용하여 '그리고'와 '또는'의 관계를 명확히 할 수 있습니다.
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의 배열형태

```dataview
TABLE genres
FROM "폴더명"
```

dataview에서 배열형태를 출력하면 이런 형태로 출력이 됩니다.

FLATTEN으로 출력시 배열 표시

```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 함수를 사용해야 합니다.


 

반응형