QuestDB의 Latest On 키워드 사용법

QuestDB는 타임시리즈 데이터 쿼리를 멋지게 하기 위해 sql extension 을 만들었습니다. 그 중에 하나인 "LATEST ON" 절에 대해 알아보겠습니다. 참고로 LATEST BY는 더 이상 사용하지 않는 deprecated 된 문법입니다. 

퀘스트디비(QuestDB) LASTEST ON 키워드 사용법

유명한 뉴욕 택시 샘플 데이터에 아래와 같이 쿼리를 해보겠습니다. (직접해보고 싶으신 부분은 지난 번 내용을 참고하세요.) ( 여기 클릭 )

SELECT payment_type, pickup_datetime, trip_distance

FROM trips;

퀘스트디비(QuestDB) LASTEST ON 키워드 사용법

여기서 payment_type 별로 가장 최신의 레코드만 보고 싶을 때 "LATEST ON" 키워드를 사용하면 됩니다. 

SELECT payment_type, pickup_datetime, trip_distance

FROM trips

LATEST ON pickup_datetime PARTITION BY payment_type;

퀘스트디비(QuestDB) LASTEST ON 키워드 사용법

LATEST ON 키워드 뒤에 오는 칼럼 자리에는 시계열 값을 가진 칼럼이 와야 합니다. (중요). 그래서 pickup_datetime이 올 수 있습니다.  payment_type 컬럼의 값(value) 별로 가장 최신 레코드를 보려고 하는 것이기 때문에 PARTION BY 키워드 뒤에는 payment_type 을 넣어줍니다.

pickup_datetime 의 칼럼(column)의 데이터 타입은 symbol 입니다. 퀘스트디비에서 사용하는 데이터 타입들을 참고하세요.

퀘스트디비(QuestDB) 데이터 타입 (Data Types)


이해를 돕기 위해서 아래 쿼리를 실행하면

SELECT payment_type, pickup_datetime

FROM trips

WHERE payment_type = 'Cash'

payment_type 이 Cash 인 pickup_datetime 레코드 중 제일 최신, 마지막 레코드가 2019년 6월 30일 데이터입니다. 이는 위에서 latest on 키워드를 사용해서 얻은 값과 동일합니다. 

퀘스트디비(QuestDB) LASTEST ON 키워드 사용법

* 참고로, order by를 사용했으나 데모 환경이라 할당된 메모리가 부족하여 쿼리 실행이 안되네요. 정렬은 메모리 자원을 사용합니다. 참고하세요. 


TL;DR - 

요약하면 LATEST ONPARTITION BY 뒤에 오는 칼럼 값(value) 별로, LATEST ON 키워드 뒤에 오는 시계열 값이 가장 최근인 레코드를 반환합니다.  

LATEST ON 키워드 뒤엔 시계열(timestamp) 타입의 데이터를 가진 컬럼(column, 열)이 와야합니다. LATEST BY 는 deprecated 됐습니다. (아직까지는 지원하기 때문에 같은 결과를 반환합니다. 하지만 공식문서에서 latest on 을 사용하라네요.) 

퀘스트디비(QuestDB) LASTEST BY

퀘스트DB, LATEST ON 키워드 공식문서 링크 : https://questdb.io/docs/reference/sql/latest-on/


- The End - 

Comments