(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como agregar métricas por dispositivo em Real-Time Analytics: passo a passo

João Barros 09 de November de 2026 4 min de leitura

Agregação por dispositivo em Real-Time Analytics permite sumarizar sinais (CPU, temperatura, erros) por dispositivo em janelas móveis, reduzindo ruído e suportando decisões em tempo real. Este tutorial mostra como configurar uma pipeline simples, agregar por device_id e emitir métricas agregadas regularmente — útil para dashboards e alertas.

Pré-requisitos

  • Conta com acesso a um serviço de ingestão de eventos em tempo real (ex.: Event Hub, Kafka ou Azure IoT Hub).
  • Um cluster ou serviço de processamento que suporte consultas em streaming (ex.: Azure Stream Analytics, Kusto/ADX ou Apache Flink).
  • Dados de telemetria com um identificador de dispositivo (device_id), timestamp e valor métrico (metric_value).
  • Conhecimentos básicos de KQL ou SQL de streaming; exemplo em KQL/ADX incluído.

Passo 1: Modelar os eventos e o esquema

É importante ter um esquema consistente. Cada evento deve incluir device_id, timestamp (UTC) e metric_value numérico. Ter também um event_type ou sensor_type ajuda a agrupar.

{
  "device_id": "device-123",
  "timestamp": "2026-11-09T12:34:56Z",
  "metric_name": "temperature",
  "metric_value": 23.7
}

Passo 2: Ingestão e normalização

Ingestão dos eventos para um tópico/stream. Normalizar timestamps para UTC e validar tipos evita surpresas na agregação por janelas. No Azure Event Hub ou IoT Hub, configure um consumer que grave no store de streaming do seu motor (ex.: Event Hub -> ADX ingestion).

Passo 3: Definir a janela móvel e a granularidade de saída

Escolha uma janela móvel (sliding window) que balanceie latência e estabilidade. Ex.: 1 minuto de janela com salto (hop) de 10 segundos — isto produz uma métrica atualizada a cada 10s com dados dos últimos 60s.

Passo 4: Escrever a consulta de agregação em KQL (exemplo ADX)

Exemplo usando KQL em Azure Data Explorer (ADX) para agregar por device_id e metric_name com média, contagem e percentil 95 em janelas móveis. Ajuste o nome da tabela de ingestão.

Telemetry
| where timestamp between (ago(10m) .. now())
| where isnotempty(device_id) and isnotempty(metric_value)
| summarize
    avg_value = avg(metric_value),
    count_events = count(),
    p95 = percentile(metric_value, 95)
  by device_id, metric_name, window = slidingwindow(1m, 10s)
| project window_start = window.start, window_end = window.end, device_id, metric_name, avg_value, count_events, p95

Passo 5: Emitir métricas agregadas para o downstream

Escreva o resultado para um sink que alimente dashboards ou alertas (ex.: Power BI, Azure Monitor Metrics, ou um tópico Kafka). No ADX pode usar

// Exemplo conceptual: exportar para Event Hub ou função que grava em Timescale/Influx
.create-or-alter function ExportAggregates() {
  Telemetry
  | where timestamp between (ago(10m) .. now())
  | summarize avg_value=avg(metric_value), count_events=count() by device_id, metric_name, window=slidingwindow(1m,10s)
  | project window_start=window.start, window_end=window.end, device_id, metric_name, avg_value, count_events
}

Passo 6: Tratar outliers e falta de dados

Filtre leituras inválidas antes da agregação (valores nulos, negativos quando impossíveis). Para dispositivos com poucos eventos, combine agregações com um mínimo de contagem para evitar métricas ruidosas.

... | where metric_value >= 0
| summarize avg_value=avg(metric_value), count_events=count() by device_id, metric_name, window=slidingwindow(1m,10s)
| where count_events >= 3

Verificar o resultado

Confirme que as métricas agregadas aparecem no sink com timestamps coerentes e frequência esperada (ex.: a cada 10s). Verifique para alguns device_id manualmente: compare a média calculada pela query com a média dos eventos brutos no intervalo. Monitorize latência de ponta a ponta e taxa de eventos por janela para garantir que a janela móvel tem dados suficientes.

Conclusão

Agregar métricas por dispositivo em Real-Time Analytics permite visualizar tendências locais e reduzir ruído, suportando alertas e dashboards mais fiáveis. Próximos passos: experimentar janelas diferentes, enriquecer com metadados do dispositivo e exportar para Power BI ou Azure Monitor. Dica: comece com janelas maiores e vá reduzindo até obter o equilíbrio entre latência e estabilidade — que janela está a testar primeiro?