Dela via


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

Viktigt!

Från och med den 20 september 2023 kommer du inte att kunna skapa nya avvikelseidentifieringsresurser. 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 API:et för avvikelseidentifiering 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 API för avvikelseidentifiering 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 avvikelseidentifieringsresurs i Azure-portalen för att hämta din nyckel och slutpunkt.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till API:et för avvikelseidentifiering. Du kommer att göra detta senare i snabbstarten.

Kommentar

För bästa resultat när du använder API:et för avvikelseidentifiering 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.

En bild av knappen Hämta data i Power BI

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

En bild av skärmen

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 API:et för avvikelseidentifiering. Om Power Query-redigeraren inte öppnas automatiskt väljer du Redigera frågor på startfliken.

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

En bild av listrutan datatyp

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 API:et för avvikelseidentifiering 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 uređivač och välj Tom fråga.

Kontrollera att den nya frågan är markerad och välj sedan Napredni uređivač.

En bild av skärmen

I Napredni uređivač använder du följande Power Query M-kodfragment för att extrahera kolumnerna från tabellen och skicka den till API:et. Efteråt skapar frågan en tabell från JSON-svaret och returnerar den. Ersätt variabeln apiKey med din giltiga API-nyckel för avvikelseidentifiering och endpoint med slutpunkten. När du har angett frågan i Napredni uređivač 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.

En bild av funktionen invoke

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.

En bild som visar en varning som skapats av 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.

En bild som visar en begäran om att ange åtkomstautentiseringsuppgifter

Å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 API-svaret för avvikelseidentifiering

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.

Högerklicka på tidsstämpelvärdet

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

En bild av diagraminställningarna

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:

En bild av diagramvisualiseringen

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.

En bild av den nya skärmen för snabbmått

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 .

En andra bild av den nya snabbmåttsskärmen

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.

En bild av format x-axeln

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

En bild av det slutliga diagrammet