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.
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.
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.
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.
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.
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.
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.
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.
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
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:
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.
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 .
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.
Aplique cores ao gráfico selecionando a ferramenta Formatar e Cores de dados. Seu gráfico deve ter a seguinte aparência: