Tutoriel : Analyser les données d’appels frauduleux avec Stream Analytics et visualiser les résultats dans un tableau de bord Power BITutorial: Analyze fraudulent call data with Stream Analytics and visualize results in Power BI dashboard

Ce tutoriel montre comment analyser les données d’appel téléphonique à l’aide d’Azure Stream Analytics.This tutorial shows you how to analyze phone call data using Azure Stream Analytics. Les données d’appel téléphonique, générées par une application cliente, contiennent des appels frauduleux qui sont filtrés par le travail Stream Analytics.The phone call data, generated by a client application, contains fraudulent calls, which are filtered by the Stream Analytics job. Vous pouvez appliquer les techniques décrites dans ce tutoriel pour d’autres types de détection de fraude, tels que la fraude à la carte de crédit ou l’usurpation d’identité.You can use the techniques from this tutorial for other types of fraud detection, such as credit card fraud or identity theft.

Dans ce tutoriel, vous allez découvrir comment :In this tutorial, you learn how to:

  • Générer des exemples de données d’appel téléphonique et les envoyer à Azure Event Hubs.Generate sample phone call data and send it to Azure Event Hubs.
  • Créez une tâche Stream Analytics.Create a Stream Analytics job.
  • Configurer les entrées et sorties de travail.Configure job input and output.
  • Définir une requête pour filtrer les appels frauduleux.Define queries to filter fraudulent calls.
  • Tester et démarrer le travail.Test and start the job.
  • Visualiser les résultats dans Power BI.Visualize results in Power BI.

PrérequisPrerequisites

Avant de commencer, vous devez avoir suivi les étapes ci-dessous :Before you start, make sure you have completed the following steps:

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit.If you don't have an Azure subscription, create a free account.
  • Téléchargez l’application de génération d’événements d’appel téléphonique TelcoGenerator.zip depuis le Centre de téléchargement Microsoft, ou obtenez le code source à partir de GitHub.Download the phone call event generator app TelcoGenerator.zip from the Microsoft Download Center or get the source code from GitHub.
  • Il vous faut un compte Power BI.You will need Power BI account.

Connexion à AzureSign in to Azure

Connectez-vous au portail Azure.Sign in to the Azure portal.

Création d'un hub d'événements AzureCreate an Azure Event Hub

Avant que Stream Analytics puisse analyser le flux de données d’appels frauduleux, les données doivent être envoyées à Azure.Before Stream Analytics can analyze the fraudulent calls data stream, the data needs to be sent to Azure. Dans ce didacticiel, vous envoyez des données à Azure à l’aide d’Azure Event Hubs.In this tutorial, you will send data to Azure by using Azure Event Hubs.

Suivez les étapes ci-dessous pour créer un Event Hub et envoyer les données d’appel à celui-ci :Use the following steps to create an Event Hub and send call data to that Event Hub:

  1. Connectez-vous au portail Azure.Sign in to the Azure portal.

  2. Sélectionnez Créer une ressource > Internet des objets > Event Hubs.Select Create a resource > Internet of Things > Event Hubs.

    Créer un hub Azure Event Hub dans le portail

  3. Remplissez le volet Créer un espace de noms avec les valeurs suivantes :Fill out the Create Namespace pane with the following values:

    ParamètreSetting Valeur suggéréeSuggested value DescriptionDescription
    NomName asaTutorialEventHubasaTutorialEventHub Nom unique pour identifier l’espace de noms du hub d’événements.A unique name to identify the event hub namespace.
    AbonnementSubscription <Your subscription> Sélectionnez un abonnement Azure dans lequel vous souhaitez créer le hub d’événements.Select an Azure subscription where you want to create the event hub.
    Resource groupResource group MyASADemoRGMyASADemoRG Sélectionnez Créer et saisissez le nom du nouveau groupe de ressources pour votre compte.Select Create New and enter a new resource-group name for your account.
    EmplacementLocation USA Ouest 2West US2 Emplacement où l’espace de noms du hub d’événements peut être déployé.Location where the event hub namespace can be deployed.
  4. Utilisez les options par défaut pour les autres paramètres, puis sélectionnez Vérifier + créer.Use default options on the remaining settings and select Review + create. Ensuite, sélectionnez Créer pour démarrer le déploiement.Then select Create to start the deployment.

    Créer un espace de noms Event Hub dans le Portail Azure

  5. Lorsque le déploiement de l’espace de noms est terminé, accédez à Toutes les ressources, puis recherchez asaTutorialEventHub dans la liste des ressources Azure.When the namespace has finished deploying, go to All resources and find asaTutorialEventHub in the list of Azure resources. Sélectionnez asaTutorialEventHub pour l’ouvrir.Select asaTutorialEventHub to open it.

  6. Ensuite, sélectionnez + Hub d’événements et entrez un Nom pour le hub d’événements.Next select +Event Hub and enter a Name for the Event Hub. Affectez la valeur 2 au Nombre de partitions.Set the Partition Count to 2. Utilisez les options par défaut pour les autres paramètres, puis sélectionnez Créer.Use the default options in the remaining settings and select Create. Ensuite, attendez que le déploiement se termine.Then wait for the deployment to succeed.

    Configuration d’Event Hub dans le Portail Azure

