Stream Analytics 쿼리 언어 참조

Azure Stream Analytics는 이벤트 스트림을 통해 변환 및 계산을 수행하기 위한 SQL 쿼리 언어를 제공합니다.

스트림 분석 쿼리 언어, T-SQL 구문의 하위 집합

이 문서에서는 스트림 분석 쿼리 언어의 구문과 사용법 및 사용 시의 모범 사례에 대해 설명합니다. 이 문서에서 사용하는 모든 예제에서는 아래에서 설명하는 요금소 창구 시나리오를 사용합니다.

스트림 분석 쿼리 언어는 스트리밍 계산을 수행하기 위한 표준 T-SQL 구문의 하위 집합입니다.

요금소 창구 시나리오

요금소는 전 세계의 여러 고속도로, 교량, 터널 등에서 흔히 볼 수 있습니다. 각 요금소에는 여러 창구가 있으며, 각 창구에서는 수작업으로 요금을 징수할 수도 있고(차량을 멈추고 징수원에게 요금을 지불해야 함) 자동화 방식을 사용할 수도 있습니다(창구를 통과할 때 창구 위쪽에 설치된 센서가 차량의 바람막이에 부착된 RFID 카드를 스캔함). 이러한 요금소를 통과하는 차량 흐름을 흥미로운 작업을 수행할 수 있는 이벤트 스트림으로 쉽게 시각화할 수 있습니다.

도착 시간과 적용 시간 비교

Azure 스트림 분석과 같은 일시적인 시스템에서는 시간의 경과를 이해해야 합니다. 시스템을 통해 흐르는 모든 이벤트에는 System.Timestamp()를 통해 액세스할 수 있는 타임스탬프가 함께 제공됩니다. 즉, 시스템의 모든 이벤트는 특정 시점을 나타냅니다. 이 타임스탬프는 사용자가 쿼리에서 지정할 수 있는 적용 시간일 수도 있고, 시스템이 도착 시간을 기준으로 하여 타임스탬프를 할당할 수도 있습니다. 도착 시간은 입력 원본에 따라 서로 다른 의미를 줍니다. Azure Event Hub의 이벤트의 경우 도착 시간은 이벤트 허브에서 제공하는 타임스탬프입니다. Blob Storage의 경우 Blob의 마지막으로 수정된 시간입니다. 타임스탬프는 데이터 캡처 또는 분석과 관련된 시점입니다. 사용자가 애플리케이션 시간을 사용하려는 경우 TIMESTAMP BY 키워드(keyword) 사용하여 애플리케이션 시간을 사용할 수 있습니다. 위의 시나리오에서 적용 시간은 차량이 요금소 창구로 진입하는 시간입니다. 들어오는 데이터 스트림에서 "타임스탬프"를 식별하는 것이 중요합니다. 캡처된 시간도 이벤트 발생을 확인해야 합니다. 예를 들어 현금 카운터를 모니터링하고 청구된 고객 수를 계산하려는 경우 이벤트 타임스탬프는 "청구서 생성" 시간이 아닌 "결제 성공"이어야 합니다.

TIMESTAMP BY

Azure 스트림 분석에서 모든 이벤트에는 올바르게 정의된 타임스탬프가 있습니다. 사용자가 애플리케이션 시간을 사용하려는 경우 TIMESTAMP BY 키워드(keyword) 사용하여 들어오는 모든 이벤트를 타임스탬프하여 Windowing, Joins 등과 같은 임시 계산을 수행하는 데 사용해야 하는 페이로드의 열을 지정할 수 있습니다. 도착 시간 동안 TIMESTAMP BY를 모범 사례로 사용하는 것이 좋습니다. TIMESTAMP BY는 datetime 형식의 모든 열에서 사용할 수 있으며 모든 ISO 8601 형식이 지원됩니다. System.Timestamp()는 선택에서만 사용할 수 있습니다.

아래에는 이벤트 적용 시간으로 EntryTime 열을 사용하는 TIMESTAMP BY 예제가 나와 있습니다.

  
SELECT TollId, EntryTime AS VehicleEntryTime, LicensePlate, State, Make, Model, VehicleType, VehicleWeight, Toll, Tag   
FROM TollTagEntry TIMESTAMP BY EntryTime  
  

필드 이름 대/소문자 구분

호환성 수준 1.0을 사용하여 만든 작업의 필드 이름은 Azure Stream Analytics 엔진에서 처리할 때 소문자(대/소문자를 구분하지 않음)로 변경됩니다. 대/소문자 구분 스키마(예: JSON)를 지원하는 입력 형식의 경우 필드 이름이 대/소문자를 구분하지 않는 방식으로 비교할 때 중복 필드가 있는 이벤트를 생성할 수 있습니다. 그러한 이벤트는 잘못된 이벤트로 간주되며, 처리 중에 삭제됩니다.

호환성 수준 1.1 이상을 사용하여 Stream Analytics 작업을 만들 때 필드 이름에 대/소문자 구분이 유지됩니다. 자세한 내용은 호환성 수준 구성 항목을 참조하세요.

섹션 내용

스트림 분석 쿼리 언어 사용에 대한 지침은 다음 항목을 참조하세요.

참고 항목