System.Timestamp()(Stream Analytics)
Azure Stream Analytics에서 쿼리의 모든 단계에 있는 모든 이벤트에는 연결된 타임스탬프가 있습니다. System.Timestamp()는 이벤트의 타임스탬프를 검색하는 데 사용할 수 있는 시스템 속성입니다.
아래에서는 Azure Stream Analytics가 이벤트에 타임스탬프를 할당하는 방법을 설명합니다.
입력 이벤트 타임스탬프
입력 이벤트의 타임스탬프는 TIMESTAMP BY 절에 지정된 열 값(또는 식)으로 정의할 수 있습니다.
SELECT System.Timestamp() t
FROM input
TIMESTAMP BY MyTimeField
지정된 입력에 대해 TIMESTAMP BY 절을 지정하지 않으면 이벤트의 도착 시간이 타임스탬프로 사용됩니다. 예를 들어 이벤트 허브 입력의 경우 이벤트의 큐에 추가된 시간이 사용됩니다.
결과 이벤트 타임스탬프
계산을 수행할 때 결과 이벤트의 타임스탬프는 이 결과를 확인할 수 있는 가장 빠른 논리적 시간입니다.
Azure Stream Analytics의 기본 쿼리 작업(필터, 프로젝션, 집계 및 조인)이 결과에 대한 타임스탬프를 생성하는 방법을 살펴보겠습니다.
프로젝션
SELECT
Prop1,
Prop2,
Prop3 - Prop4 / 12,
System.Timestamp() t
FROM input
프로젝션은 이벤트의 타임스탬프를 변경하지 않으며 결과의 타임스탬프는 입력의 타임스탬프와 동일합니다.
Filter
SELECT *
FROM input
WHERE prop1 > prop2
필터는 이벤트의 타임스탬프를 변경하지 않습니다. 결과의 타임스탬프는 입력의 타임스탬프와 동일합니다.
시간 경과에 따른 GROUP BY
SELECT
userId,
AVG(prop1),
SUM(prop2),
System.Timestamp() t
FROM input
GROUP BY TumblingWindow(minute, 1), userId
집계 결과의 타임스탬프는 이 결과가 해당하는 기간의 끝입니다. Azure Stream Analytics의 다양한 창 유형을 설명하는 창(Azure Stream Analytics) 문서를 참조하세요.
내부 조인
SELECT
System.Timestamp()
FROM input1
JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10
내부 조인은 input1 및 input2에서 일치하는 이벤트 쌍에 해당하는 결과를 생성합니다.
input2에서 input1 및 e2의 이벤트 e1 일치를 나타내는 이벤트는 e1 및 e2의 최신 타임스탬프에 의해 타임스탬프됩니다.
왼쪽 외부 조인
SELECT
System.Timestamp()
FROM input1
LEFT JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10
왼쪽 외부 조인은 두 가지 형식의 결과를 생성합니다. 일부는 input1 및 input2의 일치하는 이벤트 쌍에 해당합니다. 다른 이벤트는 input1의 이벤트에만 해당하며 input2에서 일치하는 이벤트를 찾을 수 없음을 나타냅니다.
일치 항목을 나타내는 이벤트(input1 및 input2가 모두 포함됨)는 일치하는 입력의 최신 타임스탬프에 의해 타임스탬프가 지정됩니다(위의 INNER JOIN의 경우와 같이).
일치하는 항목이 아닌 이벤트(input2는 NULL)를 나타내는 이벤트는 일치하는 input2 이벤트가 발생할 수 있는 최신 논리적 시간으로 타임스탬프가 지정됩니다. instance 경우 위의 예제에서 input1의 타임스탬프 + 10분입니다.