Accorder l’accès au concentrateur Event Hub et obtenir une chaîne de connexionGrant access to the event hub and get a connection string

Pour qu’une application puisse envoyer des données à Azure Event Hubs, le hub d’événements doit disposer d’une stratégie autorisant l’accès.Before an application can send data to Azure Event Hubs, the event hub must have a policy that allows access. La stratégie d’accès génère une chaîne de connexion qui inclut des informations d’autorisation.The access policy produces a connection string that includes authorization information.

  1. Sélectionnez le hub d’événements que vous avez créé à l’étape précédente : MyEventHub.Navigate to the event hub you created in the previous step, MyEventHub. Sélectionnez Stratégies d’accès partagé > Paramètres > + Ajouter.Select Shared access policies under Settings, and then select + Add.

  2. Nommez la stratégie MyPolicy, et vérifiez que la case Gérer est cochée.Name the policy MyPolicy and ensure Manage is checked. Sélectionnez ensuite Créer.Then select Create.

    Créer une stratégie d’accès partagé de hub d’événements

  3. Une fois la stratégie créée, sélectionnez son nom pour l’ouvrir.Once the policy is created, select the policy name to open the policy. Recherchez Chaîne de connexion - Clé primaire.Find the Connection string–primary key. Sélectionnez le bouton de copie situé à côté de la chaîne de connexion.Select the copy button next to the connection string.

    Enregistrer la chaîne de connexion de stratégie accès partagé

  4. Collez la chaîne de connexion dans un éditeur de texte.Paste the connection string into a text editor. Vous avez besoin de cette chaîne de connexion dans la section suivante.You need this connection string in the next section.

    La chaîne de connexion ressemble à ceci :The connection string looks as follows:

    Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>;EntityPath=<Your event hub name>

    Notez que la chaîne de connexion contient plusieurs paires clé-valeur, séparées par des points-virgules : Point de terminaison, SharedAccessKeyName, SharedAccessKey et EntityPath.Notice that the connection string contains multiple key-value pairs separated with semicolons: Endpoint, SharedAccessKeyName, SharedAccessKey, and EntityPath.

Démarrer l’application de génération d’événementsStart the event generator application

