Introdução

No ambiente de negócios atual, a capacidade de analisar dados à medida que chegam, não horas depois, pode significar a diferença entre aproveitar uma oportunidade e perdê-la completamente. Painéis de análise em tempo real fornecem equipes operacionais, executivos e analistas de dados com insights continuamente atualizados em métricas como saúde do sistema, comportamento do cliente, leituras de sensores de IoT e transações financeiras. Construir um painel assim requer uma infraestrutura que pode ingerir dados de alta velocidade, armazená-lo eficientemente e responder a consultas complexas em segundos.

O Azure Data Explorer (ADX) surge como uma solução líder projetada especificamente para essas demandas. Ele oferece pipelines de ingestão gerenciados, armazenamento colunar otimizado para séries temporais e dados de log, e o poderoso Kusto Query Language (KQL) para transformar eventos brutos em visualizações acionáveis. Este artigo fornece um guia prático e prático para construir um painel de análise em tempo real de produção usando o Azure Data Explorer e integrando-o com o Power BI para relatórios interativos. Você aprenderá como configurar um cluster ADX, transmitir dados de fontes como o Event Hubs, escrever consultas eficientes do KQL, conectar-se ao Power BI e otimizar todo o gasoduto para atualizações de baixa latência.

O que é o Azure Data Explorer?

O Azure Data Explorer é um serviço de análise de dados big que se destaca na análise interativa de grandes volumes de dados estruturados e semiestruturados. É construído para cenários como monitoramento de aplicações[, Telemetria de IoT, análise de log de segurança[, e inteligência de negócios[[]] onde os dados chegam continuamente e as consultas devem retornar resultados em segundos ou até milissegundos.

Principais características que fazem ADX ideal para painéis em tempo real incluem:

  • Ingestão de fluxo: Ingerir dados de Azure Event Hubs, IoT Hub, Kafka, e outras fontes de streaming com latências tão baixas quanto poucos segundos.
  • Armazenamento e indexação de colunas: Os dados são compactados e indexados usando índices invertidos e de árvores B, permitindo a digitalização e filtragem rápidas.
  • Kusto Query Language (KQL): Uma linguagem somente para leitura, SQL-like com operadores incorporados para análise de séries temporais, funções estatísticas, junções e agregações.
  • Integração de NAtive Power BI: O modo DirectQuery e o modo de importação permitem que os painéis refresquem automaticamente ou em tempo quase real.
  • Auto-scaling e gerenciamento de custos: Os clusters podem escalar o cálculo e armazenamento de forma independente, e você pode definir uma política de cache para manter dados quentes na memória para consultas rápidas.

ADX é frequentemente comparado a armazéns de dados tradicionais como Azure Synapse ou Amazon Redshift, mas é otimizado para alta cardinalidade (por exemplo, milhões de dispositivos únicos) e só para as cargas de trabalho ] típicas de logs e séries temporais. Para uma compreensão mais profunda, consulte a documentação oficial do Azure Data Explorer[.

Configurando o Ambiente

Criar um cluster de exploração de dados Azure

Para começar, faça login no portal azul e crie um novo recurso do tipo "Azure Data Explorer Cluster". Escolha uma assinatura, grupo de recursos e região que se alinha com suas fontes de dados (de preferência a mesma região para minimizar a latência). Selecione um SKU de computação baseado na taxa de ingestão esperada e concurrância de consultas:

  • Dev/Test: Dev(Standard D13 v2) ou Standard D14 v2 para pequenas cargas de trabalho.
  • Produção: Standard L8s v2, Standard L16s v2, ou a mais recente família SKU com SSDs NVMe locais (por exemplo, Standard L8s v3) para alta taxa de rendimento.
  • Alta concordância: Aglomerados com várias instâncias que podem escalar automaticamente com base na CPU ou carga de ingestão.

Depois de o cluster ser implantado, crie um banco de dados dentro dele. Use as políticas de retenção e cache padrão inicialmente. Para painéis em tempo real, você pode querer definir uma política de cache ] de vários dias (ou semanas) para que todos os dados recentes sejam servidos da memória. A política de retenção deve ser longa o suficiente para cobrir suas necessidades de relatórios (por exemplo, 30-90 dias).

Configurando Fontes de Ingestão de Dados

Os painéis em tempo real dependem de dados de streaming. ADX suporta várias abordagens de ingestão:

  • Event Hubs: Mais comum para logs e telemetria. Crie um espaço de nomes Event Hubs e um hub, então configure uma conexão de dados em ADX que mapeia os eventos JSON ou Avro para um esquema de tabela.
  • IoT Hub: Para dispositivos IoT, o IoT Hub fornece autenticação do dispositivo e encaminhamento de mensagens diretamente para ADX.
  • Kafka: Use o conector ADX Kafka para trazer fluxos de Apache Kafka ou Confluente.
  • Blob Storage/Data Lake:] Para a ingestão em lote ou quase em tempo real de arquivos Parquet/CSV armazenados em Azure Blob ou ADLS Gen2.

