Tutorial: Visualizar anomalias com a detecção em lotes e o Power BI (univariado)

Importante

A partir de 20 de setembro de 2023, você não poderá criar novos recursos do Detector de Anomalias. O serviço Detector de Anomalias será desativado em 01º de outubro de 2026.

Use este tutorial para encontrar anomalias em um conjunto de dados de série temporal como um lote. Usando o Power BI Desktop, você usará um arquivo do Excel, preparará os dados para a API do Detector de Anomalias e visualizará as anomalias estatísticas nele.

Neste tutorial, você aprenderá como:

  • Usar o Power BI Desktop para importar e transformar um conjunto de dados de série temporal
  • Integrar o Power BI Desktop à API do Detector de Anomalias para a detecção de anomalias em lotes
  • Visualize as anomalias encontradas em seus dados, incluindo os valores esperados e vistos e os limites da detecção de anomalias.

Pré-requisitos

  • Uma assinatura do Azure
  • Microsoft Power BI Desktop, disponível gratuitamente.
  • Um arquivo do Excel (.xlsx) contendo pontos de dados de série temporal.
  • Depois de ter sua assinatura do Azure, Crie um recurso de detector de anomalias no portal do Azure para obter a chave e o ponto de extremidade.
    • Você precisará da chave e do ponto de extremidade do recurso que você criar para conectar seu aplicativo à API do Detector de Anomalias. Você fará isso posteriormente no início rápido.

Observação

Para ter os melhores resultados ao usar a API do Detector de Anomalias, seus dados de série temporal em formato JSON deverão incluir:

  • pontos de dados separados pelo mesmo intervalo, com no máximo 10% do número esperado de pontos ausentes.
  • pelo menos 12 pontos de dados se seus dados não tiverem um padrão sazonal claro.
  • pelo menos 4 ocorrências de padrão se seus dados tiverem um padrão sazonal claro.

Carregar e formatar os dados de série temporal

Para começar, abra o Power BI Desktop e carregue os dados de série temporal que você baixou nos pré-requisitos. Este arquivo do Excel contém uma série de pares de valor e carimbo de data/hora UTC (Tempo Universal Coordenado).

Observação

O Power BI pode usar dados de uma ampla variedade de fontes, como arquivos .csv, bancos de dados SQL, Armazenamento de Blobs do Azure, entre outros.

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

An image of the

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

An image of the data source

O Power BI converterá os carimbos de data/hora na primeira coluna em um tipo de dados Date/Time. Esses carimbos de data/hora precisam ser convertidos em texto para serem enviados à API do Detector de Anomalias. Se o editor do Power Query não for aberto automaticamente, clique em Editar Consultas na guia Página Inicial.

Clique na faixa de opções Transformar no Editor do Power Query. No grupo Qualquer Coluna, abra o menu suspenso Tipo de Dados: e selecione Texto.

An image of the data type drop down

Quando você receber um aviso sobre a alteração do tipo de coluna, clique em Substituir Atual. Em seguida, clique em Fechar e 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 Detector de Anomalias, invoque uma consulta na tabela criada acima. No Editor do Power Query, na faixa de opções Página Inicial, abra o menu suspenso Nova Fonte e clique em Consulta em Branco.

Verifique se a nova consulta está selecionada e, em seguida, clique em Editor Avançado.

An image of the

No Editor Avançado, use o snippet do Power Query M a seguir para extrair as colunas da tabela e enviá-la à API. Depois disso, a consulta criará uma tabela com base na resposta JSON e a retornará. Substitua a variável apiKey pela chave de API válida do Detector de Anomalias e endpoint pelo ponto de extremidade. Depois de inserir a consulta no Editor Avançado, clique em 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 clique em Invocar.

An image of the invoke function

Importante

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

Privacidade e autenticação da fonte de dados

Observação

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

Talvez você receba uma mensagem de aviso quando tentar executar a consulta, pois ela utiliza uma fonte de dados externa.

An image showing a warning created by Power BI

Para corrigir isso, clique em Arquivo e em Opções e configurações. Selecione Opções . Abaixo de Arquivo Atual, selecione Privacidade e Ignorar os Níveis de Privacidade e melhorar potencialmente o desempenho.

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

An image showing a request to specify access credentials

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

Depois disso, clique em Fechar e Aplicar na faixa de opções Página Inicial para aplicar as alterações.

Visualizar a resposta da API do Detector 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.

Right-clicking the Timestamp value

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

  • Valor
  • UpperMargins
  • LowerMargins
  • ExpectedValues

An image of the chart settings

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

An image of the chart visualization

Exibir pontos de dados de anomalias

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

An image of the new quick measure screen

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

A second image of the new quick measure screen

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

An image of the format x axis

Aplique cores ao gráfico clicando na ferramenta Formato e em Cores de dados. O gráfico deverá ter uma aparência semelhante à seguinte:

An image of the final chart