Avant de démarrer l’application TelcoGenerator, vous devez la configurer pour envoyer des données aux Azure Event Hubs que vous avez créés précédemment.Before you start the TelcoGenerator app, you should configure it to send data to the Azure Event Hubs you created earlier.

  1. Extrayez le contenu du fichier TelcoGenerator.zip.Extract the contents of TelcoGenerator.zip file.

  2. Ouvrez le fichier TelcoGenerator\TelcoGenerator\telcodatagen.exe.config dans l’éditeur de texte de votre choix (comme il existe plusieurs fichiers .config, veillez à ouvrir celui qui convient).Open the TelcoGenerator\TelcoGenerator\telcodatagen.exe.config file in a text editor of your choice There is more than one .config file, so be sure that you open the correct one.

  3. Mettez à jour l’élément <appSettings> dans le fichier de configuration avec les détails suivants :Update the <appSettings> element in the config file with the following details:

    • Définissez la valeur de la clé EventHubName sur la valeur de la paire EntityPath dans la chaîne de connexion.Set the value of the EventHubName key to the value of the EntityPath in the connection string.
    • Définissez la valeur de la clé Microsoft.ServiceBus.ConnectionString sur la chaîne de connexion sans la valeur EntityPath.Set the value of the Microsoft.ServiceBus.ConnectionString key to the connection string without the EntityPath value. N’oubliez pas de supprimer le point-virgule qui précède la valeur EntityPath.Don't forget to remove the semicolon that precedes the EntityPath value.
  4. Enregistrez le fichier .Save the file.

  5. Ensuite, ouvrez une fenêtre de commandes et accédez au dossier dans lequel l’application TelcoGenerator est décompressée.Next open a command window and change to the folder where you unzipped the TelcoGenerator application. Puis, entrez la commande suivante :Then enter the following command:

    .\telcodatagen.exe 1000 0.2 2
    

    Cette commande utilise les paramètres suivants :This command takes the following parameters:

    • Nombre d’enregistrements de données d’appel par heure.Number of call data records per hour.
    • Pourcentage de probabilité de fraude, qui correspond à la fréquence à laquelle l’application doit simuler un appel frauduleux.Percentage of fraud probability, which is how often the app should simulate a fraudulent call. La valeur 0,2 signifie qu’environ 20 % des enregistrements d’appels semblent frauduleux.The value 0.2 means that about 20% of the call records will look fraudulent.
    • Durée en heures, qui correspond au nombre d’heures pendant lesquelles l’application doit s’exécuter.Duration in hours, which is the number of hours that the app should run. Vous pouvez également arrêter l’application à tout moment en terminant le processus (Ctrl+C) sur la ligne de commande.You can also stop the app at any time by ending the process (Ctrl+C) at the command line.

    Après quelques secondes, l’application commence à afficher des enregistrements des appels téléphoniques à l’écran à mesure qu’elle les envoie au concentrateur Event Hub.After a few seconds, the app starts displaying phone call records on the screen as it sends them to the event hub. Les données d’appel téléphonique contiennent les champs suivants :The phone call data contains the following fields:

    EnregistrementRecord DéfinitionDefinition
    CallrecTimeCallrecTime Horodatage de l’heure de début d’appel.The timestamp for the call start time.
    SwitchNumSwitchNum Commutateur téléphonique utilisé pour connecter l’appel.The telephone switch used to connect the call. Pour cet exemple, les commutateurs sont des chaînes qui représentent le pays/la région d’origine (États-Unis, Chine, Royaume-Uni, Allemagne ou Australie).For this example, the switches are strings that represent the country/region of origin (US, China, UK, Germany, or Australia).
    CallingNumCallingNum Numéro de téléphone de l’appelant.The phone number of the caller.
    CallingIMSICallingIMSI Identité de l’abonné mobile international (IMSI).The International Mobile Subscriber Identity (IMSI). Il s’agit d’un identificateur unique de l’appelant.It's a unique identifier of the caller.
    CalledNumCalledNum Numéro de téléphone du destinataire de l’appel.The phone number of the call recipient.
    CalledIMSICalledIMSI Identité de l'abonné mobile international (IMSI).International Mobile Subscriber Identity (IMSI). Il s’agit d’un identificateur unique du destinataire de l’appel.It's a unique identifier of the call recipient.

Création d’un travail Stream AnalyticsCreate a Stream Analytics job

Maintenant que vous disposez d’un flux d’événements d’appel, vous pouvez créer un travail Stream Analytics qui lit des données à partir du hub d’événements.Now that you have a stream of call events, you can create a Stream Analytics job that reads data from the event hub.

  1. Pour créer un travail Stream Analytics, accédez au portail Azure.To create a Stream Analytics job, navigate to the Azure portal.

  2. Sélectionnez Créer une ressource, puis recherchez Tâche Stream Analytics.Select Create a resource and search for Stream Analytics job. Sélectionnez la vignette Tâche Stream Analytics, puis sélectionnez *Créer**.Select the Stream Analytics job tile and select *Create**.

  3. Remplissez le formulaire Nouvelle tâche Stream Analytics avec les valeurs suivantes :Fill out the New Stream Analytics job form with the following values:

    ParamètreSetting Valeur suggéréeSuggested value DescriptionDescription
    Nom du travailJob name ASATutorialASATutorial Nom unique pour identifier l’espace de noms du hub d’événements.A unique name to identify the event hub namespace.
    AbonnementSubscription <Your subscription> Sélectionnez un abonnement Azure dans lequel vous souhaitez créer le travail.Select an Azure subscription where you want to create the job.
    Resource groupResource group MyASADemoRGMyASADemoRG Sélectionnez Use existing (Utiliser existant) et saisissez le nom du nouveau groupe de ressources pour votre compte.Select Use existing and enter a new resource-group name for your account.
    EmplacementLocation USA Ouest 2West US2 Emplacement où le travail peut être déployé.Location where the job can be deployed. Il est recommandé de placer le travail et le hub d’événements dans la même région afin d’optimiser les performances. Ce faisant, vous ne payez pas pour transférer des données entre les régions.It's recommended to place the job and the event hub in the same region for best performance and so that you don't pay to transfer data between regions.
    Environnement d’hébergementHosting environment CloudCloud Les travaux Stream Analytics peuvent être déployés dans le cloud ou sur des appareils Edge.Stream Analytics jobs can be deployed to cloud or edge. L’option Cloud vous permet de déployer votre travail dans le cloud Azure, et l’option Edge sur un appareil IoT Edge.Cloud allows you to deploy to Azure Cloud, and Edge allows you to deploy to an IoT Edge device.
    Unités de diffusion en continuStreaming units 11 Les unités de streaming sont les ressources de calcul requises pour exécuter un travail.Streaming units represent the computing resources that are required to execute a job. Par défaut, cette valeur est définie sur 1.By default, this value is set to 1. Pour en savoir plus sur la mise à l’échelle des unités de streaming, consultez Understanding and adjusting streaming units (Présentation et réglage des unités de streaming).To learn about scaling streaming units, see understanding and adjusting streaming units article.
  4. Utilisez les options par défaut pour les autres paramètres, sélectionnez Créer et attendez que le déploiement réussisse.Use default options on the remaining settings, select Create, and wait for the deployment to succeed.

    Créer un travail Azure Stream Analytics

