Condividi tramite


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

Importante

A partire dal 20 settembre 2023 non sarà possibile creare nuove risorse di Rilevamento anomalie. Il servizio Rilevamento anomalie verrà 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 di 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 sulla barra multifunzione aprire il menu a discesa Dati e selezionare Excel.

Immagine del pulsante

Nella finestra di dialogo visualizzata passare alla cartella in cui è stato scaricato il file xlsx di esempio e selezionarlo. Nella finestra di dialogo Strumento di navigazione selezionare Foglio1 e quindi Modifica.

Immagine della schermata

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 si apre automaticamente, selezionare Modifica query nella scheda Home.

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

Immagine dell'elenco a discesa del tipo di dati

Quando si riceve un avviso sulla modifica del tipo di colonna, selezionare Sostituisci corrente. Quindi selezionare Chiudi e applica o su Applica nella scheda Home della barra multifunzione.

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 scheda Home sulla barra multifunzione dell'editor di Power Query aprire il menu a discesa Nuova origine e selezionare Query vuota.

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

Immagine della schermata

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 in 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 Sheet1 sotto Immettere un parametro, quindi selezionare Richiama.

Immagine della funzione Richiama

Importante

Al termine, ricordarsi di rimuovere la chiave dal codice e non renderlo mai pubblico. Per un ambiente di produzione usare un metodo sicuro per l'archiviazione e l'accesso alle proprie credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza del Servizi di Azure AI.

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.

Immagine che mostra un avviso creato da Power BI

Per risolvere il problema, selezionare File e quindi 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.

Immagine che mostra una richiesta di specificare le credenziali di accesso

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.

Quindi selezionare Chiudi e applica nella scheda Home della barra multifunzione 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.

Fare clic con il pulsante destro del mouse sul valore Timestamp

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

Immagine delle impostazioni del grafico

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

Immagine della visualizzazione del grafico

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 sotto la query Funzione richiamata e selezionare Nuova misura rapida .

Immagine della nuova schermata di misura rapida

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.

Seconda immagine della nuova schermata di misura rapida

Dopo aver selezionato OK si vedrà un campo Value for True in fondo all'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.

Immagine dell'asse x del formato

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

Immagine del grafico finale