연속 쿼리에서 스트림 간 조인 사용
BigQuery에서는 연속 쿼리에서 스트림 간 조인을 사용하여 두 개 이상의 실시간 데이터 스트림의 데이터를 분석하고 상호 연결할 수 있습니다. 스트림 간 조인은 시간 지향적 데이터 수집을 수신하는 두 개 이상의 테이블 간의 조인 작업입니다.
스트림 간 조인의 일반적인 사용 사례로는 금융 사기 감지, 고객 프로필 구축, 공급망 관리 최적화 등이 있습니다. 이러한 조인은 주요 유형의 상태 저장 작업입니다. 상태 저장 작업에 대한 자세한 내용은 지원되는 상태 저장 작업을 참조하세요.
지원되는 JOIN 유형
연속 쿼리에서 지원되는 JOIN 유형은 다음과 같습니다.
- 스트림 간 JOIN: 시간 지향적 데이터 수집을 수신하는 두 개 이상의 테이블 간의 조인 작업입니다.
- INNER JOIN.
지원되지 않는 JOIN 유형
연속 쿼리에서 지원되지 않는 JOIN 유형은 다음과 같습니다.
- 스트림-정적 테이블 JOIN: 조인된 테이블 중 하나 이상이 시간 지향적 데이터 수집을 수신하지 않는 정적 테이블인 조인입니다. 정적 테이블의 예로는 측정기준 테이블이 있습니다.
INNER이외의 다른 형태의 JOIN 작업.- 시간 지향적 JOIN 절이 없는 JOIN.
여러 스트림의 데이터 조인
다음 쿼리는 택시 탑승 테이블을 택시 요청 테이블에 조인하고 5분 시간 내에 요청자에게 가장 가까운 사용 가능한 택시를 식별한 후 이 데이터를 다른 BigQuery 테이블로 내보내는 방법을 보여줍니다.
INSERT INTO
`real_time_taxi_streaming.matched_rides`
SELECT
requests.timestamp AS request_time,
requests.request_id,
taxis.taxi_id,
ST_DISTANCE(
ST_GEOGPOINT(requests.longitude, requests.latitude),
ST_GEOGPOINT(taxis.longitude, taxis.latitude)
) AS distance_in_meters,
taxis.timestamp AS taxi_available_time
FROM
APPENDS (TABLE `real_time_taxi_streaming.ride_requests`,
CURRENT_TIMESTAMP() - INTERVAL 10 MINUTE) AS requests
INNER JOIN
APPENDS (TABLE `real_time_taxi_streaming.taxirides`,
CURRENT_TIMESTAMP() - INTERVAL 10 MINUTE) AS taxis
ON
requests.geohash = taxis.geohash
WHERE
taxis.ride_status = 'available'
AND taxis._CHANGE_TIMESTAMP BETWEEN(requests._CHANGE_TIMESTAMP - INTERVAL 5 MINUTE) AND requests._CHANGE_TIMESTAMP
AND ST_DWITHIN(
ST_GEOGPOINT(requests.longitude, requests.latitude),
ST_GEOGPOINT(taxis.longitude, taxis.latitude),
2000 -- Distance in meters
);
JOIN 고려사항
다음 섹션에서는 스트림 간 조인을 실행할 때 필요한 고려사항을 설명합니다.
제한사항
INNER JOIN작업만 지원됩니다.LEFT또는FULL OUTER와 같은 다른 형태는 지원되지 않습니다.INNER JOIN작업의 각 측면에서 연속 쿼리의 시작 시간을 지정해야 합니다.- 조인 키 (예:
table1.user_id = table2.user_id) 외에도JOIN절에 타임스탬프 열을 상수 간격으로 제한하는 조건이 포함되어야 합니다. 이 조건은 시스템이 일치하는 이벤트가 다른 스트림에 도착할 때까지 대기하는 시간을 제한합니다. 예를 들어 타임스탬프가 5분 간격 내에 있는 경우 한 스트림의 이벤트만 다른 스트림의 이벤트와 조인할 수 있다고 지정할 수 있습니다. 대칭 간격으로 제한되지는 않습니다. 예를 들어 조인 조건의 한쪽에는 5분 간격을 사용하고 다른 쪽에는 1시간 간격을 사용할 수 있습니다. - 스트림 간 조인으로 연속 쿼리를 시작할 때는
APPENDS함수만 지원됩니다.CHANGES함수는 지원되지 않습니다. _CHANGE_TIMESTAMP로 정의된 BigQuery 시스템 시간 열은 조인 작업에 지원되는 유일한 타임스탬프 열입니다. 사용자 정의 열은 지원되지 않습니다.- 윈도우 집계와 함께 사용하는 경우 문서화된 모든 윈도우 집계 제한사항을 따라야 합니다.
가격 책정 고려사항
BigQuery 연속 쿼리는 작업이 실행되는 동안 사용된 컴퓨팅
용량 (슬롯)을 기준으로 청구됩니다. 이 컴퓨팅 기반 모델은 조인과 같은 상태 저장 작업에도 적용됩니다. 조인을 사용하려면 쿼리가 활성 상태인 동안 시스템에서 '상태'를 저장해야 하므로 추가 슬롯 리소스가 사용됩니다. 조인 내에 저장된 컨텍스트 또는 데이터가 많을수록(예: JOIN 또는 WHERE 절에서 더 긴 시간 간격을 사용하는 경우) 더 많은 상태를 유지해야 하므로 슬롯 사용률이 높아집니다.
다음 단계
- BigQuery 연속 쿼리에 대해 자세히 알아보세요.
- 윈도우 집계를 사용하는 방법을 알아보세요.
- JOIN, 집계, 윈도우를 실행하는 방법을 알아보세요.