Configurer les entrées du travailConfigure job input

L’étape suivante consiste à définir une source d’entrée pour le travail, afin de pouvoir lire les données à l’aide de l’Event Hub que vous avez créé dans la section précédente.The next step is to define an input source for the job to read data using the event hub you created in the previous section.

  1. Dans le portail Azure, ouvrez la page Toutes les ressources, puis recherchez la tâche Stream Analytics ASATutorial.From the Azure portal, open the All resources page, and find the ASATutorial Stream Analytics job.

  2. Dans la section Topologie de la tâche de la tâche Stream Analytics, sélectionnez Entrées.In the Job Topology section of the Stream Analytics job, select Inputs.

  3. Cliquez sur + Ajouter une entrée de flux, puis sur Event Hub.Select + Add stream input and Event hub. Remplissez le formulaire d’entrée avec les valeurs suivantes :Fill out the input form with the following values:

    ParamètreSetting Valeur suggéréeSuggested value DescriptionDescription
    Alias d’entréeInput alias CallStreamCallStream Fournissez un nom convivial pour identifier votre entrée.Provide a friendly name to identify your input. L’alias d’entrée peut contenir uniquement des caractères alphanumériques, des traits d’union et des traits de soulignement, et doit avoir entre 3 et 63 caractères.Input alias can contain alphanumeric characters, hyphens, and underscores only and must be 3-63 characters long.
    AbonnementSubscription <Your subscription> Sélectionnez l’abonnement Azure dans lequel vous avez créé le hub d’événements.Select the Azure subscription where you created the event hub. Le hub d’événements peut se trouver dans le même abonnement ou dans un autre abonnement que le travail Stream Analytics.The event hub can be in same or a different subscription as the Stream Analytics job.
    Espace de noms du hub d’événementsEvent hub namespace asaTutorialEventHubasaTutorialEventHub Sélectionnez l’espace de noms du hub d’événements que vous avez créé dans la section précédente.Select the event hub namespace you created in the previous section. Tous les espaces de noms du hub d’événements disponibles dans votre abonnement actuel sont répertoriés dans la liste déroulante.All the event hub namespaces available in your current subscription are listed in the dropdown.
    Nom du hub d’événementsEvent Hub name MyEventHubMyEventHub Sélectionnez le hub d’événements que vous avez créé dans la section précédente.Select the event hub you created in the previous section. Tous les hubs d’événements disponibles dans votre abonnement actuel sont répertoriés dans la liste déroulante.All the event hubs available in your current subscription are listed in the dropdown.
    Nom de la stratégie du hub d’événementsEvent Hub policy name MyPolicyMyPolicy Sélectionnez la stratégie d’accès partagé du hub d’événements que vous avez créée dans la section précédente.Select the event hub shared access policy you created in the previous section. Toutes les stratégies de hub d’événements disponibles dans votre abonnement actuel sont répertoriées dans la liste déroulante.All the event hubs policies available in your current subscription are listed in the dropdown.
  4. Utilisez les options par défaut pour les autres paramètres, puis sélectionnez Créer.Use default options on the remaining settings and select Save.

    Configurer une entrée Azure Stream Analytics

Configurer la sortie du travailConfigure job output

