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.

An image of the

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.

An image of the data source

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.

An image of the data type drop down

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.

An image of the

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.

An image of the invoke function

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.

An image showing a warning created by 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.

An image showing a request to specify access credentials

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łączenie.

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.

Right-clicking the Timestamp value

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

An image of the chart settings

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:

An image of the chart visualization

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.

An image of the new quick measure screen

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 .

A second image of the new quick measure screen

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.

An image of the format x axis

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

An image of the final chart