Esercitazione: Visualizzare le anomalie usando il rilevamento batch e Power BI (univariato)

Importante

A partire dal 20 settembre 2023 non sarà possibile creare nuove risorse Rilevamento anomalie. Il servizio Rilevamento anomalie viene ritirato il 1° ottobre 2026.

Usare questa esercitazione per trovare anomalie nel set di dati di una serie temporale come batch. Usando Power BI Desktop si prepareranno i dati di un file di Excel per l'API Rilevamento anomalie e si visualizzeranno le anomalie statistiche contenute nei dati.

Questa esercitazione illustra come:

  • Usare Power BI Desktop per importare e trasformare un set di dati di una serie temporale
  • Integrare Power BI Desktop con l'API Rilevamento anomalie per il rilevamento anomalie in batch
  • Visualizzare le anomalie trovate all'interno dei dati, inclusi i valori previsti e quelli rilevati, e i limiti di rilevamento anomalie.

Prerequisiti

  • Una sottoscrizione di Azure
  • Microsoft Power BI Desktop, disponibile gratuitamente.
  • Un file di Excel (con estensione xlsx) contenente i punti dati delle serie temporali.
  • Dopo aver creato la sottoscrizione di Azure, creare una risorsa Rilevamento anomalie nel portale di Azure per ottenere la chiave e l'endpoint.
    • La chiave e l'endpoint della risorsa creata sono necessari per connettere l'applicazione all'API Rilevamento anomalie. Questa operazione verrà eseguita più avanti nell'avvio rapido.

Nota

Per ottenere risultati ottimali con l'API Rilevamento anomalie, i dati delle serie temporali in formato JSON devono includere:

  • Punti dati separati dallo stesso intervallo, con non più del 10% del numero previsto di punti mancanti.
  • Almeno 12 punti dati se i dati non hanno un modello stagionale chiaro.
  • Almeno 4 occorrenze del modello se i dati hanno uno modello chiaro.

Caricare e formattare i dati della serie temporale

Per iniziare, aprire Power BI Desktop e caricare i dati della serie temporale scaricati dai prerequisiti. Questo file di Excel contiene una serie di coppie di valori e timestamp UTC (Coordinated Universal Time).

Nota

Power BI può usare i dati di un'ampia gamma di origini, ad esempio file CSV, database SQL, archivi BLOB di Azure e altro.

Nella finestra principale di Power BI Desktop selezionare Home sulla barra multifunzione. Nel gruppo Dati esterni della barra multifunzione aprire il menu a discesa Recupera dati e selezionare Excel.

An image of the

Nella finestra di dialogo visualizzata passare alla cartella in cui è stato scaricato il file xlsx di esempio e selezionarlo. Dopo aver visualizzato la finestra di dialogo Strumento di navigazione , selezionare Sheet1 e quindi Modifica.

An image of the data source

Power BI convertirà i timestamp nella prima colonna in un tipo di dati Date/Time. Questi timestamp devono essere convertiti in testo per essere inviati all'API Rilevamento anomalie. Se l'editor di Power Query non viene aperto automaticamente, selezionare Modifica query nella scheda home.

Selezionare la barra multifunzione Trasforma nella editor di Power Query. Nel gruppo Qualsiasi colonna aprire l'elenco a discesa Tipo di dati e selezionare Testo.

An image of the data type drop down

Quando viene visualizzato un avviso sulla modifica del tipo di colonna, selezionare Sostituisci corrente. In seguito, selezionare Chiudi e applica o Applica nella barra multifunzione Home .

Creare una funzione per inviare i dati e formattare la risposta

Per formattare e inviare il file di dati all'API Rilevamento anomalie, è possibile richiamare una query sulla tabella creata in precedenza. Nella editor di Power Query, dalla barra multifunzione Home aprire il menu a discesa Nuova origine e selezionare Query vuota.

Assicurarsi che la nuova query sia selezionata e quindi selezionare Editor avanzato.

An image of the

In Editor avanzato usare il frammento di Power Query M seguente per estrarre le colonne dalla tabella e inviarle all'API. La query creerà quindi una tabella dalla risposta JSON e la restituirà. Sostituire la variabile apiKey con la chiave API Rilevamento anomalie valida e endpoint con l'endpoint. Dopo aver immesso la query nel Editor avanzato, selezionare Fine.

(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

Richiamare la query nel foglio dati selezionando Sheet1invio parametro e selezionare Richiama.

An image of the invoke function

Importante

Al termine, ricordarsi di rimuovere la chiave dal codice e non renderlo mai pubblico. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza dei servizi di intelligenza artificiale di Azure.

Privacy e autenticazione dell'origine dati

Nota

È importante conoscere i criteri dell'organizzazione a livello di privacy e accesso ai dati. Per altre informazioni, vedere Livelli di privacy di Power BI Desktop.

Quando si prova a eseguire la query si potrebbe ricevere un messaggio di avviso, poiché utilizza un'origine dati esterna.

An image showing a warning created by Power BI

Per risolvere il problema, selezionare File e Opzioni e impostazioni. Selezionare quindi Opzioni. In File corrente selezionare Privacy e Ignora i livelli di privacy per un potenziale miglioramento delle prestazioni.

Si potrebbe anche ricevere un messaggio che chiede di specificare in che modo ci si vuole connettere all'API.

An image showing a request to specify access credentials

Per risolvere il problema, selezionare Modifica credenziali nel messaggio. Nella finestra di dialogo visualizzata selezionare Anonimo per connettersi alll'API in modalità anonima. Selezionare Connetti.

In seguito, selezionare Chiudi e applica nella barra multifunzione Home per applicare le modifiche.

Visualizzare la risposta dell'API Rilevamento anomalie

Nella schermata principale di Power BI iniziare a usare le query create in precedenza per visualizzare i dati. Prima di tutto selezionare Grafico a linee in Visualizzazioni. Quindi aggiungere il timestamp della funzione richiamata all'Asse del grafico a linee. Fare clic su di esso con il pulsante destro del mouse e scegliere Timestamp.

Right-clicking the Timestamp value

Aggiungere i campi seguenti da Richiamata funzione al campo Valori del grafico. Usare lo screenshot seguente come aiuto per creare il grafico.

  • Valore
  • UpperMargins
  • LowerMargins
  • ExpectedValues

An image of the chart settings

Dopo aver aggiunto i campi, selezionare il grafico e ridimensionarlo per visualizzare tutti i punti dati. Il grafico avrà un aspetto simile a quello dello screenshot seguente:

An image of the chart visualization

Visualizzare i punti dati delle anomalie

Sul lato destro della finestra di Power BI, sotto il riquadro CAMPI fare clic con il pulsante destro del mouse su Valore nella query Funzione richiamata e selezionare Nuova misura rapida.

An image of the new quick measure screen

Nella schermata visualizzata selezionare Valore filtrato come calcolo. Impostare Valore di base su Sum of Value. Quindi trascinare IsAnomaly dai campi Richiamata funzione al campo Filtro. Selezionare True dall'elenco a discesa Filtro.

A second image of the new quick measure screen

Dopo aver selezionato OK, si avrà un Value for True campo, nella parte inferiore dell'elenco dei campi. Fare clic su di esso con il pulsante destro del mouse e rinominarlo in Anomalia. Aggiungerlo all'asse Valori del grafico. Quindi selezionare lo strumento Formato e impostare il tipo di asse delle X su Categorie.

An image of the format x axis

Applicare colori al grafico selezionando lo strumento Formato e i colori dei dati. Il grafico dovrebbe essere simile al seguente:

An image of the final chart