La dernière étape consiste à définir un récepteur de sortie dans lequel la tâche peut écrire les données transformées.The last step is to define an output sink where the job can write the transformed data. Dans ce didacticiel, vous générez et visualisez des données avec Power BI.In this tutorial, you output and visualize data with Power BI.

  1. Dans le portail Azure, ouvrez Toutes les ressources, puis sélectionnez la tâche Stream Analytics ASATutorial.From the Azure portal, open All resources, and select the ASATutorial Stream Analytics job.

  2. Dans la section Topologie de la tâche de la tâche Stream Analytics, sélectionnez l’option Sorties.In the Job Topology section of the Stream Analytics job, select the Outputs option.

  3. Sélectionnez + Ajouter > Power BI.Select + Add > Power BI. Ensuite, sélectionnez Autoriser et suivez les invites pour authentifier Power BI.Then, select Authorize and follow the prompts to authenticate Power BI.

Bouton Autoriser pour Power BI

  1. Remplissez le formulaire de sortie avec les valeurs suivantes, puis sélectionnez Enregistrer :Fill the output form with the following details and select Save:

    ParamètreSetting Valeur suggéréeSuggested value
    Alias de sortieOutput alias MyPBIoutputMyPBIoutput
    Espace de travail de groupeGroup workspace Mon espace de travailMy workspace
    Nom du jeu de donnéesDataset name ASAdatasetASAdataset
    Nom de la tableTable name ASATableASATable
    Mode d'authentificationAuthentication mode Jeton utilisateurUser token

    Configurer une sortie Stream Analytics

    Ce tutoriel utilise le mode d’authentification par jeton utilisateur.This tutorial uses the User token authentication mode. Pour utiliser l’identité managée, consultez Utiliser une identité managée pour authentifier votre tâche Azure Stream Analytics dans Power BI.To use Managed Identity, see Use Managed Identity to authenticate your Azure Stream Analytics job to Power BI.

Créer des requêtes pour transformer des données en temps réelCreate queries to transform real-time data

À ce stade, vous disposez d’un travail Stream Analytics configuré pour lire un flux de données entrantes.At this point, you have a Stream Analytics job set up to read an incoming data stream. L’étape suivante consiste à créer une requête qui analysera les données en temps réel.The next step is to create a query that analyzes the data in real time. Les requêtes utilisent un langage de type SQL dont certaines extensions sont propres à Stream Analytics.The queries use a SQL-like language that has some extensions specific to Stream Analytics.

Dans cette section du didacticiel, vous allez créer et tester plusieurs requêtes pour découvrir quelques méthodes via lesquelles vous pouvez transformer un flux d’entrée pour l’analyse.In this section of the tutorial, you create and test several queries to learn a few ways in which you can transform an input stream for analysis.

Les requêtes que vous créez ici affichent uniquement les données transformées à l’écran.The queries you create here will just display the transformed data to the screen. Dans une section ultérieure, vous écrirez les données transformées dans Power BI.In a later section, you'll write the transformed data to Power BI.

Pour plus d’informations sur ce langage, consultez la page Références sur le langage des requêtes d’Azure Stream Analytics.To learn more about the language, see the Azure Stream Analytics Query Language Reference.

Procéder à un test à l’aide d’une requête directeTest using a pass-through query

Si vous voulez archiver tous les événements, vous pouvez utiliser une requête directe pour lire tous les champs dans la charge utile de l’événement.If you want to archive every event, you can use a pass-through query to read all the fields in the payload of the event.

  1. Accédez à votre travail Stream Analytics dans le portail Azure, puis sélectionnez Requête sous Topologie de la tâche.Navigate to your Stream Analytics job in the Azure portal and select Query under Job topology.

  2. Dans la fenêtre de requête, entrez la requête suivante :In the query window, enter this query:

    SELECT 
        *
    FROM 
        CallStream
    

    Notes

    Comme dans SQL, les mots clés ne respectent pas la casse, et les espaces blancs ne sont pas significatifs.As with SQL, keywords are not case-sensitive, and whitespace is not significant.

    Dans cette requête, CallStream est l’alias que vous avez spécifié lorsque vous avez créé l’entrée.In this query, CallStream is the alias that you specified when you created the input. Si vous en avez utilisé un autre, utilisez plutôt ce nom.If you used a different alias, use that name instead.

  3. Sélectionnez Tester la requête.Select Test query.

    Le travail Stream Analytics exécute la requête par rapport à l’exemple de données fourni en entrée, et affiche la sortie au bas de la fenêtre.The Stream Analytics job runs the query against the sample data from the input and displays the output at the bottom of the window. Les résultats indiquent que le concentrateur Event Hub et le travail Stream Analytics sont correctement configurés.The results indicate that the Event Hub and the Streaming Analytics job are configured correctly.

    Exemple de sortie d’une requête de test

    Le nombre exact d’enregistrements que vous pouvez observer dépend du nombre d’enregistrements qui ont été capturés dans l’échantillon.The exact number of records you see will depend on how many records were captured in the sample.

