퀘스트디비(QuestDB) SAMPLE BY 키워드 간단 사용법 소개
![]() |
https://questdb.io/ |
퀘스트디비(QuestDB)에서 사용되는 SAMPLE BY 키워드의 사용법을 간단히 소개합니다.
SAMPLE BY 키워드는 Select 문에서 사용할 수 있고, 시계열 데이터 (timeseries data)를 일정 단위로 묶어서 요약하는데 사용됩니다. (의미가 헷갈리시면 뒤에 나오는 예를 보시면 금방 이해하실 것입니다.)
SAMPLE BY 키워드 뒤에 단위를 입력합니다. 30분으로 묶으려면 30m, 30일로 묶으려면 30d 이런식으로 사용하면 됩니다. 예) SELECT timestamp, avg(price) FROM trades SAMPLE BY 30m;
![]() |
https://questdb.io/ |
한가지 중요한 점은 SAMPLE BY 키워드를 사용하려면 designated timestamp 로 명시된 컬럼이 존재해야 합니다. 테이블에 designated timestamp column(지정/지명된 타임스탬프 칼럼/컬럼/열)이 있는 예는 아래와 같습니다.
![]() |
https://questdb.io/ |
designated timestamp 로 지정/지명/선택하는 방법은 1) 테이블 생성시 2) SELECT문에서 타임스탬프 함수를 사용하여 지정하는 방법이 있습니다.
1)
CREATE TABLE
temperatures(ts timestamp, sensorID symbol, sensorLocation symbol, reading double)
timestamp(ts);
2)
(SELECT cast(dateTime AS TIMESTAMP) ts, device, value FROM readings) timestamp(ts);
아래와 같이 trades 테이블에는 여러 column이 있는데 그 중에 timestamp 형식의 데이터를 가진 timestamp 컬럼이 있습니다.
![]() |
trade 테이블 스키마(schema) |
![]() |
trade 테이블 쿼리 결과 화면 |
trade 테이블에서 SAMPLE BY 30m 으로 쿼리를 해보겠습니다. 30m 은 30분 단위로 묶게됩니다.
쿼리 결과를 보시면 타임스탬프 컬럼을 30분 단위로 묶어서 가격(price)의 평균을 낸 결과를 보실 수 있습니다.
![]() |
Sample By 키워드 사용 결과 |
특정 시간 대에 데이터가 없는 경우가 있을 수 있습니다. 이때 Fill 옵션을 활용하실 수 있습니다.
Fill 키워드를 사용할 때 fillOption 전략을 사용하면 됩니다.
![]() |
https://questdb.io/ |
![]() |
https://questdb.io/ |
![]() |
https://questdb.io/ |
여러개의 fill 값을 사용하실 수도 있습니다.
![]() |
https://questdb.io/ |
ALIGN TO 키워드도 있습니다. 타임존, 오프셋, 캘린더 날짜 등을 고려해서 샘플을 계산할 수 있습니다. 더 자세한 내용은 퀘스트디비 공식 문서를 참고해주세요.
SAMPLE BY 키워드 공식 문서 : https://questdb.io/docs/reference/sql/sample-by
- The End -
Comments
Post a Comment