Ao configurar os Hubs de Evento, certifique-se de que a contagem de partições corresponda às suas necessidades de rendimento. ADX pode ingerir dados de várias partições simultaneamente. Para cada conexão de dados, você irá definir uma tabela e um mapeamento que transforma os campos JSON em colunas ADX. O mapeamento também pode lidar com conversões de tipos de dados (por exemplo, datas de época até à data).

Ingerindo Dados em Tempo Real

Criar Tabelas e Mapeamentos

Antes de ingerir, crie a tabela de destino no seu banco de dados ADX usando o KQL. Por exemplo, uma tabela para registros de erros de aplicativos pode parecer:

.create table AppLogs (Timestamp: datetime, Level: string, Service: string, Message: string, CorrelationId: string)

Em seguida, crie um mapeamento de ingestão para o formato que sua fonte de streaming usa. Para JSON a partir de Event Hubs, o comando é:

.create table AppLogs ingestion json mapping 'AppLogsJsonMapping' '[{"column":"Timestamp","datatype":"datetime","properties":{"path":"$.timestamp"}},{"column":"Level","datatype":"string","properties":{"path":"$.level"}},{"column":"Service","datatype":"string","properties":{"path":"$.service"}},{"column":"Message","datatype":"string","properties":{"path":"$.message"}},{"column":"CorrelationId","datatype":"string","properties":{"path":"$.correlationId"}}]'

Esses mapeamentos dizem ao ADX como extrair campos de cada evento.

Configurar a Ligação de Eventos

No portal Azure, navegue até o seu banco de dados ADX, selecione "Conexões de dados" e adicione uma conexão Event Hubs. Forneça o espaço de nomes do Event Hubs, nome do hub, grupo de consumidores (use um grupo de consumidores dedicado para ADX para evitar conflitos) e o nome da tabela. Especifique a referência de mapeamento que você criou. O ADX irá automaticamente começar a consumir eventos e torná-los disponíveis para consultas em segundos.

Para cenários de alta produtividade, considere usar ]difusão de ingestão (ativado no cluster) em vez de ingestão em lote. A ingestão de fluxo escreve dados diretamente nas extensões colunares sem estadiamento intermediário, fornecendo latências em menos de 10 segundos. Para a maioria dos painéis em tempo real, este é o modo preferido. A ingestão de lote (padrão) coleta dados por até alguns minutos antes de finalizar as extensões, o que pode introduzir 2-5 minutos de atraso.

Consultando com Kusto Consultar Linguagem (KQL)

O coração de qualquer painel ADX é as consultas do KQL que agregam e filtram dados em tempo real. Abaixo estão os padrões que você usará com frequência.

Filtragem e agregação básicas

Para contar os eventos de erro por serviço durante a última hora em caixas de um minuto:

AppLogs
| where Timestamp > ago(1h)
| where Level == "Error"
| summarize ErrorCount = count() by Service, bin(Timestamp, 1m)
| order by Timestamp asc

Isto devolve uma série temporal pronta para um gráfico de linhas.

Cálculos Percentil

Para as métricas de latência, você pode querer P50, P95 e P99:

ServiceLatency
| where Timestamp > ago(30m)
| summarize P50 = percentile(LatencyMs, 50), P95 = percentile(LatencyMs, 95), P99 = percentile(LatencyMs, 99) by Service

Juntando-se com Dados de Referência

Muitas vezes, os painéis precisam enriquecer eventos com dados de busca estática (por exemplo, locais de dispositivos). ADX suporta junções leves. Por exemplo, junte o fluxo de telemetria com uma tabela de dispositivos:

Telemetry
| where Timestamp > ago(15m)
| lookup Devices on DeviceId
| project Timestamp, DeviceId, Region, MetricValue

Para tabelas de referência grandes, considere materializá-las usando vistas materializadas ou armazená-las em um cluster separado com uma política de cache apropriada.

Funções da Série Temporal

ADX inclui operações poderosas de séries temporais como para detecção de anomalias, para sazonalidade e para análise de frequência. Exemplo: detectar anomalias nas contagens de erros HTTP:

AppLogs
| where Timestamp > ago(2h)
| make-series ErrorCount = count() on Timestamp step 1m
| extend anomalies = series_decompose(ErrorCount, -1, 2.0, 'ok')
| mv-expand Timestamp, ErrorCount, anomalies
| where anomalies[2] < 0 or anomalies[2] > 0

Tais consultas são avançadas, mas podem alimentar painéis de alerta diretamente.

Para uma referência completa, consulte a documentação da linguagem Kusto Query Language .

Construindo o Painel de energia BI

Ligando o poder BI ao ADX

O Azure Data Explorer integra-se com o Power BI através do conector Azure Data Explorer (Kusto). Para conectar:

  1. Abrir a área de trabalho do BI de energia, clique em "Get Data" > "Mais..."
  2. Procure por "Azure Data Explorer" e selecione o conector.
  3. Digite o seu URL de cluster (por exemplo, ]) e o nome do banco de dados.
  4. Escolha entre Importar (os dados são puxados para Power BI e atualizados periodicamente) ou DirectQuery[ (as consultas são enviadas para ADX em cada interação). Para painéis em tempo real, use DirectQuery. Isto garante que cada filtro, slicer e visual desencadeie uma consulta do KQL contra os dados mais recentes.

A gravar as Consultas KQL no Power BI

Na janela do conector, você pode digitar uma consulta do KQL diretamente. Mantenha as consultas focadas e garanta que eles retornam dados tabulares que o Power BI pode modelar. Por exemplo, para criar um conjunto de dados com contagens de erros por serviço por minuto na última hora:

AppLogs
| where Timestamp > ago(1h)
| summarize ErrorCount = count() by Service, bin(Timestamp, 1m)

Após carregar a consulta, use a modelagem do Power BI para definir medidas, hierarquias e relacionamentos se você tiver várias consultas. Evite carregar registros completos brutos – agregar o máximo possível no KQL.

Configurando Atualizações em Tempo Real

No modo DirectQuery, os visuais re-querem automaticamente ADX quando os usuários interagem com o relatório (por exemplo, alterando um cortador de datas). No entanto, para fazer o painel atualizar automaticamente sem interação com o usuário, você precisa definir o recurso de atualização de página automática no serviço Power BI:

  1. Publicar o relatório num espaço de trabalho App com capacidade Premium (ou PPU).
  2. Nas configurações do relatório, em "Reash agendado", defina o intervalo de atualização DirectQuery — para painéis em tempo real, use 1 ou 2 minutos.
  3. Em alternativa, use o recurso Auto-refresh (preview) que atualiza a página em um intervalo fixo (por exemplo, a cada 30 segundos).

Tenha em mente que cada atualização automática irá executar todas as consultas do KQL subjacentes aos visuais. Otimize suas consultas para retornar rapidamente (menos de 5 segundos) para evitar esperas do usuário e carga excessiva de cluster.

Melhores práticas de visualização

  • Utilizar visualmente card para KPIs (por exemplo, erros totais nos últimos 5 minutos).
  • Linha de gráficos para tendências da série temporal.
  • Gráficos de barras para desagregações top-N (por exemplo, serviços de falha superior).
  • Mapas geoespaciais se você tiver dados de localização.
  • Gaúges para mostrar o progresso em direção aos limiares.

Dado que o DirectQuery envia consultas em todas as interacções, evite usar visuais personalizados que geram muitas consultas. Também, aplique filtros o mais cedo possível no KQL para reduzir o volume de dados.

Otimizando o desempenho para consultas em tempo real

Agregação e ajuste de índices

ADX cria automaticamente e mescla extensões (com os fragmentos de dados) ao longo do tempo. No entanto, você pode influenciar o desempenho por:

  • Escolhendo uma política de agrupamento que equilibra o rendimento de ingestão elevado com a concorrência de consultas. Para painéis em tempo real com muitas consultas visuais, dimensione (acrescente instâncias) em vez de aumentar a escala.
  • Definição apropriada política de cache] na base de dados ou tabelas. Por exemplo, para manter os últimos 7 dias em cache quente: ]
  • Usando visualizações materializadas para resultados pré-agregados que atualizam incrementalmente. Uma visualização materializada pode calcular resumos horários ou diários, que servem painéis de alto nível instantaneamente.

