Udostępnij za pośrednictwem


Samouczek: wizualizowanie anomalii przy użyciu funkcji wykrywania wsadowego i usługi Power BI (bez zmian)

Ważne

Od 20 września 2023 r. nie będzie można tworzyć nowych zasobów Narzędzie do wykrywania anomalii. Usługa Narzędzie do wykrywania anomalii jest wycofywana 1 października 2026 r.

Ten samouczek umożliwia znajdowanie anomalii w zestawie danych szeregów czasowych jako partii. Za pomocą programu Power BI Desktop pobierzesz plik programu Excel, przygotujesz dane dla interfejsu API Narzędzie do wykrywania anomalii i zwizualizujesz w nim 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
  • Integrowanie programu Power BI Desktop z interfejsem API Narzędzie do wykrywania anomalii na potrzeby wykrywania anomalii wsadowych
  • Wizualizuj anomalie znalezione w danych, w tym oczekiwane i widoczne wartości oraz granice wykrywania anomalii.

Wymagania wstępne

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 w celu wysłania ich do interfejsu API Narzędzie do wykrywania anomalii. Jeśli edytor Power Query nie otworzy się automatycznie, wybierz pozycję Edytuj zapytania na karcie Narzędzia główne.

Wybierz wstążkę Przekształć w Edytor Power Query. 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 pozycję Zamień bieżący. Następnie wybierz pozycję Zamknij i zastosuj lub Zastosuj na wstążce Narzędzia główne.

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 Edytor Power Query na wstążce Narzędzia główne otwórz menu rozwijane Nowe źródło i wybierz pozycję Puste zapytanie.

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

Obraz ekranu

W Edytor zaawansowany użyj następującego fragmentu kodu języka Power Query M, aby wyodrębnić kolumny z tabeli i wysłać go do interfejsu API. Następnie zapytanie utworzy tabelę na podstawie odpowiedzi JSON i zwróci ją. Zastąp zmienną prawidłowym kluczem interfejsu apiKey API Narzędzie do wykrywania anomalii i endpoint punktem końcowym. Po wprowadzeniu zapytania do Edytor zaawansowany wybierz pozycję 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.

Obraz funkcji invoke

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.

Wizualizowanie odpowiedzi interfejsu API Narzędzie do wykrywania 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 pozycję Znacznik 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ść
  • UpperMargins
  • LowerMargins
  • ExpectedValues

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 okienkem POLA kliknij prawym przyciskiem myszy pozycję Wartość w zapytaniu Wywołana funkcja, a następnie wybierz pozycję 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