Tutorial: Visualize anomalias usando a deteção em lote e o Power BI (univariado)

Importante

A partir de 20 de setembro de 2023, você não poderá criar novos recursos do Detetor de Anomalias. O serviço de Detetor de Anomalias está a ser desativado no dia 1 de outubro de 2026.

Use este tutorial para encontrar anomalias dentro de um conjunto de dados de série temporal como um lote. Usando o Power BI desktop, você pegará um arquivo do Excel, preparará os dados para a API do Detetor de Anomalias e visualizará anomalias estatísticas em todo ele.

Neste tutorial, irá aprender a:

  • Usar o Power BI Desktop para importar e transformar um conjunto de dados de séries cronológicas
  • Integre o Power BI Desktop com a API do Detetor de Anomalias para deteção de anomalias em lote
  • Visualize anomalias encontradas em seus dados, incluindo valores esperados e vistos e limites de deteção de anomalias.

Pré-requisitos

  • Uma subscrição do Azure
  • Microsoft Power BI Desktop, disponível gratuitamente.
  • Um ficheiro excel (.xlsx) que contém pontos de dados de séries cronológicas.
  • Depois de ter sua assinatura do Azure, crie um recurso do Detetor de Anomalias no portal do Azure para obter sua chave e ponto de extremidade.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API do Detetor de Anomalias. Fará isto mais adiante no início rápido.

Nota

Para obter melhores resultados ao usar a API do Detetor de Anomalias, os dados de séries cronológicas formatados em JSON devem incluir:

  • pontos de dados separados pelo mesmo intervalo, faltando não mais de 10% do número esperado de pontos.
  • pelo menos 12 pontos de dados se os seus dados não tiverem um padrão sazonal claro.
  • pelo menos 4 ocorrências de padrão se os seus dados tiverem um padrão sazonal claro.

Carregar e formatar os dados das séries cronológicas

Para começar, abra o Power BI Desktop e carregue os dados de séries cronológicas que você baixou dos pré-requisitos. Este ficheiro excel contém uma série de pares de carimbo de data/hora e valor UTC (Coordinated Universal Time).

Nota

O Power BI pode usar dados de uma ampla variedade de fontes, como arquivos .csv, bancos de dados SQL, armazenamento de blob do Azure e muito mais.

Na janela principal do Power BI Desktop, selecione o friso Base. No grupo Dados externos da faixa de opções, abra o menu suspenso Obter Dados e selecione Excel.

Uma imagem do botão

Depois que a caixa de diálogo aparecer, navegue até a pasta onde você baixou o arquivo de .xlsx de exemplo e selecione-o. Depois que a caixa de diálogo Navegador for exibida, selecione Planilha1 e Editar.

Uma imagem da tela

O Power BI converterá os carimbos de data/hora na primeira coluna em um tipo de Date/Time dados. Esses carimbos de data/hora devem ser convertidos em texto para serem enviados para a API do Detetor de Anomalias. Se o editor do Power Query não abrir automaticamente, selecione Editar Consultas no separador Base.

Selecione o friso Transformar no Editor do Power Query. No grupo Qualquer Coluna, abra o menu suspenso Tipo de Dados: e selecione Texto.

Uma imagem da lista suspensa do tipo de dados

Quando receber um aviso sobre como alterar o tipo de coluna, selecione Substituir atual. Depois, selecione Fechar & Aplicar ou Aplicar na faixa de opções Página Inicial .

Criar uma função para enviar os dados e formatar a resposta

Para formatar e enviar o arquivo de dados para a API do Detetor de Anomalias, você pode invocar uma consulta na tabela criada acima. No Editor do Power Query, no friso Base , abra o menu pendente Nova Origem e selecione Consulta em Branco.

Certifique-se de que a nova consulta está selecionada e, em seguida, selecione Editor Avançado.

Uma imagem do ecrã

No Editor Avançado, use o seguinte trecho do Power Query M para extrair as colunas da tabela e enviá-las para a API. Depois, a consulta criará uma tabela a partir da resposta JSON e a retornará. Substitua a apiKey variável pela chave válida da API do Detetor de Anomalias e endpoint pelo ponto de extremidade. Depois de inserir a consulta no Editor Avançado, selecione Concluído.