Réduire le nombre de champs à l’aide d’une projection de colonneReduce the number of fields using a column projection

Dans de nombreux cas, il n’est pas nécessaire d’insérer toutes les colonnes du flux d’entrée pour l’analyse.In many cases, your analysis doesn't need all the columns from the input stream. Vous pouvez utiliser une requête pour projeter moins de champs retournés que dans la requête directe.You can use a query to project a smaller set of returned fields than in the pass-through query.

Exécutez la requête suivante et observez la sortie.Run the following query and notice the output.

SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNumCalledNum 
FROM 
    CallStream

Nombre d’appels entrants par région : Fenêtre bascule avec agrégationCount incoming calls by region: Tumbling window with aggregation

Supposons que vous souhaitiez compter le nombre d’appels entrants par région.Suppose you want to count the number of incoming calls per region. Dans les données de flux, lorsque vous souhaitez effectuer des fonctions d’agrégation telles que le comptage, vous devez segmenter le flux en unités temporelles, puisque le flux de données proprement dit est en réalité un nombre infini.In streaming data, when you want to perform aggregate functions like counting, you need to segment the stream into temporal units, since the data stream itself is effectively endless. Pour ce faire, utilisez une fonction de fenêtre Stream Analytics.You do this using a Streaming Analytics window function. Vous pouvez alors utiliser les données contenues dans cette fenêtre comme unité.You can then work with the data inside that window as a unit.

Pour cette transformation, vous souhaitez une séquence de fenêtres temporelles ne se chevauchant pas ; chaque fenêtre contient un ensemble distinct de données que vous pouvez regrouper et agréger.For this transformation, you want a sequence of temporal windows that don't overlap—each window will have a discrete set of data that you can group and aggregate. Ce type de fenêtre est appelé fenêtre bascule.This type of window is referred to as a Tumbling window. Dans la fenêtre bascule, vous pouvez obtenir le nombre des appels entrants, regroupés par SwitchNum, qui représente le pays/région d’origine de l’appel.Within the Tumbling window, you can get a count of the incoming calls grouped by SwitchNum, which represents the country/region where the call originated.

  1. Collez la requête ci-après dans l’éditeur de requête :Paste the following query in the query editor:

    SELECT 
        System.Timestamp as WindowEnd, SwitchNum, COUNT(*) as CallCount 
    FROM
        CallStream TIMESTAMP BY CallRecTime 
    GROUP BY TUMBLINGWINDOW(s, 5), SwitchNum
    

    Cette requête utilise le mot-clé Timestamp By dans la clause FROM pour spécifier le champ d’horodatage à utiliser dans le flux d’entrée pour définir la fenêtre bascule.This query uses the Timestamp By keyword in the FROM clause to specify which timestamp field in the input stream to use to define the Tumbling window. Dans ce cas, la fenêtre divise les données en segments en fonction du champ CallRecTime dans chaque enregistrement.In this case, the window divides the data into segments by the CallRecTime field in each record. (Si aucun champ n’est spécifié, l’opération de fenêtrage utilise l’heure d’arrivée de chaque événement dans le concentrateur Event Hub.)(If no field is specified, the windowing operation uses the time that each event arrives at the event hub. Voir « Heure d’arrivée par rapport à l’heure de l’application » dans Informations de référence sur le langage de requête Stream Analytics.See "Arrival Time Vs Application Time" in Stream Analytics Query Language Reference.

    La projection inclut System.Timestamp, qui retourne un horodatage pour la fin de chaque fenêtre.The projection includes System.Timestamp, which returns a timestamp for the end of each window.

    Pour spécifier que vous voulez utiliser une fenêtre bascule, vous utilisez la fonction TUMBLINGWINDOW dans la clause GROUP BY.To specify that you want to use a Tumbling window, you use the TUMBLINGWINDOW function in the GROUP BY clause. Dans la fonction, indiquez une unité de temps (d’une microseconde à un jour) et une taille de fenêtre (nombre d’unités).In the function, you specify a time unit (anywhere from a microsecond to a day) and a window size (how many units). Dans cet exemple, comme la fenêtre bascule est constituée d’intervalles de 5 secondes, vous obtenez un nombre d’appels par pays/région pour chaque période de 5 secondes.In this example, the Tumbling window consists of 5-second intervals, so you will get a count by country/region for every 5 seconds' worth of calls.

  2. Sélectionnez Tester la requête.Select Test query. Dans les résultats, notez que les horodatages indiqués sous WindowEnd sont exprimés par incréments de 5 secondes.In the results, notice that the timestamps under WindowEnd are in 5-second increments.

Détecter une fraude à la carte SIM à l’aide d’une jointure réflexiveDetect SIM fraud using a self-join

Pour cet exemple, envisagez l’utilisation frauduleuse suivante : appels provenant d’un même utilisateur, mais à différents lieux, espacés de 5 secondes à chaque fois.For this example, consider fraudulent usage to be calls that originate from the same user but in different locations within 5 seconds of one another. Par exemple, un même utilisateur ne peut pas légitimement passer simultanément un appel depuis les États-Unis et l’Australie.For example, the same user can't legitimately make a call from the US and Australia at the same time.

Pour ces cas, vous pouvez utiliser une jointure réflexive des données de flux pour joindre le flux à lui-même en fonction de la valeur CallRecTime.To check for these cases, you can use a self-join of the streaming data to join the stream to itself based on the CallRecTime value. Vous pouvez ensuite rechercher les enregistrements d’appels où la valeur de CallingIMSI (le numéro d’origine) est identique, mais où la valeur de SwitchNum (pays/région d’origine) n’est pas la même.You can then look for call records where the CallingIMSI value (the originating number) is the same, but the SwitchNum value (country/region of origin) is not the same.

Si vous utilisez une jointure avec des données de flux, la jointure doit indiquer certaines limites relatives à l’intervalle pouvant séparer des lignes correspondantes dans le temps.When you use a join with streaming data, the join must provide some limits on how far the matching rows can be separated in time. Comme indiqué précédemment, les données de flux sont effectivement sans fin.As noted earlier, the streaming data is effectively endless. Les limites temporelles de la relation sont spécifiées dans la clause ON de la jointure, à l’aide de la fonction DATEDIFF.The time bounds for the relationship are specified inside the ON clause of the join, using the DATEDIFF function. Dans ce cas, la jointure est basée sur un intervalle de 5 secondes des données d’appels.In this case, the join is based on a 5-second interval of call data.

  1. Collez la requête ci-après dans l’éditeur de requête :Paste the following query in the query editor:

    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))
    

    Cette requête est semblable aux jointures SQL excepté pour la fonction DATEDIFF de la jointure.This query is like any SQL join except for the DATEDIFF function in the join. Cette version de DATEDIFF est propre à Stream Analytics et doit apparaître dans la clause ON...BETWEEN.This version of DATEDIFF is specific to Streaming Analytics, and it must appear in the ON...BETWEEN clause. Les paramètres sont une unité de temps (des secondes dans cet exemple) et les alias des deux sources pour la jointure.The parameters are a time unit (seconds in this example) and the aliases of the two sources for the join. Cela diffère de la fonction DATEDIFF SQL standard.This is different from the standard SQL DATEDIFF function.

    La clause WHERE inclut la condition qui marque l’appel frauduleux : les commutateurs d’origine ne sont pas identiques.The WHERE clause includes the condition that flags the fraudulent call: the originating switches are not the same.

  2. Sélectionnez Tester la requête.Select Test query. Passez en revue la sortie, puis sélectionnez Enregistrer la requête.Review the output, and then select Save query.

