Kurz: Vizualizace anomálií pomocí dávkového zjišťování a Power BI (jednovariate)

V tomto kurzu najdete anomálie v datové sadě časových řad jako dávku. Pomocí Power BI Desktopu vezmete soubor Excel, připravíte data pro rozhraní API Detektor anomálií a vizualizovat statistické anomálie v celém ní.

V tomto kurzu se naučíte:

  • Použití Power BI Desktop k importu a transformaci datové sady časových řad
  • Integrace Power BI Desktop s rozhraním API Detektor anomálií pro dávkovou detekci anomálií
  • Vizualizujte anomálie nalezené v datech, včetně očekávaných a vidětch hodnot a hranic detekce anomálií.

Požadavky

  • Předplatné Azure
  • Microsoft Power BI Desktop– k dispozici zdarma.
  • Excelový soubor (.xlsx) obsahující datové body časové řady. Příklad dat pro tento rychlý start najdete na GitHub
  • Jakmile máte předplatné Azure, vytvořte prostředek Detektor anomálií, který Detektor anomálií ve službě Azure Portal a získejte svůj klíč a koncový bod.
    • Klíč a koncový bod z prostředku, který vytvoříte, budete potřebovat pro připojení aplikace k Detektor anomálií API. To budete dělat později v tomto rychlém startu.

Poznámka

Pro dosažení nejlepších výsledků při použití rozhraní API pro detekci anomálií by data časové řady ve formátu JSON měla zahrnovat:

  • datové body oddělené stejným intervalem a neobsahují více než 10% očekávaného počtu chybějících bodů.
  • aspoň 12 datových bodů, pokud vaše data nemají jasný sezónní vzor.
  • nejméně 4 výskyty vzorů, pokud vaše data mají jasný sezónní vzor.

Načtení a formátování dat časových řad

Pokud chcete začít, otevřete Power BI Desktop a načtěte data časových řad, která jste stáhli z požadavků. Tento excelový soubor obsahuje řadu časových razítek a párů hodnot koordinovaného univerzálního času (UTC).

Poznámka

Power BI můžete používat data z široké škály zdrojů, jako jsou .csv soubory, SQL databáze, úložiště objektů blob v Azure a další.

V hlavním okně Power BI Desktop klikněte na pás karet Domů. Ve skupině Externí data na pásu karet otevřete rozevírací nabídku Získat data a klikněte na Excel.

Obrázek tlačítka Získat data v Power BI

Po zobrazení dialogového okna přejděte do složky, do které jste stáhli příklad .xlsx souboru a vyberte ho. Jakmile se zobrazí dialogové okno Navigátor, klikněte na List1 a pak na Upravit.

Obrázek obrazovky navigátoru zdroje dat v Power BI

Power BI převádí časová razítka v prvním sloupci na Date/Time datový typ. Tato časová razítka musí být převedena na text, aby bylo možné je odeslat Detektor anomálií API. Pokud se Power Query automaticky neotevře, klikněte na upravit dotazy na kartě Domů.

V editoru Power Query klikněte na pásu karet Transformace. Ve skupině Libovolný sloupec otevřete rozevírací nabídku Datový typ: a vyberte Text.

Obrázek rozevíracího seznamu datových typů

Když se zobrazí oznámení o změně typu sloupce, klikněte na Nahradit aktuální. Potom na pásu karet & klikněte na Zavřít a použít.

Vytvoření funkce pro odeslání dat a formátování odpovědi

Pokud chcete datový soubor naformátovat a odeslat do rozhraní API Detektor anomálií, můžete vyvolat dotaz na tabulku vytvořenou výše. Na pásu Power Query otevřete na pásu karet Domů rozevírací nabídku Nový zdroj a klikněte na Prázdný dotaz.

Ujistěte se, že je nový dotaz vybraný, a potom klikněte na Rozšířený editor.

Obrázek obrazovky "Rozšířený editor"