(table as table) => let

    apikey      = "[Placeholder: Your Anomaly Detector resource access key]",
    endpoint    = "[Placeholder: Your Anomaly Detector resource endpoint]/anomalydetector/v1.0/timeseries/entire/detect",
    inputTable = Table.TransformColumnTypes(table,{{"Timestamp", type text},{"Value", type number}}),
    jsontext    = Text.FromBinary(Json.FromValue(inputTable)),
    jsonbody    = "{ ""Granularity"": ""daily"", ""Sensitivity"": 95, ""Series"": "& jsontext &" }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Content-Type" = "application/json", #"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody, ManualStatusHandling={400}]),
    jsonresp    = Json.Document(bytesresp),

    respTable = Table.FromColumns({

                     Table.Column(inputTable, "Timestamp")
                     ,Table.Column(inputTable, "Value")
                     , Record.Field(jsonresp, "IsAnomaly") as list
                     , Record.Field(jsonresp, "ExpectedValues") as list
                     , Record.Field(jsonresp, "UpperMargins")as list
                     , Record.Field(jsonresp, "LowerMargins") as list
                     , Record.Field(jsonresp, "IsPositiveAnomaly") as list
                     , Record.Field(jsonresp, "IsNegativeAnomaly") as list

                  }, {"Timestamp", "Value", "IsAnomaly", "ExpectedValues", "UpperMargin", "LowerMargin", "IsPositiveAnomaly", "IsNegativeAnomaly"}
               ),

    respTable1 = Table.AddColumn(respTable , "UpperMargins", (row) => row[ExpectedValues] + row[UpperMargin]),
    respTable2 = Table.AddColumn(respTable1 , "LowerMargins", (row) => row[ExpectedValues] -  row[LowerMargin]),
    respTable3 = Table.RemoveColumns(respTable2, "UpperMargin"),
    respTable4 = Table.RemoveColumns(respTable3, "LowerMargin"),

    results = Table.TransformColumnTypes(

                respTable4,
                {{"Timestamp", type datetime}, {"Value", type number}, {"IsAnomaly", type logical}, {"IsPositiveAnomaly", type logical}, {"IsNegativeAnomaly", type logical},
                 {"ExpectedValues", type number}, {"UpperMargins", type number}, {"LowerMargins", type number}}
              )

 in results

Invoque a consulta na folha de dados selecionando Sheet1 abaixo de Inserir parâmetro e selecione Invocar.

Uma imagem da função invoke

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca publicá-la publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Consulte o artigo de segurança dos serviços de IA do Azure para obter mais informações.

Privacidade e autenticação da fonte de dados

Nota

Esteja ciente das políticas de privacidade e acesso a dados da sua organização. Consulte Níveis de privacidade do Power BI Desktop para obter mais informações.

Você pode receber uma mensagem de aviso ao tentar executar a consulta, pois ela utiliza uma fonte de dados externa.

Uma imagem mostrando um aviso criado pelo Power BI

Para corrigir isso, selecione Arquivo e Opções e configurações. Em seguida, selecione Opções. Abaixo de Arquivo atual, selecione Privacidade e Ignorar os níveis de privacidade e, potencialmente, melhorar o desempenho.

Além disso, você pode receber uma mensagem solicitando que especifique como deseja se conectar à API.

Uma imagem mostrando uma solicitação para especificar credenciais de acesso

Para corrigir isso, selecione Editar credenciais na mensagem. Depois que a caixa de diálogo for exibida, selecione Anônimo para se conectar à API anonimamente. Em seguida, selecione Conectar.

Depois, selecione Fechar & Aplicar na faixa de opções Página Inicial para aplicar as alterações.

Visualize a resposta da API do Detetor de Anomalias

Na tela principal do Power BI, comece a usar as consultas criadas acima para visualizar os dados. Primeiro, selecione Gráfico de linhas em Visualizações. Em seguida, adicione o carimbo de data/hora da função invocada ao Eixo do gráfico de linhas. Clique com o botão direito do mouse nele e selecione Carimbo de data/hora.

Clique com o botão direito do mouse no valor do carimbo de data/hora

Adicione os seguintes campos da Função Invocada ao campo Valores do gráfico. Use a captura de tela abaixo para ajudar a criar seu gráfico.

  • Value
  • Margens superiores
  • Margens mais baixas
  • ExpectedValues

Uma imagem das configurações do gráfico

Depois de adicionar os campos, selecione no gráfico e redimensione-o para mostrar todos os pontos de dados. Seu gráfico será semelhante à captura de tela abaixo:

Uma imagem da visualização do gráfico

Exibir pontos de dados de anomalia

No lado direito da janela do Power BI, abaixo do painel CAMPOS, clique com o botão direito do mouse em Valor na consulta Função Invocada e selecione Nova medida rápida.

Uma imagem do novo ecrã de medição rápida

Na tela exibida, selecione Valor filtrado como cálculo. Defina o valor base como Sum of Value. Em seguida, arraste IsAnomaly dos campos Função invocada para Filtrar. Selecione True no menu suspenso Filtro .

Uma segunda imagem do novo ecrã de medição rápida

Depois de selecionar Ok, você terá um Value for True campo, na parte inferior da lista de seus campos. Clique com o botão direito do mouse nele e renomeie-o para Anomalia. Adicione-o aos Valores do gráfico. Em seguida, selecione a ferramenta Formatar e defina o tipo de eixo X como Categórico.

Uma imagem do eixo formato x

Aplique cores ao gráfico selecionando a ferramenta Formatar e Cores de dados. Seu gráfico deve ter a seguinte aparência:

Uma imagem do gráfico final