Démarrer le travail et visualiser la sortieStart the job and visualize output

  1. Pour démarrer la tâche, accédez à la tâche Vue d’ensemble, puis sélectionnez Démarrer.To start the job, navigate to the job Overview and select Start.

  2. Sélectionnez Maintenant pour l’heure de début de sortie du travail, puis sélectionnez Démarrer.Select Now for job output start time and select Start. Vous pouvez voir l’état du travail dans la barre de notification.You can view the job status in the notification bar.

  3. Lorsque le travail est terminé, accédez à Power BI, puis connectez-vous avec votre compte professionnel ou scolaire.Once the job succeeds, navigate to Power BI and sign in with your work or school account. Si la requête du travail Stream Analytics génère des résultats, le jeu de données ASAdataset que vous avez créé doit s’afficher dans l’onglet Jeux de données.If the Stream Analytics job query is outputting results, the ASAdataset dataset you created exists under the Datasets tab.

  4. À partir de votre espace de travail Power BI, sélectionnez + Créer pour créer un nouveau tableau de bord intitulé Appels frauduleux.From your Power BI workspace, select + Create to create a new dashboard named Fraudulent Calls.

  5. En haut de la fenêtre, sélectionnez Modifier puis Ajouter une vignette.At the top of the window, select Edit and Add tile. Ensuite, sélectionnez Données de streaming personnalisées, puis Suivant.Then select Custom Streaming Data and Next. Choisissez ASAdataset dans Vos jeux de données.Choose the ASAdataset under Your Datasets. Sélectionnez Carte dans la liste déroulante Type de visualisation, puis ajoutez fraudulentcalls à Champs.Select Card from the Visualization type dropdown, and add fraudulent calls to Fields. Sélectionnez Suivant afin de saisir un nom pour la vignette, puis Appliquer pour créer la vignette.Select Next to enter a name for the tile, and then select Apply to create the tile.

    Créer des vignettes de tableau de bord Power BI

  6. Effectuez à nouveau l’étape 5, avec les options suivantes :Follow the step 5 again with the following options:

    • Lorsque vous accédez à Type de visualisation, sélectionnez Graphique en courbes.When you get to Visualization Type, select Line chart.
    • Ajoutez un axe, puis sélectionnez windowend.Add an axis and select windowend.
    • Ajoutez une valeur, puis sélectionnez fraudulentcalls.Add a value and select fraudulentcalls.
    • Pour Fenêtre de temps à afficher, sélectionnez les 10 dernières minutes.For Time window to display, select the last 10 minutes.
  7. Une fois que les deux vignettes ont été ajoutées, votre tableau de bord devrait ressembler à l’exemple ci-dessous.Your dashboard should look like the example below once both tiles are added. Si l’application émettrice Event Hub et l’application Stream Analytics sont en cours d’exécution, vous verrez que votre tableau de bord Power BI est régulièrement mis à jour avec l’arrivée de nouvelles données.Notice that, if your event hub sender application and Streaming Analytics application are running, your Power BI dashboard periodically updates as new data arrives.

    Afficher les résultats dans le tableau de bord Power BI

