QuestDB(퀘스트디비) ASOF JOIN(조인)


QuestDB(퀘스트디비) ASOF JOIN(조인)
퀘스트디비(QuestDB) ASOF JOIN 

ASOF JOIN 은 조인하려는 두 테이블의 타임스탬프가 정확히 일치하지 않아도 조인할 수 있게 해줍니다. 첫번째 테이블의 타임스탬프와 가까운 레코드를 가져다줍니다. 예를 보시면 쉽게 이해하실 것 같습니다.


bid 테이블과 ask 테이블이 아래와 같이 있습니다. 보시면 두 테이블의  ts 컬럼의 타임스탬프 값이 일치하지 않습니다. 

QuestDB(퀘스트디비) ASOF JOIN(조인)
bid 테이블

QuestDB(퀘스트디비) ASOF JOIN(조인)
ask 테이블 


bid 테이블과 ask 테이블을 ASOF JOIN 를 사용하여 조인하면, 

QuestDB(퀘스트디비) ASOF JOIN(조인)


쿼리 결과가 다음과 같습니다. bid 테이블의 2019-10-17T00:00:00.100000Z 와 같은 타임스탬프가
ask 테이블에 없지만 가장 가까운 타임스탬프인 2019-10-17T00:00:00.000000Z 의 레코드인 ask 컬럼의 100 을 가져왔습니다. ASOF JOIN 은 기준 테이블의 타임스탬프와 같거나 가장 가까운 이전 값을 가진 다른 테이블의 타임스탬프 데이터와 조인합니다. 

QuestDB(퀘스트디비) ASOF JOIN(조인)
출처 : https://questdb.io/

LT JOINSPLICE JOIN 도 있습니다. 다음 링크를 참고하세요. 

JOIN 키워드  공식 문서 : https://questdb.io/docs/reference/sql/join/


<< 참 고 >> 

ASOF JOIN 을 사용하려면 조인하려는 두 테이블 모두 designated 타임스탬프 컬럼이 있어야 합니다. 테이블에 designated timestamp column(지정/지명된 타임스탬프 칼럼/컬럼/열)이 있는 예는 아래와 같습니다. 

designated timestamp 컬럼 지정 예시
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);


- The End - 

Comments