Dicas de Otimização de Consulta

  • Filtro inicial: Utilizar cláusulas na coluna de datapasta e dimensões de alta frequência para reduzir os dados digitalizados.
  • Minimizar junções: Se possível, desnormalizar dados durante a ingestão para que os dados de referência já estejam incorporados em eventos.
  • Evite em projetos: Lista explícita de colunas necessárias para reduzir largura de banda e memória.
  • Use para grandes operações para distribuir agregação entre nós.
  • Limite resultados: Use sempre , , ou em pesquisas de desenvolvimento. No Power BI, os visuais geralmente têm seus próprios filtros top-N, mas adicione-os no KQL também.

Monitoramento da Saúde do Agregado

O Azure Data Explorer fornece registros de diagnóstico e métricas embutidos através do Azure Monitor. métricas chave para assistir:

  • Lentidade de ingestão: Tempo médio desde a criação de eventos até ser questionável.
  • Exame latência: Tempos de execução P50 e P99.
  • CPU e uso de memória: Se consistentemente alto, considere escalar.
  • Taxa de ingestão: Certifique-se de que você não está se estrangulando; divida fluxos em mais partições, se necessário.

Configure alertas no Azure Monitor para quando as latências da consulta excederem um limiar (por exemplo, P99 > 10 segundos) para que você possa sintonizar proativamente.

Alerta e Automação em tempo real

Um painel em tempo real é mais poderoso quando emparelhado com respostas automatizadas. O Azure Data Explorer oferece vários pontos de integração:

Alertas de Monitor Azure da ADX

Você pode criar consultas agendadas no ADX que executam em um cronograma (por exemplo, a cada 5 minutos) e enviam resultados para o Monitor Azure. Em seguida, defina regras de alerta que disparam quando as condições são cumpridas (por exemplo, contagem de erro > 100 em uma janela de 5 minutos). Isto permite ações como:

  • Enviando um e-mail ou SMS através de Grupos de Ação.
  • Ativando o Azure Logic Apps para executar fluxos de trabalho (por exemplo, reiniciar um serviço, criar um ticket incidente).
  • Chamando webhooks para notificar sistemas externos.

Azure Logic Apps e Microsoft Power Automatizar

Use o aplicativo lógico com o conector "Execute Kusto Query" para obter dados do ADX e então tomar medidas. Por exemplo, se uma consulta detectar um pico no uso da CPU em VMs, uma aplicação lógica pode ativar um executório de Automação Azure para ampliar o VMSS. Isto fecha o loop entre monitoramento e remediação.

Análise de fluxo e ADX como Sink

Para alertas de latência ainda mais baixos, transmita dados através do Azure Stream Analytics, que pode aplicar janelas temporais e empurrar eventos de alerta simultaneamente para ADX (para análise histórica) e para um assinante do Event Hubs para alerta imediato.

Casos de uso e exemplos do mundo real

  • DevOps Painel de Observabilidade: Registros agregados, métricas e traços de microservices em clusters Kubernetes. ADX ingere de Fluentd/Logstash Azure Event Hubs, e o painel Power BI mostra taxas de solicitação, respostas de erro e latências de cauda.
  • Monitoramento da Frota de IoT:] Ligue o Hub de IoT ao ADX para telemetria de veículos (localização, velocidade, estado da bateria). Um mapa em tempo real de imagens em Power BI actualiza à medida que os veículos se reportam.
  • Detecção de Fraude Financeira: Transacções de fluxo através de Hubs de Evento em ADX. Os painéis mostram volumes de transação por região e pontuações de anomalia; alertas disparam blocklists quando os limiares são violados.
  • Análise de fluxo de cliques: A atividade do usuário de sites é ingerida em ADX. O painel rastreia usuários ativos, visualizações de página por segundo e funil de conversão atualizados a cada minuto.

Conclusão

Construir um painel de análise em tempo real com o Azure Data Explorer e Power BI é uma abordagem robusta e escalável que satisfaz a crescente demanda por insights instantâneos. Ao alavancar a ingestão de streaming da ADX, os recursos poderosos da série de tempo da KQL e as conexões DirectQuery no Power BI, você pode criar painéis que atualizam a cada poucos segundos e lidam com terabytes de dados recebidos. A chave para o sucesso reside no planejamento cuidadoso de capacidade, design de consultas pensativas e monitoramento contínuo do desempenho.

Comece pequeno com um único fluxo de telemetria, itere em consultas e expanda gradualmente para mais fontes de dados. À medida que as necessidades da sua organização crescem, a elasticidade do ADX garante que o seu painel de instrumentos escale sem comprometer a velocidade. Para mais informações, explore o guia de ingestão de Hubs de eventos e o Power BI to Azure Data Explorer documentation.