V Rozšířený editor pomocí následujícího fragmentu kódu Power Query M extrahujte sloupce z tabulky a odešlete je do rozhraní API. Potom dotaz vytvoří tabulku z odpovědi JSON a vrátí ji. Nahraďte apiKey proměnnou platným klíčem Detektor anomálií API endpoint a koncovým bodem. Po zadání dotazu do pole Rozšířený editor na Hotovo.

(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

Dotaz na datový list vyvoláte tak, že vyberete Sheet1 pod možností Zadat parametr a kliknete na Vyvolat.

Obrázek funkce invoke

Ochrana osobních údajů a ověřování zdroje dat

Poznámka

Uvědomte si zásady vaší organizace pro ochranu osobních údajů a přístup k datům. Další Power BI Desktop najdete v tématu úrovně ochrany osobních údajů.

Při pokusu o spuštění dotazu se může zobrazit upozornění, protože využívá externí zdroj dat.

Obrázek s upozorněním vytvořeným Power BI

Pokud chcete tento problém vyřešit, klikněte na Soubor a možnosti a nastavení. Pak klikněte na Možnosti. Pod možností Aktuální soubor vyberte Ochrana osobních údajů a ignorovat úrovně ochrany osobních údajů a potenciálně tak vylepšit výkon .

Kromě toho se může zobrazit zpráva s dotazem, jak se chcete k rozhraní API připojit.

Obrázek znázorňující požadavek na zadání přihlašovacích údajů pro přístup

Pokud chcete tento problém vyřešit, klikněte ve zprávě na Upravit přihlašovací údaje. Jakmile se zobrazí dialogové okno, vyberte Anonymní a připojte se k rozhraní API anonymně. Pak klikněte na Connect (Připojit).

Potom změny aplikujte kliknutím & použít na pásu karet Domů.

Vizualizace odpovědi Detektor anomálií API

Na hlavní Power BI obrazovky začněte k vizualizaci dat používat dotazy vytvořené výše. Nejprve ve vizualizacích vyberte Line Chart (Čárový graf). Potom přidejte časové razítko z vyvolané funkce na osu čárového grafu. Klikněte na něj pravým tlačítkem a vyberte Časové razítko.

Kliknutí pravým tlačítkem na hodnotu časového razítka

Přidejte následující pole z vyvolané funkce do pole Hodnoty grafu. S vytvořením grafu vám pomůže následující snímek obrazovky.

  • Hodnota
  • UpperMargins
  • LowerMargins
  • ExpectedValues

Obrázek nastavení grafu

Po přidání polí klikněte na graf a změňte jeho velikost tak, aby se zobrazují všechny datové body. Graf bude vypadat podobně jako na následujícím snímku obrazovky:

Obrázek vizualizace grafu

Zobrazení datových bodů anomálií

Na pravé straně okna Power BI klikněte pod podoknem POLE pravým tlačítkem na Hodnotu pod dotazem Vyvolané funkce a pak klikněte na Nová rychlá míra.

Obrázek nové obrazovky rychlé míry

Na obrazovce, která se zobrazí, vyberte jako výpočet Filtrovaná hodnota. Základní hodnotu nastavte na Sum of Value . Potom IsAnomaly přetáhněte z polí Vyvolaná funkce do pole Filtrovat. V True rozevírací nabídce Filtr vyberte .

Druhý obrázek nové obrazovky rychlé míry

Po kliknutí na OK budete mít pole v dolní části Value for True seznamu polí. Klikněte na něj pravým tlačítkem a přejmenujte ho na Anomaly. Přidejte ho do hodnoty grafu. Pak vyberte nástroj Formát a nastavte typ osy X na Kategorické.

Obrázek formátu osy X

Použijte barvy grafu kliknutím na nástroj Formát a na Barvy dat. Graf by měl vypadat nějak takto:

Obrázek finálního grafu