Analisi di flusso e Power BI: un dashboard di analisi in tempo reale per il flusso di datiStream Analytics and Power BI: A real-time analytics dashboard for streaming data

Analisi di flusso di Azure permette di usare uno dei principali strumenti di Business Intelligence, Microsoft Power BI.Azure Stream Analytics enables you to take advantage of one of the leading business intelligence tools, Microsoft Power BI. Questo articolo illustra come creare strumenti di Business Intelligence usando Power BI come output per i processi di Analisi di flusso di Azure.In this article, you learn how create business intelligence tools by using Power BI as an output for your Azure Stream Analytics jobs. Si apprenderà anche come creare e usare un dashboard in tempo reale costantemente aggiornato dal processo di analisi di flusso.You also learn how to create and use a real-time dashboard that is continuously updated by the Stream Analytics job.

Questo articolo continua dall'esercitazione sul rilevamento delle frodi in tempo reale in Analisi di flusso.This article continues from the Stream Analytics real-time fraud detection tutorial. Esso si basa sul flusso di lavoro creato in tale esercitazione e aggiunge un output di Power BI in modo che sia possibile visualizzare le chiamate telefoniche fraudolente rilevate da un processo di Analisi di flusso.It builds on the workflow created in that tutorial and adds a Power BI output so that you can visualize fraudulent phone calls that are detected by a Streaming Analytics job.

È disponibile un video che illustra questo scenario.You can watch a video that illustrates this scenario.

PrerequisitiPrerequisites

Prima di iniziare, verificare di disporre degli elementi seguenti:Before you start, make sure you have the following:

  • Un account Azure.An Azure account.
  • Un account per Power BI Pro.An account for Power BI Pro. È possibile usare un account aziendale o dell'istituto di istruzione.You can use a work account or a school account.
  • Una versione completata dell'esercitazione sul rilevamento delle frodi in tempo reale.A completed version of the real-time fraud detection tutorial. L'esercitazione include un'app che genera metadati di telefonate fittizie.The tutorial includes an app that generates fictitious telephone-call metadata. Nell'esercitazione si crea un hub eventi e si inviano i dati delle telefonate all'hub eventi.In the tutorial, you create an event hub and send the streaming phone call data to the event hub. Si scrive una query che rileva le chiamate fraudolente (chiamate effettuate dallo stesso numero nello stesso momento da posizioni diverse).You write a query that detects fraudulent calls (calls from the same number at the same time in different locations).

Aggiungere l’output Power BIAdd Power BI output

Nell'esercitazione sul rilevamento delle frodi in tempo reale l'output viene inviato all'archiviazione BLOB di Azure.In the real-time fraud detection tutorial, the output is sent to Azure Blob storage. In questa sezione si aggiunge un output che invia informazioni a Power BI.In this section, you add an output that sends information to Power BI.

  1. Nel portale di Azure aprire il processo di Analisi di flusso creato in precedenza.In the Azure portal, open the Streaming Analytics job that you created earlier. Se si usa il nome suggerito, il processo è denominato sa_frauddetection_job_demo.If you used the suggested name, the job is named sa_frauddetection_job_demo.

  2. Nel menu a sinistra selezionare Output in Topologia processo.On the left menu, select Outputs under Job topology. Selezionare quindi + Aggiungi e scegliere Power BI dal menu a discesa.Then, select + Add and choose Power BI from the dropdown menu.

  3. Selezionare + Aggiungi > Power BI.Select + Add > Power BI. Compilare quindi il modulo con i dettagli seguenti e selezionare autorizza per usare la propria identità utente per connettersi a Power BI (il token è valido per 90 giorni).Then fill the form with the following details and select Authorize to use your own user identity to connect to Power BI (the token is valid for 90 days).

Nota

Per i processi di produzione, è consigliabile connettersi per usare identità gestita per autenticare il processo di analisi di flusso di Azure per Power bi.For production jobs, we recommend to connect to use Managed Identity to authenticate your Azure Stream Analytics job to Power BI.

ImpostazioneSetting Valore consigliatoSuggested value
Alias di outputOutput alias CallStream-PowerBICallStream-PowerBI
Nome del set di datiDataset name sa-datasetsa-dataset
Nome tabellaTable name fraudulent-callsfraudulent-calls

Configurare l'output Analisi di flusso di Azure

Avviso

Se Power BI dispone di un set di dati e di una tabella con gli stessi nomi specificati nel processo di Analisi di flusso, i dati esistenti vengono sovrascritti.If Power BI has a dataset and table that have the same names as the ones that you specify in the Stream Analytics job, the existing ones are overwritten. È consigliabile non creare in modo esplicito il set di dati e la tabella nell'account di Power BI.We recommend that you do not explicitly create this dataset and table in your Power BI account. Vengono creati automaticamente quando il processo di Analisi di flusso viene avviato e inizia a generare output in Power BI.They are automatically created when you start your Stream Analytics job and the job starts pumping output into Power BI. Se la query del processo non genera alcun risultato, il set di dati e la tabella non vengono creati.If your job query doesn't return any results, the dataset and table are not created.

  1. Quando si seleziona Autorizza, viene visualizzata una finestra popup in cui viene chiesto di fornire le credenziali per l'autenticazione dell'account di Power BI.When you select Authorize, a pop-up window opens and you are asked to provide credentials to authenticate to your Power BI account. Una volta completato il processo di autorizzazione, fare clic su Salva per salvare le impostazioni.Once the authorization is successful, Save the settings.

  2. Fare clic su Crea.Click Create.

Il set di dati viene creato con le impostazioni seguenti:The dataset is created with the following settings:

  • defaultRetentionPolicy: BasicFIFO: dati FIFO, con un massimo di 200.000 righe.defaultRetentionPolicy: BasicFIFO - Data is FIFO, with a maximum of 200,000 rows.
  • defaultMode: Hybrid: il set di dati supporta sia i riquadri di streaming (noti anche come push) sia gli oggetti visivi tradizionali basati su report.defaultMode: hybrid - The dataset supports both streaming tiles (also known as push) and traditional report-based visuals. Per il contenuto push, in questo caso i dati vengono continuamente aggiornati dal processo di analisi di flusso, senza la necessità di pianificare l'aggiornamento dal lato Power BI.For the push content, the data is continuously updated from the stream analytics job in this case, with no need to schedule refresh from the Power BI side.

Attualmente non è possibile creare set di dati con altri flag.Currently, you can't create datasets with other flags.

Per altre informazioni sui set di dati di Power BI, vedere le informazioni di riferimento sull'API REST di Power BI.For more information about Power BI datasets, see the Power BI REST API reference.

Scrivere la queryWrite the query

  1. Chiudere il pannello Output e tornare al pannello del processo.Close the Outputs blade and return to the job blade.

  2. Fare clic sulla casella Query.Click the Query box.

  3. Immettere la query seguente.Enter the following query. Questa query è simile alla query self-join che è stata creata nell'esercitazione sul rilevamento delle frodi.This query is similar to the self-join query you created in the fraud-detection tutorial. La differenza è che questa query invia i risultati al nuovo output creato (CallStream-PowerBI).The difference is that this query sends results to the new output you created (CallStream-PowerBI).

    Nota

    Se non è stato assegnato un nome all'input CallStream nell'esercitazione sul rilevamento delle frodi, sostituire il nome per CallStream nelle clausole FROM e JOIN della query.If you did not name the input CallStream in the fraud-detection tutorial, substitute your name for CallStream in the FROM and JOIN clauses in the query.

    /* Our criteria for fraud:
    Calls made from the same caller to two phone switches in different locations (for example, Australia and Europe) within five seconds */
    
    SELECT System.Timestamp AS WindowEnd, COUNT(*) AS FraudulentCalls
    INTO "CallStream-PowerBI"
    FROM "CallStream" CS1 TIMESTAMP BY CallRecTime
    JOIN "CallStream" CS2 TIMESTAMP BY CallRecTime
    
    /* Where the caller is the same, as indicated by IMSI (International Mobile Subscriber Identity) */
    ON CS1.CallingIMSI = CS2.CallingIMSI
    
    /* ...and date between CS1 and CS2 is between one and five seconds */
    AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5
    
    /* Where the switch location is different */
    WHERE CS1.SwitchNum != CS2.SwitchNum
    GROUP BY TumblingWindow(Duration(second, 1))
    
  4. Fare clic su Salva.Click Save.

Testare la queryTest the query

Questa sezione è facoltativa ma consigliata.This section is optional, but recommended.

  1. Se l'app TelcoStreaming non è attualmente in esecuzione, avviarla seguendo questa procedura:If the TelcoStreaming app is not currently running, start it by following these steps:

    • Aprire il prompt dei comandi.Open Command Prompt.

    • Passare alla cartella in cui si trovano il file telcogenerator.exe e il file modificato telcodatagen.exe.config.Go to the folder where the telcogenerator.exe and modified telcodatagen.exe.config files are.

    • Eseguire il comando seguente:Run the following command:

      telcodatagen.exe 1000 .2 2

  2. Nella pagina Query del processo di Analisi di flusso fare clic sui puntini di sospensione accanto all'input CallStream e quindi selezionare Carica dati di esempio da input.On the Query page for your Stream Analytics job, click the dots next to the CallStream input and then select Sample data from input.

  3. Specificare che si desidera ottenere i dati di tre minuti e fare clic su OK.Specify that you want three minutes' worth of data and click OK. Attendere fino a quando non si riceve la notifica che i dati sono stati campionati.Wait until you're notified that the data has been sampled.

  4. Fare clic su Test e rivedere i risultati.Click Test and review the results.

Eseguire il processoRun the job

  1. Verificare che l'app TelcoStreaming sia in esecuzione.Make sure the TelcoStreaming app is running.

  2. Passare alla pagina Panoramica del processo di Analisi di flusso e selezionare Avvia.Navigate to the Overview page for your Stream Analytics job and select Start.

    Avviare il processo di analisi di flusso

Il processo di Analisi di flusso inizia a cercare le chiamate fraudolente nel flusso in ingresso.Your Streaming Analytics job starts looking for fraudulent calls in the incoming stream. Il processo crea anche il set di dati e la tabella in Power BI e inizia a inviare loro i dati relativi alle chiamate fraudolente.The job also creates the dataset and table in Power BI and starts sending data about the fraudulent calls to them.

Creare il dashboard in Power BICreate the dashboard in Power BI

  1. Passare a Powerbi.com e accedere con l'account aziendale o dell'istituto di istruzione.Go to Powerbi.com and sign in with your work or school account. Se la query del processo di Analisi di flusso produce risultati, si noterà che il set di dati è già creato:If the Stream Analytics job query outputs results, you see that your dataset is already created:

    Posizione del set di dati di streaming in Power BI

  2. Nell'area di lavoro fare clic su + Crea.In your workspace, click + Create.

    Pulsante Crea nell'area di lavoro di Power BI

  3. Creare un nuovo dashboard e denominarlo Fraudulent Calls.Create a new dashboard and name it Fraudulent Calls.

    Creare un dashboard e assegnargli un nome nell'area di lavoro di Power BI

  4. Nella parte superiore della finestra, fare clic su Aggiungi riquadro, selezionare DATI IN STREAMING PERSONALIZZATI, quindi fare clic su Avanti.At the top of the window, click Add tile, select CUSTOM STREAMING DATA, and then click Next.

    Riquadro del set di dati di streaming personalizzato in Power BI

  5. In YOUR DATSETS (SET DI DATI PERSONALI) selezionare il set di dati interessato e quindi fare clic su Avanti.Under YOUR DATSETS, select your dataset and then click Next.

    Il set di dati di streaming in Power BI

  6. In Tipo di visualizzazione selezionare Scheda e quindi nell'elenco Campi selezionare fraudulentcalls.Under Visualization Type, select Card, and then in the Fields list, select fraudulentcalls.

    Dettagli di visualizzazione per il nuovo riquadro

  7. Fare clic su Avanti.Click Next.

  8. Immettere i dettagli del riquadro, ad esempio un titolo e un sottotitolo.Fill in tile details like a title and subtitle.

    Titolo e sottotitolo per il nuovo riquadro

  9. Fare clic su Applica.Click Apply.

    Si dispone a questo punto di un contatore di frodi.Now you have a fraud counter!

    Contatore di frodi nel dashboard di Power BI

  10. Seguire di nuovo la procedura per aggiungere un riquadro (partendo dal passaggio 4).Follow the steps again to add a tile (starting with step 4). Questa volta eseguire le operazioni seguenti:This time, do the following:

    • Quando si accede a Tipo di visualizzazione selezionare Grafico a linee.When you get to Visualization Type, select Line chart.

    • Aggiungere un asse e selezionare windowend.Add an axis and select windowend.

    • Aggiungere un valore e selezionare fraudulentcalls.Add a value and select fraudulentcalls.

    • Per Intervallo di tempo da visualizzare selezionare gli ultimi 10 minuti.For Time window to display, select the last 10 minutes.

      Creare il riquadro per il grafico a linee in Power BI

  11. Fare clic su Avanti, aggiungere un titolo e un sottotitolo e fare clic su Applica.Click Next, add a title and subtitle, and click Apply.

    Il dashboard di Power BI offre ora due visualizzazioni di dati sulle chiamate fraudolente in base al rilevamento nei dati di streaming.The Power BI dashboard now gives you two views of data about fraudulent calls as detected in the streaming data.

    Dashboard di Power BI completo che mostra due riquadri per le chiamate fraudolente

Informazioni sulle limitazioni e le procedure consigliateLearn about limitations and best practices

Attualmente, è possibile chiamare Power BI approssimativamente una volta al secondo.Currently, Power BI can be called roughly once per second. Gli oggetti visivi di streaming supportano pacchetti da 15 KB.Streaming visuals support packets of 15 KB. Oltre tale limite, gli oggetti visivi di streaming hanno esito negativo, ma il push continua a funzionare.Beyond that, streaming visuals fail (but push continues to work). A causa di queste limitazioni, Power BI è più adatto ai casi in cui Analisi di flusso di Azure riduce notevolmente il carico di dati.Because of these limitations, Power BI lends itself most naturally to cases where Azure Stream Analytics does a significant data load reduction. È consigliabile usare la finestra a cascata o la finestra di salto per assicurarsi che il push di dati avvenga al massimo una volta al secondo e che la query rientri nei requisiti di velocità effettiva.We recommend using a Tumbling window or Hopping window to ensure that data push is at most one push per second, and that your query lands within the throughput requirements.

Per calcolare il valore e visualizzare la finestra in secondi, è possibile usare questa equazione:You can use the following equation to compute the value to give your window in seconds:

Equazione per calcolare il valore e visualizzare la finestra in secondi

Ad esempio:For example:

  • Sono presenti 1.000 dispositivi che inviano dati a intervalli di un secondo.You have 1,000 devices sending data at one-second intervals.
  • Si usa lo SKU di Power BI Pro che supporta 1.000.000 righe l'ora.You are using the Power BI Pro SKU that supports 1,000,000 rows per hour.
  • Si vuole pubblicare la quantità di dati medi per ogni dispositivo in Power BI.You want to publish the amount of average data per device to Power BI.

L'equazione diventa quindi la seguente:As a result, the equation becomes:

Equazione basata su criteri di esempio

Con questa configurazione è possibile modificare la query originale come segue:Given this configuration, you can change the original query to the following:

    SELECT
        MAX(hmdt) AS hmdt,
        MAX(temp) AS temp,
        System.TimeStamp AS time,
        dspl
    INTO "CallStream-PowerBI"
    FROM
        Input TIMESTAMP BY time
    GROUP BY
        TUMBLINGWINDOW(ss,4),
        dspl

Rinnovare l'autorizzazioneRenew authorization

Se la password è stata modificata dopo la creazione o l'ultima autenticazione del processo, è necessario autenticare nuovamente l'account Power BI.If the password has changed since your job was created or last authenticated, you need to reauthenticate your Power BI account. Se Azure AD Multi-Factor Authentication è configurato nel tenant Azure Active Directory (Azure AD), è necessario rinnovare Power BI autorizzazione ogni due settimane.If Azure AD Multi-Factor Authentication is configured on your Azure Active Directory (Azure AD) tenant, you also need to renew Power BI authorization every two weeks. Se non viene rinnovata, si potrebbero verificare problemi come la mancanza di output dei processi o un Authenticate user error nei log delle operazioni.If you don't renew, you could see symptoms such as a lack of job output or an Authenticate user error in the operation logs.

Se si tenta di avviare un processo dopo che il token è scaduto, si verifica un errore e l'avvio del processo ha esito negativo.Similarly, if a job starts after the token has expired, an error occurs and the job fails. Per risolvere questo problema, arrestare il processo in esecuzione e passare all'output di Power BI.To resolve this issue, stop the job that's running and go to your Power BI output. Per evitare la perdita di dati, fare clic sul collegamento Rinnova autorizzazione e riavviare il processo selezionando Ora ultimo arresto.To avoid data loss, select the Renew authorization link, and then restart your job from the Last Stopped Time.

Dopo aver aggiornato l'autorizzazione con Power BI, viene visualizzato un avviso verde nell'area di autorizzazione che indica che il problema è stato risolto.After the authorization has been refreshed with Power BI, a green alert appears in the authorization area to reflect that the issue has been resolved.

Passaggi successiviNext steps