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
Detecta anomalias temporárias em um evento de série temporal.
O modelo de machine learning subjacente usa o algoritmo de estimativa de densidade de kernel adaptável.
Sintaxe
AnomalyDetection_SpikeAndDip(
<scalar_expression>,
<confidence>,
<historySize>,
<mode>)
OVER ([PARTITION BY <partition key>]
LIMIT DURATION(<unit>, <length>)
[WHEN boolean_expression])
Argumentos
scalar_expression
A coluna de evento ou o campo computado sobre o qual o modelo executa a detecção de anomalias. Os valores permitidos para esse parâmetro incluem tipos de dados FLOAT ou BIGINT que retornam um único valor (escalar).
A expressão curinga * não é permitida. Além disso, scalar_expression não pode conter outras funções analíticas ou funções externas.
confiança
Um número percentual de 1,00 a 100 (inclusive) que define a confidencialidade do modelo de machine learning. Quanto menor a confiança, maior o número de anomalias detectadas e vice-versa. Comece com um número arbitrário entre 70 e 90 e ajuste-o com base nos resultados observados no desenvolvimento ou teste.
historySize
O número de eventos em uma janela deslizante com a qual o modelo aprende continuamente e usa para pontuar o próximo evento para anomalias. Normalmente, isso deve representar o período de tempo de comportamento normal para permitir que o modelo sinalize uma anomalia subsequente. Comece com uma adivinhação educada usando logs históricos e ajuste com base nos resultados observados no desenvolvimento ou teste.
modo
Um parâmetro de cadeia de caracteres cujo valor é "picos", "dips" ou "spikesanddips", para detectar apenas picos, apenas quedas ou picos e quedas, respectivamente.
OVER ( [ partition_by_clause ] limit_duration_clause [when_clause])
partition_by_clause
Usado para particionar o treinamento de um modelo com base em uma coluna específica nos eventos. O modelo aplica as mesmas configurações de parâmetro de função em todas as partições.
limit_duration_clause DURATION(unit, length)
O tamanho da janela deslizante no Stream Analytics em termos de tempo. O tamanho recomendado dessa janela de tempo é o equivalente ao tempo necessário para gerar o número de eventos historySize em estado estável.
when_clause
Especifica a condição booliana para os eventos a serem aceitos pelo modelo para executar a detecção de anomalias. O when_clause é opcional.
Tipos de retorno
A função retorna um registro aninhado composto das seguintes colunas:
IsAnomaly
UM BIGINT (0 ou 1) que indica se o evento era anômíncrono ou não.
Pontuação
A pontuação p-value computada (float) que indica o quão anômalo é um evento. Pontuações mais baixas significam uma probabilidade menor de que o evento faça parte da mesma distribuição e, portanto, quanto mais anômalo for.
Exemplos
O exemplo a seguir pressupõe uma taxa de entrada uniforme de 1 evento por segundo em uma janela deslizante de 2 minutos com um tamanho histórico de 120 eventos. A instrução SELECT final extrai e apresenta a pontuação e o status de anomalia com um nível de confiança de 95%%.
WITH AnomalyDetectionStep AS
(
SELECT
EVENTENQUEUEDUTCTIME as time,
CAST(temperature AS FLOAT) as temp,
AnomalyDetection_SpikeAndDip(CAST(temperature AS FLOAT), 95, 120, 'spikesanddips')
OVER(LIMIT DURATION(second, 120)) AS SpikeAndDipScores
FROM input
)
SELECT
time,
temp,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'Score') as FLOAT) AS
SpikeAndDipScore,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'IsAnomaly') AS BIGINT) AS
IsSpikeAndDipAnomaly
INTO output
FROM AnomalyDetectionStep
Exemplo com um fluxo de entrada não uniforme que se torna uniforme usando uma janela em cascata de 1 segundo:
WITH SmootheningStep AS
(
SELECT
System.Timestamp() as time,
AVG(CAST(temperature as float)) as temp
FROM input
GROUP BY TUMBLINGWINDOW(second, 1)
),
AnomalyDetectionStep AS
(
SELECT
time,
temp,
AnomalyDetection_SpikeAndDip(temp, 95, 120, 'spikesanddips')
OVER(LIMIT DURATION(second, 120)) as SpikeAndDipScores
FROM SmootheningStep
)
SELECT
time,
temp,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'Score') AS FLOAT) As
SpikeAndDipScore,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'IsAnomaly') AS BIGINT) AS
IsSpikeAndDipAnomaly
INTO output
FROM AnomalyDetectionStep
Exemplo com uma consulta particionada para treinar um modelo separado por sensor:
WITH AnomalyDetectionStep AS
(
SELECT
sensorid,
System.Timestamp() AS time,
CAST(temperature AS FLOAT) AS temp,
AnomalyDetection_SpikeAndDip(CAST(temperature AS FLOAT), 95, 120, 'spikesanddips')
OVER(PARTITION BY sensorid LIMIT DURATION(second, 120)) AS SpikeAndDipScores
FROM input
)
SELECT
CAST (sensorid AS NVARCHAR(max)) AS sensoridstring,
time,
temp,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'Score') as float) AS
SpikeAndDipScore,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'IsAnomaly') AS BIGINT) AS
IsSpikeAndDipAnomaly
INTO output
FROM AnomalyDetectionStep