Esercitazione: Analizzare i dati delle chiamate fraudolente con Analisi di flusso e visualizzare i risultati nel dashboard di Power BI
Questa esercitazione descrive come analizzare i dati delle telefonate con Analisi di flusso di Azure. I dati delle telefonate, generati da un'applicazione client, contengono chiamate fraudolente, rilevate dal processo di Analisi di flusso. È possibile usare tecniche di questa esercitazione per altri tipi di rilevamento delle frodi, ad esempio frodi tramite carta di credito o furti di identità.
In questa esercitazione si eseguono le seguenti attività:
- Generare dati di telefonate di esempio e inviarli ad Hub eventi di Azure.
- Creare un processo di Analisi di flusso.
- Configurare input e output del processo.
- Definire query per filtrare le chiamate fraudolente.
- Testare e avviare il processo.
- Visualizzare i risultati in Power BI.
Prerequisiti
Prima di iniziare, assicurarsi di aver completato i passaggi seguenti:
- Se non si ha una sottoscrizione di Azure, creare un account gratuito.
- Scaricare l'app generatore di eventi di chiamata telefonica, TelcoGenerator.zip dall'Area download Microsoft o ottenere il codice sorgente da GitHub.
- È necessario un account Power BI .
Accedere ad Azure
Accedere al portale di Azure.
Creare un hub eventi
È necessario inviare alcuni dati di esempio a un hub eventi prima che Analisi di flusso possa analizzare il flusso di dati delle chiamate fraudolente. In questa esercitazione si inviano dati ad Azure usando Hub eventi di Azure.
Usare la procedura seguente per creare un hub eventi e inviare i dati delle chiamate a tale hub eventi:
Accedere al portale di Azure.
Selezionare Tutti i servizi nel menu a sinistra, selezionare Internet delle cose, passare il mouse su Hub eventi e quindi fare clic sul pulsante + (Aggiungi).
Nella pagina Crea spazio dei nomi, seguire questa procedura:
Selezionare una sottoscrizione di Azure in cui si vuole creare l'hub eventi.
In Gruppo di risorse selezionare Crea nuovo e immettere un nome per il gruppo di risorse. Lo spazio dei nomi di Hub eventi viene creato in questo gruppo di risorse.
Per Nome spazio dei nomi immettere un nome univoco per lo spazio dei nomi di Hub eventi.
In Località selezionare l'area in cui si vuole creare lo spazio dei nomi.
Per Piano tariffario selezionare Standard.
Selezionare Rivedi e crea nella parte inferiore della pagina.
Nella pagina Rivedi e crea della creazione guidata dello spazio dei nomi selezionare Crea nella parte inferiore della pagina dopo aver esaminato tutte le impostazioni.
Dopo aver distribuito correttamente lo spazio dei nomi, selezionare Vai alla risorsa per passare alla pagina Spazio dei nomi di Hub eventi.
Nella pagina Spazio dei nomi di Hub eventi selezionare +Hub eventi sulla barra dei comandi.
Nella pagina Crea hub eventi immettere un nome per l'hub eventi. Impostare Conteggio partizioni su 2. Usare le opzioni predefinite nelle impostazioni rimanenti e selezionare Rivedi e crea.
Nella pagina Rivedi e crea selezionare Crea nella parte inferiore della pagina. Attendere il completamento della distribuzione.
Concedere l'accesso all'hub eventi e ottenere una stringa di connessione
Affinché un'applicazione possa inviare dati ad Hub eventi di Azure, è necessario che l'hub eventi abbia criteri che consentono l'accesso. I criteri di accesso generano una stringa di connessione che include informazioni di autorizzazione.
Nella pagina Spazio dei nomi di Hub eventi selezionare Criteri di accesso condiviso nel menu a sinistra.
Selezionare RootManageSharedAccessKey nell'elenco dei criteri.
Selezionare quindi il pulsante Copia accanto a Stringa di connessione - chiave primaria.
Incollare la stringa di connessione in un editor di testo. La stringa sarà necessaria nella sezione seguente.
La stringa di connessione è simile a quanto segue:
Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>
Si noti che il stringa di connessione contiene più coppie chiave-valore separate da punti e virgola: Endpoint, SharedAccessKeyName e SharedAccessKey.
Avviare l'applicazione generatore eventi
Prima di avviare l'app TelcoGenerator, configurarla per inviare i dati all'istanza di Hub eventi di Azure creata in precedenza.
Estrarre il contenuto del file TelcoGenerator.zip.
Aprire il
TelcoGenerator\TelcoGenerator\telcodatagen.exe.config
file in un editor di testo di propria scelta C'è più di un.config
file, quindi assicurarsi di aprire quello corretto.Aggiornare l'elemento
<appSettings>
nel file di configurazione con i dettagli seguenti:- Impostare il valore della chiave EventHubName sul valore di EntityPath alla fine del stringa di connessione.
- Impostare il valore della chiave Microsoft.ServiceBus.ConnectionString sul stringa di connessione sullo spazio dei nomi . Se si usa un stringa di connessione per un hub eventi, non uno spazio dei nomi, rimuovere
EntityPath
il valore (;EntityPath=myeventhub
) alla fine. Non dimenticare di rimuovere il punto e virgola che precede il valore entityPath.
Salvare il file.
Aprire quindi una finestra di comando e passare alla cartella in cui è stata decompressa l'app TelcoGenerator. Immettere quindi il comando seguente:
.\telcodatagen.exe 1000 0.2 2
Questo comando accetta i parametri seguenti:
- Numero di record di dati delle chiamate all'ora.
- Percentuale di probabilità di frode, ovvero frequenza con cui l'app deve simulare una chiamata fraudolenta. Il valore 0,2 indica che circa il 20% dei record di chiamata sembra fraudolento.
- Durata in ore, ovvero numero di ore per cui l'app deve essere eseguita. È anche possibile arrestare l'app in qualsiasi momento terminando il processo (CTRL+C) dalla riga di comando.
Dopo alcuni secondi, l'app inizierà a visualizzare i record delle chiamate mentre ne esegue l'invio all'hub eventi. I dati delle telefonate contengono i campi seguenti:
Record Definizione CallrecTime Timestamp dell'ora di inizio della chiamata. SwitchNum Commutatore telefonico usato per la connessione della chiamata. Per questo esempio i commutatori sono stringhe che rappresentano il paese/area di origine (Stati Uniti, Cina, Regno Unito, Germania o Australia). CallingNum Numero di telefono del chiamante. CallingIMSI Codice IMSI (International Mobile Subscriber Identity). Identificatore univoco del chiamante. CalledNum Numero di telefono del destinatario della chiamata. CalledIMSI Codice IMSI (International Mobile Subscriber Identity). Identificatore univoco del destinatario della chiamata.
Creare un processo di Analisi di flusso.
Dopo aver creato un flusso di eventi di chiamata, è possibile creare un processo di Analisi di flusso che legge i dati dall'hub eventi.
- Per creare un processo di Analisi di flusso, passare al portale di Azure.
- Selezionare Crea una risorsa e cercare Processo di Analisi di flusso. Selezionare il riquadro Processo di Analisi di flusso e quindi Crea.
- Nella pagina Nuovo processo di Analisi di flusso seguire questa procedura:
Per Sottoscrizione selezionare la sottoscrizione che contiene lo spazio dei nomi di Hub eventi.
In Gruppo di risorse selezionare il gruppo di risorse creato in precedenza.
Nella sezione Dettagli istanza immettere un nome univoco per il processo di Analisi di flusso.
In Area selezionare l'area in cui si vuole creare il processo di Analisi di flusso. È consigliabile inserire il processo e l'hub eventi nella stessa area per ottenere prestazioni ottimali e in modo da non pagare per trasferire i dati tra aree.
Per Ambiente di hosting< selezionare Cloud se non è già selezionato. Per la distribuzione dei processi di Analisi di flusso è possibile scegliere tra Cloud o Edge. Il cloud consente di eseguire la distribuzione nel cloud di Azure e Edge consente di eseguire la distribuzione in un dispositivo IoT Edge.
Per Unità di streaming selezionare 1. Le unità di streaming rappresentano le risorse di calcolo necessarie per eseguire un processo. Il valore predefinito di questa impostazione è 1. Per informazioni sul ridimensionamento delle unità di streaming, vedere Informazioni sulle unità di flusso e su come modificarle.
Selezionare Rivedi e crea nella parte inferiore della pagina.
- Nella pagina Rivedi e crea rivedere le impostazioni e quindi selezionare Crea per creare il processo di Analisi di flusso.
- Dopo aver distribuito il processo, selezionare Vai alla risorsa per passare alla pagina del processo di Analisi di flusso.
Configurare l'input del processo
Il passaggio successivo consiste nel definire un'origine di input da cui il processo può leggere i dati usando l'hub eventi creato nella sezione precedente.
Nella pagina processo di Analisi di flusso, nella sezione Topologia processo del menu a sinistra selezionare Input.
Nella pagina Input selezionare + Aggiungi input e Hub eventi.
Nella pagina Hub eventi seguire questa procedura:
Per Alias di input immettere CallStream. L'alias di input è un nome descrittivo per identificare l'input. L'alias di input può contenere solo caratteri alfanumerici, trattini e caratteri di sottolineatura e deve avere una lunghezza compresa tra 3 e 63 caratteri.
Per Sottoscrizione selezionare la sottoscrizione di Azure in cui è stato creato l'hub eventi. L'hub eventi può trovarsi nella stessa sottoscrizione del processo di Analisi di flusso o in una sottoscrizione diversa.
Per Spazio dei nomi di Hub eventi selezionare lo spazio dei nomi di Hub eventi creato nella sezione precedente. Tutti gli spazi dei nomi disponibili nella sottoscrizione corrente sono elencati nell'elenco a discesa.
Per Nome hub eventi selezionare l'hub eventi creato nella sezione precedente. Tutti gli hub eventi disponibili nello spazio dei nomi selezionato sono elencati nell'elenco a discesa.
Per gruppo di consumer dell'hub eventi mantenere selezionata l'opzione Crea nuova in modo che venga creato un nuovo gruppo di consumer nell'hub eventi. È consigliabile usare un gruppo di consumer distinto per ogni processo di Analisi di flusso. Se non viene specificato alcun gruppo di consumer, il processo di Analisi di flusso usa il
$Default
gruppo di consumer. Quando un processo contiene un self-join o ha più input, alcuni input potrebbero essere letti da più di un lettore. Questa situazione influisce sul numero di lettori in un singolo gruppo di consumer.Per Modalità di autenticazione selezionare Stringa di connessione. È più semplice testare l'esercitazione con questa opzione.
Per Nome criterio hub eventi selezionare Usa esistente e quindi selezionare il criterio creato in precedenza.
Selezionare Salva nella parte inferiore della pagina.
Configurare l'output del processo
L'ultimo passaggio consiste nel definire un sink di output in cui il processo può scrivere i dati trasformati. In questa esercitazione ottenere i dati di output e visualizzarli con Power BI.
Nel portale di Azure aprire il riquadro Tutte le risorse e selezionare il processo di Analisi di flusso ASATutorial.
Nella sezione Topologia processo del processo di Analisi di flusso selezionare l'opzione Output.
Selezionare + Aggiungi output>di Power BI.
Compilare il modulo di output con i dettagli seguenti:
Impostazione Valore consigliato Alias di output MyPBIoutput Area di lavoro del gruppo Area di lavoro personale Nome del set di dati ASAdataset Nome tabella ASATable Modalità di autenticazione Token utente Selezionare Autorizza e seguire le istruzioni per autenticare Power BI.
Selezionare Salva nella parte inferiore della pagina di Power BI .
Questa esercitazione usa la modalità di autenticazione Token utente. Per usare l'identità gestita, vedere Usare l'identità gestita per autenticare il processo di Analisi di flusso di Azure per Power BI.
Creare query per trasformare i dati in tempo reale
A questo punto il processo di Analisi di flusso è configurato per la lettura di un flusso di dati in ingresso. Il passaggio successivo consiste nel creare una query che analizzi i dati in tempo reale. Le query usano un linguaggio simile a SQL che include alcune estensioni specifiche di Analisi di flusso.
In questa sezione dell'esercitazione si creeranno e testeranno varie query per apprendere alcuni modi in cui trasformare un flusso di input per l'analisi.
Le query qui create visualizzeranno semplicemente i dati trasformati. In una sezione successiva i dati trasformati verranno scritti in Power BI.
Per altre informazioni sul linguaggio, vedere le Informazioni di riferimento sul linguaggio di query di analisi dei flussi di Azure.
Test mediante una query pass-through
Per archiviare ogni evento, è possibile usare una query pass-through per leggere tutti i campi nel payload dell'evento.
Passare al processo di Analisi di flusso nel portale di Azure e selezionare Query in Topologia processo nel menu a sinistra.
Nella finestra di query immettere la query seguente:
SELECT * FROM CallStream
Nota
Come con SQL, le parole chiave non effettuano distinzione tra maiuscole e minuscole e gli spazi non sono rilevanti.
In questa query
CallStream
è l'alias specificato quando è stato creato l'input. In presenza di un alias diverso, usare questo nome.Selezionare Test query.
Il processo di Analisi di flusso esegue la query sui dati di esempio dall'input e visualizza l'output nella parte inferiore della finestra, I risultati indicano che Hub eventi e il processo di Analisi di flusso sono configurati correttamente.
Il numero esatto di record visualizzati dipende dal numero di record acquisiti nell'esempio.
Ridurre il numero di campi usando una proiezione di colonna
In molti casi, l'analisi non necessita di tutte le colonne dal flusso di input. È possibile usare una query per proiettare un set di campi restituiti ridotto rispetto alla query pass-through.
Eseguire la query seguente e osservare l'output.
SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum
INTO
[MyPBIoutput]
FROM
CallStream
Numero di chiamate in ingresso per area: finestra a cascata con aggregazione
Si supponga di voler contare il numero di chiamate in ingresso per ogni area. Nei dati di streaming, se si vogliono eseguire funzioni di aggregazione come il conteggio, è necessario segmentare il flusso in unità temporali, perché il flusso di dati stesso è effettivamente infinito. A tale scopo, usare una funzione finestra di Analisi di flusso. Sarà quindi possibile usare i dati all'interno di tale finestra come unità.
Per questa trasformazione, si vuole una sequenza di finestre temporali che non si sovrappongono, ovvero ogni finestra ha un set discreto di dati che è possibile raggruppare e aggregare. A questo tipo di finestra si fa riferimento con la locuzione finestra a cascata. All'interno della finestra a cascata è possibile ottenere un conteggio delle chiamate in ingresso raggruppate per SwitchNum
, che rappresenta il paese/la regione in cui la chiamata ha avuto origine.
Incollare la query seguente nell'editor di query:
SELECT System.Timestamp as WindowEnd, SwitchNum, COUNT(*) as CallCount FROM CallStream TIMESTAMP BY CallRecTime GROUP BY TUMBLINGWINDOW(s, 5), SwitchNum
Questa query usa la parola chiave
Timestamp By
nella clausolaFROM
per specificare il campo del timestamp nel flusso di input da usare per definire la finestra a cascata. In questo caso la finestra divide i dati in segmenti per il campoCallRecTime
in ogni record. Se non è specificato alcun campo, l'operazione di windowing usa l'ora in cui ogni evento arriva all'hub. Vedere "Ora di arrivo e ora applicazione" in Informazioni di riferimento sul linguaggio di query di Analisi di flusso.La proiezione include
System.Timestamp
, che restituisce un timestamp per la fine di ogni finestra.Per specificare che si intende usare una finestra a cascata, usare la funzione TUMBLINGWINDOW nella clausola
GROUP BY
. Specificare nella funzione un'unità di tempo (da un microsecondo a un giorno) e una dimensione della finestra (numero di unità). In questo esempio, la finestra a cascata è costituita da intervalli di 5 secondi, quindi si ottiene un conteggio per paese/area geografica per ogni 5 secondi di chiamate.Selezionare Test query. Si noti nei risultati che i timestamp in WindowEnd sono in incrementi di 5 secondi.
Rilevare una frode SIM mediante self-join
Per questo esempio, considerare come uso fraudolento le chiamate che provengono dallo stesso utente ma in posizioni diverse, a 5 secondi l'una dall'altra. Ad esempio, lo stesso utente non può eseguire legittimamente una chiamata dagli Stati Uniti e dall'Australia nello stesso momento.
Per verificare questi casi, è possibile usare un self-join dei dati di streaming per creare un join del flusso a se stesso in base al valore CallRecTime
. È quindi possibile cercare i record di chiamata in cui il valore (il CallingIMSI
numero di origine) è lo stesso, ma il SwitchNum
valore (paese/area geografica di origine) non è lo stesso.
Quando si usa un join con i dati di streaming, il join deve garantire alcuni limiti per la distanza di separazione delle righe corrispondenti nel tempo. Come indicato in precedenza, i dati di streaming sono effettivamente infiniti. I limiti di tempo per la relazione sono specificati all'interno della clausola ON
del join usando la funzione DATEDIFF
. In questo caso il join è basato su un intervallo di 5 secondi di dati di chiamata.
Incollare la query seguente nell'editor di query:
SELECT System.Timestamp AS WindowEnd, COUNT(*) AS FraudulentCalls INTO "MyPBIoutput" FROM "CallStream" CS1 TIMESTAMP BY CallRecTime JOIN "CallStream" CS2 TIMESTAMP BY CallRecTime ON CS1.CallingIMSI = CS2.CallingIMSI AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5 WHERE CS1.SwitchNum != CS2.SwitchNum GROUP BY TumblingWindow(Duration(second, 1))
Questa query è simile a un join SQL, ad eccezione della funzione
DATEDIFF
nel join. Si tratta di una versione diDATEDIFF
specifica di Analisi di flusso che deve apparire nella clausolaON...BETWEEN
. I parametri sono un'unità di tempo (secondi in questo esempio) e gli alias delle due origini per il join. Questa funzione è diversa dalla funzione SQLDATEDIFF
standard.La
WHERE
clausola include la condizione che contrassegna la chiamata fraudolenta: le opzioni di origine non sono uguali.Selezionare Test query. Esaminare l'output e quindi selezionare Salva query.
Avviare il processo e visualizzare l'output
Per avviare il processo, passare al riquadro Panoramica del processo e fare clic su Avvia.
Selezionare Ora come orario di avvio per l'output del processo e selezionare Avvia. È possibile visualizzare lo stato del processo nella barra di notifica.
Dopo il completamento del processo, passare a Power BI e accedere con l'account aziendale o dell'istituto di istruzione. Se la query del processo di Analisi di flusso restituisce risultati, il set di dati ASAdataset creato è presente nella scheda Set di dati.
Nell'area di lavoro di Power BI selezionare + Crea per creare un nuovo dashboard denominato Fraudulent Calls.
Nella parte superiore della finestra selezionare Modifica e Aggiungi riquadro.
Nella finestra Aggiungi riquadro selezionare Dati di streaming personalizzati e Avanti.
Scegliere ASAdataset in Set di dati e selezionare Avanti.
Selezionare Scheda nell'elenco a discesa Tipo di visualizzazione, aggiungere chiamate fraudolente a Campi e quindi selezionare Avanti.
Immettere un nome per il riquadro (ad esempio, Chiamate fraudolente) e quindi selezionare Applica per creare il riquadro.
Ripetere il passaggio 5 con le opzioni seguenti:
- Per Tipo di visualizzazione selezionare Grafico a linee.
- Aggiungere un asse e selezionare windowend.
- Aggiungere un valore e selezionare chiamate fraudolente.
- Per Intervallo di tempo da visualizzare selezionare gli ultimi 10 minuti.
Il dashboard dovrebbe essere simile all'esempio seguente dopo l'aggiunta di entrambi i riquadri. Si noti che, se l'applicazione mittente dell'hub eventi e l'applicazione di Analisi di flusso sono in esecuzione, il dashboard di Power BI viene aggiornato periodicamente all'arrivo di nuovi dati.
Incorporamento del dashboard di Power BI in un'applicazione Web
Per questa parte dell'esercitazione si userà un'applicazione Web di esempio ASP.NET creata dal team di Power BI per incorporare il dashboard. Per altre informazioni sull'incorporamento di dashboard, vedere l'articolo Incorporamento con Power BI.
Per configurare l'applicazione, passare al repository GitHub Power BI-Developer-Samples e seguire le istruzioni nella sezione User Owns Data (usare gli URL di reindirizzamento e home page nella sottosezione integrate-web-app ). Poiché si usa l'esempio dashboard, usare il codice di esempio integrate-web-app disponibile nel repository GitHub. Dopo aver eseguito l'applicazione nel browser, seguire questa procedura per incorporare il dashboard creato in precedenza nella pagina Web:
Selezionare Accedi a Power BI, per concedere all'applicazione l'accesso ai dashboard nell'account Power BI.
Fare clic sul pulsante Get Dashboards (Ottieni dashboard), per visualizzare i dashboard dell'account in una tabella. Individuare il nome del dashboard creato in precedenza, ovvero powerbi-embedded-dashboard e copiare il valore di EmbedUrl corrispondente.
Infine, incollare EmbedUrl nel campo di testo corrispondente e selezionare Embed Dashboard (Incorpora dashboard). È ora possibile visualizzare lo stesso dashboard incorporato in un'applicazione Web.
Passaggi successivi
In questa esercitazione è stato creato un processo di Analisi di flusso di esempio, sono stati analizzati i dati in ingresso e i risultati sono stati visualizzati in un dashboard di Power BI. Per altre informazioni sui processi di Analisi di flusso, continuare con l'esercitazione successiva: