✅ Azure Stream Analytics ✅ Fabric Eventstream
스냅샷 창은 타임 스탬프를 포함하는 이벤트를 그룹화합니다. 특정 창 함수(예: SessionWindow())가 필요한 다른 창 형식과 달리 GROUP BY 절에 System.Timestamp()를 추가하여 스냅샷 창을 적용할 수 있습니다.
다음 다이어그램은 일련의 이벤트가 있는 스트림과 스냅샷 창에 매핑되는 방법을 보여 줍니다.
System.Timestamp()는 타임스탬프의 같음을 기반으로 이벤트를 창으로 그룹화하기 때문에 GROUP BY 절에서 키 열 또는 스냅샷 창 정의로 간주할 수 있습니다. 다른 창 함수와 결합하면 System.Timestamp()는 창 정의가 아닌 키로 처리됩니다. SYSTEM.Timestamp()는 GROUP BY 절에서 여러 창 함수를 사용하는 경우와 달리 다른 창 함수와 함께 사용할 때 오류를 생성하지 않습니다. GROUP BY에서 System.Timestamp() 및 창 함수를 모두 사용하면 결과를 일괄 처리하는 데 유용할 수 있습니다.
System.Timestamp()를 포함하는 식은 창으로 간주되지 않습니다. 예를 들어 GROUP BY DATEPART(minute, System.Timestamp())
"창을 지정해야 합니다."라는 오류와 함께 실패합니다.
문법
System.Timestamp()
예시
기본 예제
다음 예제에서는 정확히 동시에 발생하는 동일한 토픽 형식의 트윗 수를 반환합니다.
SELECT Topic, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
연속 창 스냅샷 예제
스냅샷 창의 일반적인 용도는 아래의 TumblingWindow와 같은 이전 창 함수를 통해 단일 타임스탬프에서 그룹화된 후 이벤트를 집계하는 것입니다.
다음 예제에서는 30분 간격 내에 동일한 사용자가 동일한 토픽 형식의 트윗 수를 반환합니다.
WITH PerInterval AS (
SELECT Topic, User, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, User, TumblingWindow(minute, 30)
)
SELECT * INTO UserTopicsCount FROM PerInterval
동일한 간격 내에 사용자 수와 토픽당 총 트윗을 찾으려면 이전 쿼리의 결과를 사용할 수 있습니다. 연속 창 결과에는 모두 30분 경계에 맞춰진 타임스탬프가 있으므로 스냅샷 창을 사용하여 타임스탬프 값이 모두 같으므로 각 경계에서 이벤트를 반환할 수 있습니다.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp()
이전 쿼리는 동일한 30분 간격 내에 사용자 수와 토픽당 총 트윗을 반환했습니다. 2시간당 한 번씩 동일한 결과를 얻으려면 GROUP BY 절에 2시간 연속 창을 추가합니다.
다음 쿼리는 각 2시간 기간의 끝에 있는 4개의 30분 간격에서 결과를 반환합니다.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp(), Tumbling (hour, 2)
집계 창 예제
System.Timestamp()를 집계 Windows() 구문의 창 중 하나로 사용할 수 있습니다.
SELECT
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
TumblingWindow(minute, 10),
TumblingWindow(minute, 20),
System.Timestamp())