Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
✅ Fluxo de eventos do Azure Stream Analytics ✅ Fabric
O operador analítico LAST permite pesquisar o evento mais recente em um fluxo de eventos dentro de restrições definidas. É útil nos cenários como a computação do último valor bom conhecido (por exemplo, não nulo), localização da última vez em que o evento correspondeu a determinados critérios etc.
No Stream Analytics, o escopo de LAST (ou seja, o quão distante no histórico do evento atual ele precisa parecer) é sempre limitado a um intervalo de tempo finito, usando a cláusula LIMIT DURATION. O LAST pode, opcionalmente, ser limitado a considerar apenas os eventos que correspondem ao evento atual em uma determinada propriedade ou condição usando as cláusulas PARTITION BY e WHEN. LAST não é afetado por predicados na cláusula WHERE, condições de junção na cláusula JOIN ou agrupamento de expressões na cláusula GROUP BY da consulta atual.
Comentário: LAST(<expression>, <default>) é equivalente a LAG(<expression>, 0, <default>) (que é o valor de deslocamento definido como '0'). Observe que LAG(<expressão>, 0, <padrão>) na verdade não é um constructo válido, uma vez que LAG leva um deslocamento maior ou igual a 1. Portanto, você deve usar o operador LAST, que foi introduzido para conveniência e melhor legibilidade.
Sintaxe
LAST(<scalar_expression >, [<default>])
OVER ( [PARTITION BY <partition key>] LIMIT DURATION(<unit>, <length>) [WHEN boolean_expression])
Argumentos
scalar_expression
O valor a ser retornado. É uma expressão de qualquer tipo que retorna um único valor (escalar) ou a expressão curinga '*'. Para '*' todo o evento será retornado e será contido no evento de resultado (registro aninhado). scalar_expression não pode conter outras funções analíticas ou funções externas.
padrão
O valor a ser retornado quando não houver critérios de correspondência de eventos. Se um valor padrão não for especificado, NULL será retornado. 'Nenhum evento' poderá ser o caso se não houver eventos anteriores dentro do intervalo de tempo especificado no limit_duration_clause ou se o evento existir, mas não corresponder à condição especificada no when_clause. Se o evento existir e o valor de scalar_expression for NULL, NULL será retornado. o padrão pode ser uma coluna, subconsulta ou outra expressão, mas não pode conter outras funções analíticas ou funções externas. o padrão deve ter exatamente o mesmo tipo que scalar_expression.
OVER ( [ partition_by_clause ] limit_duration_clause [when_clause])
partition_by_clause Partition BY <partition key> clause requests that only events whose value of
<A chave> de partição é a mesma que a do evento atual a ser considerada.
limit_duration_clause DURAÇÃO(<unidade>, <comprimento>):
Especifica quanto do histórico do evento atual deve ser considerado. Consulte DATEDIFF para obter uma descrição detalhada das unidades com suporte e suas abreviações. Se não forem encontrados eventos correspondentes suficientes dentro do intervalo DURATION, o <valor padrão> será retornado.
when_clause Especifica a condição booliana para os eventos a serem considerados na computação LAST. Se nenhum evento correspondente for encontrado dentro do intervalo DURATION, o <valor padrão> será retornado. O when_clause é opcional.
Tipos de retorno
O tipo de dados do scalar_expression especificado. NULL será retornado se scalar_expression
Comentários gerais
LAST é não determinístico. Os eventos são processados em ordem temporal. Se houver vários eventos com os mesmos eventos de carimbo de data/hora, serão processados na ordem de chegada.
Aplicar LAST no conjunto de resultados de uma função de janela pode produzir resultados inesperados. As funções de janela alteram o carimbo de data/hora dos eventos, pois cada operação de janela gera eventos no final da janela. O carimbo de data/hora atual de um evento pode ser acessado com system.timestamp(), após uma operação de janela, ele será diferente do atributo de hora do evento original. Se LAST não puder ser movido antes da operação da janela, considere usar CollectTop, ordenando pela hora do evento original.
Exemplos
Encontre a leitura mais recente do sensor não nulo:
SELECT
sensorId,
LAST(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading IS NOT NULL)
FROM input
Localize a última vez em que a leitura foi maior que 50:
SELECT
sensorId,
LAST(System.Timestamp()) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading > 50 )
FROM input