Självstudie: Visualisera avvikelser med batchidentifiering och Power BI (univariate)
Använd den här självstudien för att 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 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 batchavviklighetsidentifiering
- Visualisera avvikelser som hittas 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 utan kostnad.
- En Excel-fil (.xlsx) som innehåller tidsseriedatapunkter. Exempeldata för den här snabbstarten finns på GitHub
- När du har din Azure-prenumeration skapar Avvikelseidentifiering en Avvikelseidentifiering resurs i Azure Portal för att slutpunkt.
- Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Avvikelseidentifiering-API:et. Du gör detta senare i snabbstarten.
Anteckning
För bästa resultat när du använder API: t för avvikelse detektor bör JSON-formaterade tids serie data innehålla:
- data punkter avgränsade med samma intervall, med högst 10% av det förväntade antalet punkter som saknas.
- minst 12 data punkter om dina data inte har ett tydligt säsongs mönster.
- minst fyra mönster förekomster om dina data har ett tydligt säsongs mönster.
Läsa in och formatera tidsseriedata
Kom igång genom att öppna Power BI Desktop läsa in de tidsseriedata som du laddade ned från förutsättningarna. Excel-filen innehåller en serie Coordinated Universal Time (UTC) tidsstämpel och värdepar.
Anteckning
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 Power BI Desktop du på menyfliksområdet Start. I gruppen Externa data i menyfliksområdet öppnar du listrutan Hämta data och klickar på Excel.

När dialogrutan visas navigerar du till mappen där du laddade ned exempelfilen .xlsx och väljer den. När dialogrutan Navigatör visas klickar du på Sheet1 och sedan på Redigera.

Power BI konverterar tidsstämplar 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. Om Power Query redigeraren inte öppnas automatiskt klickar du på Redigera frågor på startfliken.
Klicka på menyfliksområdet Transformera i Power Query Redigeraren. I gruppen Valfri kolumn öppnar du listrutan Datatyp: och väljer Text.

När du får ett meddelande om att ändra kolumntypen klickar du på Ersätt aktuell. Klicka sedan på Stäng & Tillämpa eller 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 kan du anropa en fråga i tabellen som skapades ovan. I Power Query menyfliksområdet Start öppnar du listrutan Ny källa och klickar på Tom fråga.
Kontrollera att den nya frågan är markerad och klicka sedan på Avancerad redigerare.

I Avancerad redigerare använder du följande kodfragment Power Query M för att extrahera kolumnerna från tabellen och skicka dem till API:et. Därefter skapar frågan en tabell från JSON-svaret och returnerar den. Ersätt apiKey variabeln med din Avvikelseidentifiering API-nyckel och endpoint med slutpunkten. När du har angett frågan i Avancerad redigerare klickar du på 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 välja Sheet1 ange parametern nedan och klicka på Anropa.

Sekretess och autentisering för datakälla
Anteckning
Tänk på organisationens principer för datasekretess och åtkomst. Mer information Power BI Desktop finns i Power BI Desktop sekretessnivåer.
Du kan få ett varningsmeddelande när du försöker köra frågan eftersom den använder en extern datakälla.

Åtgärda detta genom att klicka på Arkiv och Alternativ och inställningar. Klicka sedan på Alternativ. Under Aktuell fil väljer du Sekretess och ignorerar sekretessnivåerna och förbättrar eventuellt prestandan.
Dessutom kan du få ett meddelande där du uppmanas att ange hur du vill ansluta till API:et.

Åtgärda detta genom att klicka på Redigera autentiseringsuppgifter i meddelandet. När dialogrutan visas väljer du Anonym för att ansluta till API:et anonymt. Klicka sedan på Anslut.
Klicka sedan på Stäng & Tillämpa i menyfliksområdet Start för att tillämpa ändringarna.
Visualisera API Avvikelseidentifiering svaret
På huvudskärmen Power BI börja 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 i linjediagrammets axel. Högerklicka på den och välj Tidsstämpel.

Lägg till följande fält från den anropade funktionen i diagrammets fält Värden. Använd skärmbilden nedan för att skapa diagrammet.
- Värde
- UpperMargins
- LowerMargins
- ExpectedValues

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

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

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

När du har klickat på Ok har Value for True du ett 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 formatverktyget och ange X-axeltypen till Kategorisk.

Tillämpa färger på diagrammet genom att klicka på formatverktyget och datafärgerna. Diagrammet bör se ut ungefär så här:
