System.Timestamp() (Stream Analytics)
Todos os eventos em todas as fases da consulta no Azure Stream Analytics têm um carimbo de data/hora associado. System.Timestamp() é uma propriedade do sistema que pode ser utilizada para obter o carimbo de data/hora do evento.
Abaixo, descrevemos como o Azure Stream Analytics atribui carimbos de data/hora a eventos.
Carimbo de data/hora dos eventos de entrada
O carimbo de data/hora do evento de entrada pode ser definido pelo valor da coluna (ou uma expressão) especificado na cláusula TIMESTAMP BY :
SELECT System.Timestamp() t
FROM input
TIMESTAMP BY MyTimeField
Se uma cláusula TIMESTAMP BY não for especificada para uma determinada entrada, a hora de chegada do evento é utilizada como carimbo de data/hora. Por exemplo, a hora em fila de espera do evento será utilizada em caso de entrada do Hub de Eventos.
Carimbo de data/hora do evento resultante
Quando os cálculos são executados, o carimbo de data/hora do evento resultante é o momento lógico mais antigo em que este resultado pode ser determinado.
Vejamos como as operações básicas de consulta no Azure Stream Analytics (filtros, projeções, agregações e associações) geram os carimbos de data/hora do resultado.
Projeção
SELECT
Prop1,
Prop2,
Prop3 - Prop4 / 12,
System.Timestamp() t
FROM input
As projeções não alteram o carimbo de data/hora do evento, o carimbo de data/hora do resultado é o mesmo que o carimbo de data/hora da entrada.
Filtro
SELECT *
FROM input
WHERE prop1 > prop2
Os filtros não alteram o carimbo de data/hora do evento. O carimbo de data/hora do resultado é o mesmo que o carimbo de data/hora da entrada.
JANELA AGRUPAR POR ao longo do tempo
SELECT
userId,
AVG(prop1),
SUM(prop2),
System.Timestamp() t
FROM input
GROUP BY TumblingWindow(minute, 1), userId
O carimbo de data/hora do resultado da agregação é o fim da janela de tempo à qual este resultado corresponde. Veja Artigos do Windowsing (Azure Stream Analytics) que descrevem diferentes tipos de janela no Azure Stream Analytics.
ASSOCIAÇÃO INTERNA
SELECT
System.Timestamp()
FROM input1
JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10
Uma associação interna produz resultados que correspondem a pares de eventos correspondentes de input1 e input2.
O evento que representa a correspondência do evento e1 de input1 e e2 de input2 é marcado pela data/hora dos carimbos de data/hora mais recentes de e1 e e2.
ASSOCIAÇÃO EXTERNA À ESQUERDA
SELECT
System.Timestamp()
FROM input1
LEFT JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10
Uma associação externa à esquerda produz resultados de dois tipos. Alguns correspondem a um par de eventos correspondentes de input1 e input2; outros correspondem apenas a um evento de input1 e indicam que não foi encontrado nenhum evento correspondente da entrada2.
Os eventos que representam uma correspondência (tem entrada1 e entrada2) são marcados pelo carimbo de data/hora mais recente dos carimbos de data/hora das entradas correspondentes (como no caso da ASSOCIAção INTERNA acima).
Os eventos que representam não correspondências (input2 é NULL) são marcados por data/hora pela hora lógica mais recente em que um evento input2 correspondente poderia ter ocorrido. Por exemplo, no exemplo acima, é o carimbo de data/hora da entrada1 + 10 minutos.