Självstudie: Visualisera avvikelser med batchidentifiering och Power BI (univariate)

Viktigt!

Från och med den 20 september 2023 kan du inte skapa nya Avvikelseidentifiering resurser. Tjänsten Avvikelseidentifiering dras tillbaka den 1 oktober 2026.

Använd den här självstudien om du vill hitta avvikelser inom en tidsseriedatauppsättning som en batch. Med Power BI Desktop tar du en Excel-fil, förbereder data för Avvikelseidentifiering-API:et och visualiserar statistiska avvikelser i hela den.

I den här självstudien får du lära dig att:

  • Använda Power BI Desktop för att importera och transformera en tidsseriedatauppsättning
  • Integrera Power BI Desktop med Avvikelseidentifiering-API:et för batchavvikelseidentifiering
  • Visualisera avvikelser som finns i dina data, inklusive förväntade och visade värden och gränser för avvikelseidentifiering.

Förutsättningar

  • En Azure-prenumeration
  • Microsoft Power BI Desktop, tillgängligt kostnadsfritt.
  • En Excel-fil (.xlsx) som innehåller tidsseriedatapunkter.
  • När du har din Azure-prenumeration skapar du en Avvikelseidentifiering resurs i Azure-portalen för att hämta din nyckel och slutpunkt.
    • Du behöver nyckeln och slutpunkten från resursen som du skapar för att ansluta ditt program till Avvikelseidentifiering-API:et. Du kommer att göra detta senare i snabbstarten.

Kommentar

För bästa resultat när du använder Avvikelseidentifiering-API:et bör dina JSON-formaterade tidsseriedata innehålla:

  • datapunkter avgränsade med samma intervall, där högst 10 % av det förväntade antalet punkter saknas.
  • minst 12 datapunkter om dina data inte har ett tydligt säsongsmönster.
  • minst 4 mönsterhändelser om dina data har ett tydligt säsongsmönster.

Läsa in och formatera tidsseriedata

Kom igång genom att öppna Power BI Desktop och läsa in tidsseriedata som du laddade ned från förutsättningarna. Den här Excel-filen innehåller en serie UTC-tidsstämpel (Coordinated Universal Time) och värdepar.

Kommentar

Power BI kan använda data från en mängd olika källor, till exempel .csv-filer, SQL-databaser, Azure Blob Storage med mera.

I huvudfönstret i Power BI Desktop väljer du menyfliksområdet Start. Öppna den nedrullningsbara menyn Hämta data i gruppen Externa data i menyfliksområdet och välj Excel.

An image of the

När dialogrutan visas navigerar du till mappen där du laddade ned .xlsx-exempelfilen och väljer den. När navigatördialogrutan visas väljer du Blad1 och sedan Redigera.

An image of the data source

Power BI konverterar tidsstämplarna i den första kolumnen till en Date/Time datatyp. Dessa tidsstämplar måste konverteras till text för att kunna skickas till Avvikelseidentifiering-API:et. Om Power Query-redigeraren inte öppnas automatiskt väljer du Redigera frågor på startfliken.

Välj menyfliksområdet Transformera i Power Query-redigeraren. I gruppen Valfri kolumn öppnar du den nedrullningsbara menyn Datatyp: och väljer Text.

An image of the data type drop down

När du får ett meddelande om att ändra kolumntypen väljer du Ersätt aktuell. Därefter väljer du Stäng och tillämpa i menyfliksområdet Start.

Skapa en funktion för att skicka data och formatera svaret

Om du vill formatera och skicka datafilen till Avvikelseidentifiering-API:et kan du anropa en fråga i tabellen som skapades ovan. Öppna den nedrullningsbara menyn Ny källa i menyfliksområdet Start i Power Query-redigeraren och välj Tom fråga.

Kontrollera att den nya frågan är markerad och välj sedan Avancerad redigerare.

An image of the

Använd följande Power Query M-kodfragment i Avancerad redigerare för att extrahera kolumnerna från tabellen och skicka dem till API:et. Efteråt skapar frågan en tabell från JSON-svaret och returnerar den. Ersätt variabeln apiKey med din giltiga Avvikelseidentifiering API-nyckel och endpoint med slutpunkten. När du har angett frågan i Avancerad redigerare väljer du Klar.

(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

Anropa frågan på databladet genom att Sheet1 välja under Ange parameter och välj Anropa.

An image of the invoke function

Viktigt!

Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln för Azure AI-tjänster.

Sekretess och autentisering för datakälla

Kommentar

Tänk på organisationens principer för datasekretess och åtkomst. Mer information finns i Sekretessnivåer för Power BI Desktop.

Du kan få ett varningsmeddelande när du försöker köra frågan eftersom den använder en extern datakälla.

An image showing a warning created by Power BI

Åtgärda detta genom att välja Arkiv och Alternativ och inställningar. Välj sedan Alternativ. Under Aktuell fil väljer du Sekretess och Ignorera sekretessnivåerna och kan förbättra prestanda.

Dessutom kan du få ett meddelande där du uppmanas att ange hur du vill ansluta till API:et.

An image showing a request to specify access credentials

Åtgärda detta genom att välja Redigera autentiseringsuppgifter i meddelandet. När dialogrutan visas väljer du Anonym för att ansluta till API:et anonymt. Välj sedan Anslut.

Därefter väljer du Stäng och använd i menyfliksområdet Start för att tillämpa ändringarna.

Visualisera Avvikelseidentifiering API-svaret

På power BI-huvudskärmen börjar du använda frågorna som skapades ovan för att visualisera data. Välj först Linjediagram i Visualiseringar. Lägg sedan till tidsstämpeln från den anropade funktionen till linjediagrammets axel. Högerklicka på den och välj Tidsstämpel.

Right-clicking the Timestamp value

Lägg till följande fält från den anropade funktionen i diagrammets värdefält. Använd skärmbilden nedan för att skapa diagrammet.

  • Värde
  • UpperMargins
  • LowerMargins
  • ExpectedValues

An image of the chart settings

När du har lagt till fälten väljer du i diagrammet och ändrar storlek på det för att visa alla datapunkter. Diagrammet ser ut ungefär som skärmbilden nedan:

An image of the chart visualization

Visa avvikelsedatapunkter

Till höger i Power BI-fönstret, under fönstret FÄLT , högerklickar du på Värde under frågan Anropad funktion och väljer Nytt snabbmått.

An image of the new quick measure screen

På skärmen som visas väljer du Filtrerat värde som beräkning. Ange Basvärde till Sum of Value. Dra IsAnomaly sedan från fälten Anropad funktion till Filtrera. Välj True på den nedrullningsbara menyn Filter .

A second image of the new quick measure screen

När du har valt Ok har du ett Value for True fält längst ned i listan över dina fält. Högerklicka på den och byt namn på den till Avvikelse. Lägg till den i diagrammets Värden. Välj sedan verktyget Format och ange X-axeltypen till Kategorisk.

An image of the format x axis

Använd färger i diagrammet genom att välja formatverktyget och datafärgerna. Diagrammet bör se ut ungefär så här:

An image of the final chart