Incorporer votre tableau de bord Power BI dans une application webEmbedding your Power BI Dashboard in a Web Application

Pour cette partie du tutoriel, vous allez utiliser un exemple d’application web ASP.NET créé par l’équipe Power BI pour intégrer votre tableau de bord.For this part of the tutorial, you'll use a sample ASP.NET web application created by the Power BI team to embed your dashboard. Pour plus d’informations sur l’intégration de tableaux de bord, consultez l’article Power BI en mode intégration.For more information about embedding dashboards, see embedding with Power BI article.

Pour configurer l’application, accédez au dépôt GitHub PowerBI-Developer-Samples et suivez les instructions situées sous la section User Owns Data (L’utilisateur est propriétaire des données) (utilisez les URL de redirection et de page d’accueil de la sous-section integrate-web-app).To set up the application, go to the PowerBI-Developer-Samples GitHub repository and follow the instructions under the User Owns Data section (use the redirect and homepage URLs under the integrate-web-app subsection). Étant donné que nous utilisons l’exemple Dashboard (tableau de bord), utilisez l’exemple de code integrate-web-app qui se trouve dans le dépôt GitHub.Since we are using the Dashboard example, use the integrate-web-app sample code located in the GitHub repository. Lorsque l’application est en cours d’exécution dans votre navigateur, procédez comme suit pour intégrer le tableau de bord que vous avez créé précédemment dans la page web :Once you've got the application running in your browser, follow these steps to embed the dashboard you created earlier into the web page:

  1. Sélectionnez Se connecter à Power BI, pour accorder à l’application un accès aux tableaux de bord dans votre compte Power BI.Select Sign in to Power BI, which grants the application access to the dashboards in your Power BI account.

  2. Sélectionnez le bouton Get Dashboards (Obtenir les tableaux de bord) qui affiche dans un tableau les tableaux de bord de votre compte.Select the Get Dashboards button, which displays your account's Dashboards in a table. Recherchez le nom du tableau de bord vous avez créé précédemment (powerbi-embedded-dashboard) et copiez la EmbedUrl correspondante.Find the name of the dashboard you created earlier, powerbi-embedded-dashboard, and copy the corresponding EmbedUrl.

  3. Pour finir, collez la EmbedUrl dans le champ de texte correspondant et sélectionnez Embed Dashboard (Intégrer le tableau de bord).Finally, paste the EmbedUrl into the corresponding text field and select Embed Dashboard. Vous pouvez maintenant voir ce tableau de bord intégré dans une application web.You can now view the same dashboard embedded within a web application.

Étapes suivantesNext steps

Dans ce didacticiel, vous avez créé un travail Stream Analytics simple, analysé les données entrantes et affiché les résultats dans un tableau de bord Power BI.In this tutorial, you created a simple Stream Analytics job, analyzed the incoming data, and presented results in a Power BI dashboard. Pour en savoir plus sur les travaux Stream Analytics, passez au didacticiel suivant :To learn more about Stream Analytics jobs, continue to the next tutorial: