Azure Stream Analytics는 이벤트 스트림을 통해 변환 및 계산을 수행하기 위한 SQL 쿼리 언어를 제공합니다.
T-SQL 구문의 하위 집합
이 문서에서는 Stream Analytics 쿼리 언어의 구문, 사용 및 모범 사례를 설명합니다. 이 문서에 사용된 모든 예제는 아래 설명된 대로 유료 부스 시나리오를 사용합니다.
Stream Analytics 쿼리 언어는 스트리밍 계산을 수행하기 위한 표준 T-SQL 구문의 하위 집합입니다.
유료 부스 시나리오
유료 스테이션은 일반적인 현상입니다 - 우리는 전 세계의 많은 고속도로, 교량 및 터널에서 발생합니다. 각 유료 스테이션에는 여러 개의 유료 부스가 있으며, 이는 안내원에게 통행료를 지불하는 것을 중지하거나 자동화됨을 의미하며, 부스 위에 놓인 센서가 유료 부스를 통과할 때 차량의 앞 유리에 부착된 RFID 카드를 스캔합니다. 이러한 유료 스테이션을 통해 차량의 통과를 흥미로운 작업을 수행할 수 있는 이벤트 스트림으로 쉽게 시각화할 수 있습니다.
도착 시간 및 애플리케이션 시간
Azure Stream Analytics와 같은 임시 시스템에서는 시간의 진행 상황을 이해해야 합니다. 시스템을 통해 흐르는 모든 이벤트에는 System.Timestamp()를 통해 액세스할 수 있는 타임스탬프가 함께 제공됩니다. 즉, 시스템의 모든 이벤트는 특정 시점을 나타냅니다. 이 타임스탬프는 사용자가 쿼리에서 지정할 수 있는 애플리케이션 시간이거나 시스템이 도착 시간에 따라 할당할 수 있습니다. 도착 시간은 입력 원본에 따라 다른 의미를 줍니다. Azure Event Hub의 이벤트의 경우 도착 시간은 이벤트 허브에서 제공하는 타임스탬프입니다. Blob Storage의 경우 Blob의 마지막으로 수정된 시간입니다. 타임스탬프는 데이터 캡처 또는 분석과 관련된 시점입니다. 사용자가 애플리케이션 시간을 사용하려는 경우 TIMESTAMP BY 키워드를 사용하여 사용할 수 있습니다. 위의 시나리오에서, 그것은 유료 부스에 차량의 항목입니다. 들어오는 데이터 스트림에서 "타임스탬프"를 식별하는 것이 중요합니다. 캡처된 시간도 이벤트 발생을 확인해야 합니다. 예를 들어 현금 카운터를 모니터링하고 청구된 고객 수를 계산하려는 경우 이벤트 타임스탬프는 "청구 생성" 시간이 아니라 "결제 성공"이어야 합니다.
타임스탬프 기준
Azure Stream Analytics에서 모든 이벤트에는 잘 정의된 타임스탬프가 있습니다. 사용자가 애플리케이션 시간을 사용하려는 경우 TIMESTAMP BY 키워드를 사용하여 들어오는 모든 이벤트를 타임스탬프하여 Windowing, Joins 등과 같은 임시 계산을 수행하는 데 사용해야 하는 페이로드의 열을 지정할 수 있습니다. 도착 시간 동안 TIMESTAMP BY를 모범 사례로 사용하는 것이 좋습니다. TIMESTAMP BY는 datetime 형식의 모든 열에서 사용할 수 있으며 모든 ISO 8601 형식이 지원됩니다. System.Timestamp()는 Select에서만 사용할 수 있습니다.
다음은 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 작업을 만들 때 필드 이름에 대/소문자 구분이 유지됩니다. 자세한 내용은 호환성 수준 구성 항목을 참조하세요.
이 부분에서는
Stream Analytics 쿼리 언어 사용에 대한 지침은 다음 항목을 참조하세요.