QuestDB의 Latest On 키워드 사용법
QuestDB는 타임시리즈 데이터 쿼리를 멋지게 하기 위해 sql extension 을 만들었습니다. 그 중에 하나인 "LATEST ON" 절에 대해 알아보겠습니다. 참고로 LATEST BY는 더 이상 사용하지 않는 deprecated 된 문법입니다.
유명한 뉴욕 택시 샘플 데이터에 아래와 같이 쿼리를 해보겠습니다. (직접해보고 싶으신 부분은 지난 번 내용을 참고하세요.) ( 여기 클릭 )
SELECT payment_type, pickup_datetime, trip_distance
FROM trips;
여기서 payment_type 별로 가장 최신의 레코드만 보고 싶을 때 "LATEST ON" 키워드를 사용하면 됩니다.
SELECT payment_type, pickup_datetime, trip_distance
FROM trips
LATEST ON pickup_datetime PARTITION BY payment_type;
LATEST ON 키워드 뒤에 오는 칼럼 자리에는 시계열 값을 가진 칼럼이 와야 합니다. (중요). 그래서 pickup_datetime이 올 수 있습니다. payment_type 컬럼의 값(value) 별로 가장 최신 레코드를 보려고 하는 것이기 때문에 PARTION BY 키워드 뒤에는 payment_type 을 넣어줍니다.
pickup_datetime 의 칼럼(column)의 데이터 타입은 symbol 입니다. 퀘스트디비에서 사용하는 데이터 타입들을 참고하세요.
이해를 돕기 위해서 아래 쿼리를 실행하면
SELECT payment_type, pickup_datetime
FROM trips
WHERE payment_type = 'Cash'
payment_type 이 Cash 인 pickup_datetime 레코드 중 제일 최신, 마지막 레코드가 2019년 6월 30일 데이터입니다. 이는 위에서 latest on 키워드를 사용해서 얻은 값과 동일합니다.
TL;DR -
요약하면 LATEST ON 은 PARTITION BY 뒤에 오는 칼럼 값(value) 별로, LATEST ON 키워드 뒤에 오는 시계열 값이 가장 최근인 레코드를 반환합니다.
LATEST ON 키워드 뒤엔 시계열(timestamp) 타입의 데이터를 가진 컬럼(column, 열)이 와야합니다. LATEST BY 는 deprecated 됐습니다. (아직까지는 지원하기 때문에 같은 결과를 반환합니다. 하지만 공식문서에서 latest on 을 사용하라네요.)
퀘스트DB, LATEST ON 키워드 공식문서 링크 : https://questdb.io/docs/reference/sql/latest-on/
- The End -
Comments
Post a Comment