Kurz: Vizualizace anomálií pomocí dávkové detekce a Power BI (univariát)
Důležité
Od 20. září 2023 nebudete moct vytvářet nové Detektor anomálií prostředky. Služba Detektor anomálií se 1. října 2026 vyřadí z provozu.
V tomto kurzu můžete najít anomálie v datové sadě časových řad jako dávku. V Power BI Desktopu použijete excelový soubor, připravíte data pro rozhraní API Detektor anomálií a vizualizujete statistické anomálie v celém něm.
V tomto kurzu se naučíte:
- Použití Power BI Desktopu k importu a transformaci datové sady časových řad
- Integrace Power BI Desktopu s rozhraním API Detektor anomálií pro detekci dávkových anomálií
- Vizualizujte anomálie nalezené v datech, včetně očekávaných a viditelných hodnot a hranic detekce anomálií.
Požadavky
- Předplatné Azure
- Microsoft Power BI Desktop je k dispozici zdarma.
- Excelový soubor (.xlsx) obsahující datové body časové řady.
- Jakmile budete mít předplatné Azure, vytvořte na webu Azure Portal prostředek Detektor anomálií, abyste získali klíč a koncový bod.
- K připojení aplikace k rozhraní API Detektor anomálií budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Uděláte to v další fázi tohoto rychlého zprovoznění.
Poznámka:
Nejlepších výsledků při použití rozhraní API Detektor anomálií by data časových řad ve formátu JSON měla zahrnovat:
- datové body oddělené stejným intervalem, a to maximálně 10 % očekávaného počtu chybějících bodů.
- alespoň 12 datových bodů, pokud data nemají jasný sezónní vzor.
- aspoň 4 výskyty vzorů, pokud vaše data mají jasný sezónní vzor.
Načtení a formátování dat časových řad
Začněte tím, že otevřete Power BI Desktop a načtete data časových řad, která jste stáhli z požadavků. Tento excelový soubor obsahuje řadu časových razítek utc (Coordinated Universal Time) a párů hodnot.
Poznámka:
Power BI může používat data z nejrůznějších zdrojů, jako jsou .csv soubory, databáze SQL, úložiště objektů blob Azure a další.
V hlavním okně Power BI Desktopu vyberte pás karet Domů. Ve skupině Externí data na pásu karet otevřete rozevírací nabídku Získat data a vyberte Excel.
Po zobrazení dialogového okna přejděte do složky, do které jste stáhli ukázkový soubor .xlsx, a vyberte ho. Po zobrazení dialogového okna Navigátor vyberte List1 a pak upravit.
Power BI převede č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 do rozhraní API Detektor anomálií. Pokud se editor Power Query neotevře automaticky, na kartě Domů vyberte Upravit dotazy .
V Editor Power Query vyberte pás karet Transformace. Ve skupině Libovolný sloupec otevřete rozevírací nabídku Datový typ: a vyberte Text.
Když se zobrazí oznámení o změně typu sloupce, vyberte Nahradit aktuální. Potom na pásu karet Domů vyberte Zavřít a použít nebo Použít.
Vytvoření funkce pro odeslání dat a naformátování odpovědi
Pokud chcete formátovat a odesílat datový soubor do rozhraní API Detektor anomálií, můžete vyvolat dotaz na tabulku vytvořenou výše. V Editor Power Query na pásu karet Domů otevřete rozevírací nabídku Nový zdroj a vyberte Prázdný dotaz.
Ujistěte se, že je vybraný nový dotaz, a pak vyberte Rozšířený editor.
V rámci Rozšířený editor pomocí následujícího fragmentu kódu Power Query M extrahujte sloupce z tabulky a odešlete ho do rozhraní API. Potom dotaz vytvoří tabulku z odpovědi JSON a vrátí ji. Nahraďte proměnnou apiKey
platným klíčem rozhraní API Detektor anomálií a endpoint
koncovým bodem. Po zadání dotazu do Rozšířený editor vyberte 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
Vyvolejte dotaz na datový list takSheet1
, že vyberete následující enter Parameter (Zadat parametr) a vyberete Invoke (Vyvolat).
Důležité
Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.
Ochrana osobních údajů a ověřování zdroje dat
Poznámka:
Mějte na paměti zásady vaší organizace pro ochranu osobních údajů a přístup k datům. Další informace najdete v tématu Úrovně ochrany osobních údajů v Power BI Desktopu.
Při pokusu o spuštění dotazu se může zobrazit upozornění, protože využívá externí zdroj dat.
Pokud chcete tento problém vyřešit, vyberte Soubor a Možnosti a nastavení. Pak vyberte Možnosti. Pod aktuálním souborem vyberte Soukromí a ignorujte úrovně ochrany osobních údajů a potenciálně zlepšíte výkon.
Kromě toho se může zobrazit zpráva s výzvou, abyste určili, jak se chcete připojit k rozhraní API.
Pokud chcete tento problém vyřešit, ve zprávě vyberte Upravit přihlašovací údaje . Po zobrazení dialogového okna vyberte Anonymní a připojte se k rozhraní API anonymně. Pak vyberte Připojit.
Potom na pásu karet Domů vyberte Zavřít a použít změny.
Vizualizace odpovědi rozhraní API Detektor anomálií
Na hlavní obrazovce Power BI začněte pomocí dotazů vytvořených výše vizualizovat data. Nejprve vyberte spojnicový graf ve vizualizacích. Potom přidejte časové razítko z vyvolané funkce do osy spojnicového grafu. Klikněte na něj pravým tlačítkem myši a vyberte Časové razítko.
Do pole Hodnoty grafu přidejte následující pole z vyvolané funkce. S vytvořením grafu vám pomůže následující snímek obrazovky.
- Hodnota
- UpperMargins
- LowerMargins
- ExpectedValues
Po přidánípolích Váš graf bude vypadat podobně jako na následujícím snímku obrazovky:
Zobrazení datových bodů anomálií
Na pravé straně okna Power BI pod podoknem POLE klikněte pravým tlačítkem na Hodnotu pod dotazem Vyvolaná funkce a vyberte Nová rychlá míra.
Na obrazovce, která se zobrazí, vyberte jako výpočet filtrovanou hodnotu . Nastavte základní hodnotu na Sum of Value
hodnotu . Potom přetáhněte IsAnomaly
pole Vyvolaná funkce do filtru. Vyberte True
z rozevírací nabídky Filtr .
Po výběru ok budete mít Value for True
pole v dolní části seznamu polí. Klikněte na něj pravým tlačítkem a přejmenujte ho na Anomálie. Přidejte ho do hodnot grafu. Pak vyberte nástroj Formát a nastavte typ osy X na kategorický.
Barvy v grafu můžete použít tak , že vyberete nástroj Formát a barvy dat. Graf by měl vypadat přibližně takto: