Labs.dedesoso ACTIVITIES

대대소소의 연구소 입니다.

ABOUT US

블로거 대대소소가 운영하는 블로그입니다. 다양한 정보와 인사이트를 공유합니다.

INNOVATION

최신 기술과 트렌드를 통해 혁신적인 컨텐츠를 제공합니다.

CONTENT

유용하고 흥미로운 컨텐츠를 지속적으로 업데이트합니다.

옵시디언 Dataview 플러그인으로 노트를 데이터베이스처럼 활용하기 3탄

728x90

🔧 고급 쿼리 기법

기본 쿼리를 이해했다면, 이제 더 강력한 고급 기법을 알아보겠습니다.

1️⃣ 필터링과 정렬

WHERE 구문을 사용하여 특정 조건에 맞는 데이터만 필터링할 수 있습니다:

 
markdown
```dataview
table rating, author, genre
from "books"
where rating >= 8 and genre = "소설"
sort rating desc
 
### 2️⃣ 그룹화

GROUP BY를 사용하여 데이터를 그룹화할 수 있습니다:

```markdown
```dataview
table rows.file.link as "책", length(rows) as "수량"
from "books"
group by author
sort length(rows) desc
 
### 3️⃣ 계산 필드

계산된 새로운 필드를 생성할 수 있습니다:

```markdown
```dataview
table rating, (time-finished - time-started).days as "읽는데 걸린 일수"
from "books"
where time-finished
 
### 4️⃣ 인라인 쿼리

마크다운 텍스트 안에 직접 간단한 Dataview 표현식을 삽입할 수 있습니다:

```markdown
오늘(`= date(today)`)은 내 노트 시스템에 총 `= length(this.file.outlinks)` 개의 링크가 있습니다.

💻 JavaScript로 확장하기

더 복잡한 쿼리나 맞춤형 시각화가 필요하다면 DataviewJS를 활용할 수 있습니다.

기본 DataviewJS 활용

2021년에 읽은 책을 장르별로 그룹화하고 평점순으로 정렬하는 예:

 
javascript
```dataviewjs
for (let group of dv.pages("#book").where(p => p["time-read"].year == 2021).groupBy(p => p.genre)) {
    dv.header(3, group.key);
    dv.table(["제목", "읽은 날짜", "평점"],
        group.rows
            .sort(k => k.rating, 'desc')
            .map(k => [k.file.link, k["time-read"], k.rating]))
}
 
이 코드는 다음과 같은 결과를 생성합니다:

### 소설
| 제목 | 읽은 날짜 | 평점 |
|------|-----------|------|
| 책 A | 2021-05-15 | 9 |
| 책 B | 2021-06-20 | 8 |

### 과학
| 제목 | 읽은 날짜 | 평점 |
|------|-----------|------|
| 책 C | 2021-02-10 | 9 |
| 책 D | 2021-03-05 | 7 |

### 인라인 DataviewJS

인라인 JavaScript 표현식도 지원됩니다:

```markdown
 



728x90