Udostępnij przez


Samouczek: Wizualizuj anomalii przy użyciu wykrywania wsadowego i Power BI (jednowymiarowe)

Ważne

Od 20 września 2023 r. nie będzie można tworzyć nowych zasobów Detektor Anomalii. Usługa Detektor anomalii zostanie wycofana 1 października 2026 roku.

Ten samouczek umożliwia znajdowanie anomalii w zestawie danych szeregów czasowych w trybie wsadowym. Za pomocą programu Power BI Desktop, pobierzesz plik Excel, przygotujesz dane dla interfejsu API Wykrywanie anomalii i zwizualizujesz anomalie statystyczne.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Importowanie i przekształcanie zestawu danych szeregów czasowych przy użyciu programu Power BI Desktop
  • Zintegrować Power BI Desktop z interfejsem API Wykrywania Anomalii dla wsadowego wykrywania anomalii
  • Wizualizuj anomalie znalezione w danych, w tym oczekiwane i widoczne wartości oraz granice wykrywania anomalii.

Wymagania wstępne

  • Subskrypcja platformy Azure
  • Program Microsoft Power BI Desktop jest dostępny bezpłatnie.
  • Plik programu Excel (.xlsx) zawierający punkty danych szeregów czasowych.
  • Po utworzeniu subskrypcji platformy Azure w portalu Azure, aby uzyskać klucz i punkt końcowy.
    • Aby połączyć aplikację z interfejsem API detektora anomalii, potrzebny będzie klucz i punkt końcowy zasobu, który utworzysz. Tę czynność wykonasz w dalszej części przewodnika Szybki start.

Uwaga

Aby uzyskać najlepsze wyniki podczas korzystania z interfejsu API Narzędzie do wykrywania anomalii, dane szeregów czasowych w formacie JSON powinny obejmować następujące elementy:

  • punkty danych oddzielone tym samym interwałem, bez większej niż 10% oczekiwanej liczby brakujących punktów.
  • co najmniej 12 punktów danych, jeśli dane nie mają wyraźnego wzorca sezonowego.
  • co najmniej 4 wystąpienia wzorca, jeśli dane mają jasny wzorzec sezonowy.

Ładowanie i formatowanie danych szeregów czasowych

Aby rozpocząć, otwórz program Power BI Desktop i załaduj dane szeregów czasowych pobranych z wymagań wstępnych. Ten plik programu Excel zawiera szereg par sygnatur czasowych i wartości czasu koordynowanego (UTC).

Uwaga

Usługa Power BI może używać danych z wielu różnych źródeł, takich jak pliki .csv, bazy danych SQL, magazyn obiektów blob platformy Azure i inne.

W głównym oknie aplikacji Power BI Desktop wybierz wstążkę Narzędzia główne. W grupie Dane zewnętrzne na wstążce otwórz menu rozwijane Pobierz dane i wybierz pozycję Excel.

Obraz przycisku

Po wyświetleniu okna dialogowego przejdź do folderu, w którym pobrano przykładowy plik .xlsx i wybierz go. Po pojawieniu się okna dialogowego Nawigator wybierz pozycję Arkusz1, a następnie pozycję Edytuj.

Obraz ekranu źródła danych

Usługa Power BI przekonwertuje znaczniki czasu w pierwszej kolumnie na Date/Time typ danych. Te znaczniki czasu należy przekonwertować na tekst, aby wysłać je do interfejsu API Anomaly Detector. Jeśli edytor Power Query nie otworzy się automatycznie, wybierz pozycję Edytuj zapytania na karcie Narzędzia główne.

Wybierz wstążkę Przekształć w Edytorze zapytań programu Power. W grupie Dowolna kolumna otwórz menu rozwijane Typ danych: i wybierz pozycję Tekst.

Obraz listy rozwijanej typu danych

Po otrzymaniu powiadomienia o zmianie typu kolumny wybierz Zastąp bieżący. Następnie wybierz Zamknij i zastosuj lub Zastosuj na wstążce Strona główna.

Tworzenie funkcji w celu wysyłania danych i formatowania odpowiedzi

Aby sformatować i wysłać plik danych do interfejsu API Narzędzie do wykrywania anomalii, możesz wywołać zapytanie w tabeli utworzonej powyżej. W Edytorze Power Query na wstążce Strona główna otwórz menu rozwijane Nowe źródło i wybierz Puste zapytanie.

Upewnij się, że wybrano nowe zapytanie, a następnie wybierz pozycję Edytor zaawansowany.

Obraz ekranu

W Edytorze zaawansowanym użyj następującego fragmentu kodu języka Power Query M, aby wyodrębnić kolumny z tabeli i wysłać je do interfejsu API. Następnie zapytanie utworzy tabelę na podstawie odpowiedzi JSON i zwróci ją. Zastąp zmienną apiKey swoim prawidłowym kluczem interfejsu Anomaly Detector API i endpoint swoim punktem końcowym. Po wprowadzeniu zapytania do Edytora zaawansowanego wybierz Gotowe.

(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

Wywołaj zapytanie w arkuszu danych, wybierając Sheet1 poniższe polecenie Wprowadź parametr, a następnie wybierz pozycję Wywołaj.

Ilustracja funkcji wywołania

Ważne

Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

Prywatność i uwierzytelnianie źródła danych

Uwaga

Należy pamiętać o zasadach organizacji dotyczących prywatności i dostępu do danych. Aby uzyskać więcej informacji, zobacz Poziomy prywatności programu Power BI Desktop.

Podczas próby uruchomienia zapytania może zostać wyświetlony komunikat ostrzegawczy, ponieważ korzysta z zewnętrznego źródła danych.

Obraz przedstawiający ostrzeżenie utworzone przez usługę Power BI

Aby rozwiązać ten problem, wybierz pozycję Plik i Opcje i ustawienia. Następnie wybierz pozycję Opcje. Poniżej bieżącego pliku wybierz pozycję Prywatność i Zignoruj poziomy prywatności i potencjalnie zwiększ wydajność.

Ponadto może zostać wyświetlony komunikat z prośbą o określenie sposobu nawiązywania połączenia z interfejsem API.

Obraz przedstawiający żądanie określania poświadczeń dostępu

Aby rozwiązać ten problem, wybierz pozycję Edytuj poświadczenia w komunikacie. Po pojawieniu się okna dialogowego wybierz pozycję Anonimowe , aby anonimowo nawiązać połączenie z interfejsem API. Następnie wybierz pozycję Połącz.

Następnie wybierz pozycję Zamknij i zastosuj na wstążce Narzędzia główne , aby zastosować zmiany.

Wizualizacja odpowiedzi API Wykrywacza Anomalii

Na głównym ekranie usługi Power BI rozpocznij korzystanie z powyższych zapytań w celu wizualizacji danych. Najpierw wybierz pozycję Wykres liniowy w obszarze Wizualizacje. Następnie dodaj znacznik czasu z wywoływanej funkcji do osi wykresu liniowego. Kliknij go prawym przyciskiem myszy i wybierz Sygnaturę czasu.

Kliknięcie prawym przyciskiem myszy wartości znacznika czasu

Dodaj następujące pola z wywołanej funkcji do pola Wartości wykresu. Użyj poniższego zrzutu ekranu, aby ułatwić tworzenie wykresu.

  • Wartość
  • Górne marginesy
  • Dolne marginesy
  • OczekiwaneWartości

Obraz ustawień wykresu

Po dodaniu pól wybierz wykres i zmień jego rozmiar, aby wyświetlić wszystkie punkty danych. Wykres będzie wyglądać podobnie do poniższego zrzutu ekranu:

Obraz wizualizacji wykresu

Wyświetlanie punktów danych anomalii

Po prawej stronie okna usługi Power BI, pod okienka POLA, kliknij prawym przyciskiem myszy pozycję Wartość w zapytaniu Wywołana funkcja i wybierz Nowa szybka miara.

Obraz nowego ekranu szybkiej miary

Na wyświetlonym ekranie wybierz pozycję Filtrowana wartość jako obliczenie. Ustaw wartość podstawową na Sum of Value. Następnie przeciągnij IsAnomaly z pól Wywołana funkcja do filtru. Wybierz True z menu rozwijanego Filtr .

Drugi obraz nowego ekranu szybkiej miary

Po wybraniu pozycji Ok będziesz mieć Value for True pole w dolnej części listy pól. Kliknij go prawym przyciskiem myszy i zmień jego nazwę na Anomaly. Dodaj go do wartości wykresu. Następnie wybierz narzędzie Format i ustaw typ osi X na kategorialny.

Obraz przedstawiający oś x formatu

Zastosuj kolory do wykresu, wybierając narzędzie Format i Kolory danych. Wykres powinien wyglądać podobnie do następującego:

Obraz końcowego wykresu