Erste Schritte mit Azure Stream Analytics: Betrugsermittlung in EchtzeitGet started using Azure Stream Analytics: Real-time fraud detection

Dieses Tutorial enthält detaillierte Abbildungen zur Verwendung von Azure Stream Analytics.This tutorial provides an end-to-end illustration of how to use Azure Stream Analytics. Folgendes wird vermittelt:You learn how to:

  • Weiterleiten von Datenstromereignissen an eine Instanz von Azure Event Hubs.Bring streaming events into an instance of Azure Event Hubs. In diesem Tutorial verwenden Sie eine App, die einen Datenstrom von Mobiltelefon-Metadatensätzen simuliert.In this tutorial, you'll use an app that simulates a stream of mobile-phone metadata records.

  • Schreiben von SQL-ähnlichen Stream Analytics-Abfragen zum Transformieren von Daten, Aggregieren von Informationen oder Suchen nach Mustern.Write SQL-like Stream Analytics queries to transform data, aggregating information or looking for patterns. Sie erfahren, wie Sie über eine Abfrage den eingehenden Datenstrom überprüfen und nach Anrufen mit Verdacht auf betrügerischem Beweggrund suchen.You will see how to use a query to examine the incoming stream and look for calls that might be fraudulent.

  • Senden der Ergebnisse an eine Ausgabesenke (Speicher), die Sie zur Gewinnung weiterer Erkenntnisse analysieren können.Send the results to an output sink (storage) that you can analyze for additional insights. In diesem Fall senden Sie die Daten verdächtiger Anrufe an den Azure Blob Storage.In this case, you'll send the suspicious call data to Azure Blob storage.

In diesem Tutorial werden als Beispiel Telefonanrufdaten im Rahmen einer Betrugserkennung in Echtzeit verwendet.This tutorial uses the example of real-time fraud detection based on phone-call data. Die veranschaulichten Verfahren lassen sich jedoch auch bei anderen Arten von Betrugserkennung einsetzen, z.B. bei Kreditkartenbetrug oder Identitätsdiebstahl.The technique illustrated is also suited for other types of fraud detection, such as credit card fraud or identity theft.

Szenario: Telekommunikation und SIM-Betrugserkennung in EchtzeitScenario: Telecommunications and SIM fraud detection in real time

Ein Telekommunikationsunternehmen hat eine große Datenmenge durch eingehende Anrufe.A telecommunications company has a large volume of data for incoming calls. Das Unternehmen möchte betrügerische Anrufe in Echtzeit erkennen, um Kunden hierüber benachrichtigen zu können oder den Dienst einer bestimmten Nummer zu sperren.The company wants to detect fraudulent calls in real time so that they can notify customers or shut down service for a specific number. Eine Form von SIM-Kartenbetrug sind mehrmalige Anrufe von derselben Identität, die ungefähr zur selben Zeit, jedoch von geografisch unterschiedlichen Standorten aus getätigt werden.One type of SIM fraud involves multiple calls from the same identity around the same time but in geographically different locations. Zur Erkennung dieser Art von Betrug muss das Unternehmen die Datensätze eingehender Anrufe überprüfen und nach bestimmten Mustern suchen – in diesem Fall nach Anrufen, die ungefähr zur selben Zeit von verschiedenen Ländern/Regionen aus getätigt werden.To detect this type of fraud, the company needs to examine incoming phone records and look for specific patterns—in this case, for calls made around the same time in different countries/regions. Telefondatensätze, die in diese Kategorie fallen, werden zur anschließenden Analyse in den Speicher geschrieben.Any phone records that fall into this category are written to storage for subsequent analysis.

VoraussetzungenPrerequisites

In diesem Tutorial simulieren Sie Telefonanrufdaten mithilfe einer Client-App, die beispielhafte Telefonanrufmetadaten generiert.In this tutorial, you'll simulate phone-call data by using a client app that generates sample phone call metadata. Einige der Datensätze, die die App erzeugt, ähneln betrügerischen Anrufen.Some of the records that the app produces look like fraudulent calls.

Stellen Sie zunächst sicher, dass Sie über Folgendes verfügen:Before you start, make sure you have the following:

  • Ein Azure-Konto.An Azure account.

  • Die App zum Generieren von Anrufereignissen TelcoGenerator.zip, die im Microsoft Download Center heruntergeladen werden kann.The call-event generator app, TelcoGenerator.zip, which can be downloaded from the Microsoft Download Center. Entzippen Sie dieses Paket in einem Ordner auf Ihrem Computer.Unzip this package into a folder on your computer. Wenn Sie den Quellcode prüfen und die App in einem Debugger ausführen möchten, können Sie den Quellcode der App über GitHub beziehen.If you want to see the source code and run the app in a debugger, you can get the app source code from GitHub.

    Hinweis

    Windows blockiert möglicherweise die heruntergeladene ZIP-Datei.Windows might block the downloaded .zip file. Wenn Sie die Datei nicht entzippen können, klicken Sie mit der rechten Maustaste auf die Datei, und wählen Sie Eigenschaften.If you can't unzip it, right-click the file and select Properties. Wenn die Meldung „Die Datei stammt von einem anderen Computer. Der Zugriff wurde aus Sicherheitsgründen eventuell blockiert.“ angezeigt wird, wählen Sie die Option Nicht mehr blockieren, und klicken Sie dann auf Übernehmen.If you see the "This file came from another computer and might be blocked to help protect this computer" message, select the Unblock option and then click Apply.

Wenn Sie die Ergebnisse des Stream Analytics-Auftrags untersuchen möchten, benötigen Sie darüber hinaus ein Tool zum Anzeigen der Inhalte eines Azure Blob Storage-Containers.If you want to examine the results of the Streaming Analytics job, you also need a tool for viewing the contents of an Azure Blob Storage container. Wenn Sie Visual Studio einsetzen, können Sie Azure-Tools für Visual Studio oder Visual Studio Cloud-Explorer verwenden.If you use Visual Studio, you can use Azure Tools for Visual Studio or Visual Studio Cloud Explorer. Alternativ dazu können Sie eigenständige Tools wie Azure Storage-Explorer oder Cerulean installieren.Alternatively, you can install standalone tools like Azure Storage Explorer or Cerulean.

Erstellen von Azure Event Hubs zum Erfassen von EreignissenCreate an Azure Event Hubs to ingest events

Um einen Datenstrom zu analysieren, erfassen Sie diesen in Azure.To analyze a data stream, you ingest it into Azure. Eine typische Vorgehensweise zum Erfassen von Daten ist die Verwendung von Azure Event Hubs, mit denen Sie Millionen von Ereignissen pro Sekunde verarbeiten und die Ereignisinformationen dann verarbeiten und speichern können.A typical way to ingest data is to use Azure Event Hubs, which lets you ingest millions of events per second and then process and store the event information. Für dieses Tutorial erstellen Sie einen Event Hub und senden über die App zum Generieren von Anrufereignissen Anrufdaten an den betreffenden Event Hub.For this tutorial, you will create an event hub and then have the call-event generator app send call data to that event hub. Weitere Informationen zu Event Hubs finden Sie in der Dokumentation zu Azure Service Bus.For more about event hubs, see the Azure Service Bus documentation.

Hinweis

Eine ausführlichere Version dieses Verfahrens finden Sie unter Erstellen eines Event Hub-Namespace und eines Event Hubs mithilfe des Azure-Portals.For a more detailed version of this procedure, see Create an Event Hubs namespace and an event hub using the Azure portal.

Erstellen eines Namespace und eines Event HubsCreate a namespace and event hub

In diesem Verfahren erstellen Sie zuerst einen Event Hub-Namespace und fügen diesem Namespace dann einen Event Hub hinzu.In this procedure, you first create an event hub namespace, and then you add an event hub to that namespace. Event Hub-Namespaces werden verwendet, um verwandte Ereignisbusinstanzen logisch zu gruppieren.Event hub namespaces are used to logically group related event bus instances.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressource erstellen > Internet der Dinge > Event Hub.Log in to the Azure portal and click Create a resource > Internet of Things > Event Hub.

  2. Geben Sie im Bereich Namespace erstellen einen Namen für den Namespace ein (z.B. <yourname>-eh-ns-demo).In the Create namespace pane, enter a namespace name such as <yourname>-eh-ns-demo. Sie können einen beliebigen Namen für den Namespace verwenden. Der Name muss lediglich für eine URL gültig und innerhalb von Azure eindeutig sein.You can use any name for the namespace, but the name must be valid for a URL and it must be unique across Azure.

  3. Wählen Sie ein Abonnement aus, und erstellen oder wählen Sie eine Ressourcengruppe. Klicken Sie dann auf Erstellen.Select a subscription and create or choose a resource group, then click Create.

    Create event hub namespace in Azure portal
  4. Wenn die Bereitstellung des Namespace abgeschlossen ist, suchen Sie in Ihrer Liste der Azure-Ressourcen den Event Hub-Namespace.When the namespace has finished deploying, find the event hub namespace in your list of Azure resources.

  5. Klicken Sie auf den neuen Namespace, und wählen Sie im Bereich „Namespace“ Event Hub aus.Click the new namespace, and in the namespace pane, click Event Hub.

    Schaltfläche „Event Hub hinzufügen“ zum Erstellen eines neuen Event Hubs

  6. Vergeben Sie einen Namen für den neuen Event Hub asa-eh-frauddetection-demo.Name the new event hub asa-eh-frauddetection-demo. Sie können auch einen anderen Namen verwenden.You can use a different name. In diesem Fall sollten Sie sich den Namen notieren, da Sie ihn später noch benötigen.If you do, make a note of it, because you need the name later. Vorerst müssen Sie keine weiteren Optionen für den Event Hub festlegen.You don't need to set any other options for the event hub right now.

    Name event hub in Azure portal
  7. Klicken Sie auf Create.Click Create.

Gewähren des Zugriffs auf den Event Hub und Abrufen einer VerbindungszeichenfolgeGrant access to the event hub and get a connection string

Damit ein Prozess Daten an einen Event Hub senden kann, muss der Event Hub mit einer Richtlinie versehen sein, die einen entsprechenden Zugriff ermöglicht.Before a process can send data to an event hub, the event hub must have a policy that allows appropriate access. Die Zugriffsrichtlinie erzeugt eine Verbindungszeichenfolge, die Autorisierungsinformationen enthält.The access policy produces a connection string that includes authorization information.

  1. Klicken Sie im Bereich „Ereignis-Namespace“ auf Event Hubs und dann auf den Namen Ihres neuen Event Hubs.In the event namespace pane, click Event Hubs and then click the name of your new event hub.

  2. Klicken Sie im Bereich „Event Hub“ auf SAS-Richtlinien und dann auf + Hinzufügen.In the event hub pane, click Shared access policies and then click + Add.

    Hinweis

    Stellen Sie sicher, dass Sie mit dem Event Hub arbeiten und nicht mit dem Event Hub-Namespace.Make sure you're working with the event hub, not the event hub namespace.

  3. Fügen Sie die Richtlinie namens sa-policy-manage-demo hinzu, und wählen Sie für Anspruch die Option Verwalten.Add a policy named sa-policy-manage-demo and for Claim, select Manage.

    Create shared access policy for Stream Analytics
  4. Klicken Sie auf Create.Click Create.

  5. Nachdem die Richtlinie bereitgestellt wurde, klicken sie in der Liste der SAS-Richtlinien darauf.After the policy has been deployed, click it in the list of shared access policies.

  6. Navigieren Sie zum Feld VERBINDUNGSZEICHENFOLGE – PRIMÄRSCHLÜSSEL, und klicken Sie neben der Verbindungszeichenfolge auf die Schaltfläche „Kopieren“.Find the box labeled CONNECTION STRING-PRIMARY KEY and click the copy button next to the connection string.

    Stream Analytics shared access policy
  7. Fügen Sie die Verbindungszeichenfolge in einen Texteditor ein.Paste the connection string into a text editor. Sie benötigen diese Verbindungszeichenfolge für den nächsten Abschnitt, nachdem Sie einige kleine Änderungen vorgenommen haben.You need this connection string for the next section, after you make some small edits to it.

    Die Verbindungszeichenfolge sieht folgendermaßen aus:The connection string looks like this:

    Endpoint=sb://YOURNAME-eh-ns-demo.servicebus.windows.net/;SharedAccessKeyName=asa-policy-manage-demo;SharedAccessKey=Gw2NFZwU1Di+rxA2T+6hJYAtFExKRXaC2oSQa0ZsPkI=;EntityPath=asa-eh-frauddetection-demo
    

    Beachten Sie, dass die Verbindungszeichenfolge mehrere durch ein Semikolon getrennte Schlüssel/Wert-Paare enthält: Endpoint, SharedAccessKeyName, SharedAccessKey und EntityPath.Notice that the connection string contains multiple key-value pairs, separated with semicolons: Endpoint, SharedAccessKeyName, SharedAccessKey, and EntityPath.

Konfigurieren und starten der Ereignisgenerator-AnwendungConfigure and start the event generator application

Bevor Sie die TelcoGenerator-App starten, müssen Sie sie so konfigurieren, dass Aufrufdatensätze an den von Ihnen erstellten Event Hub gesendet werden.Before you start the TelcoGenerator app, you must configure it so that it will send call records to the event hub you created.

Konfigurieren der TelcoGenerator-AppConfigure the TelcoGenerator app

  1. Notieren Sie im Editor, in den Sie die kopierte Verbindungszeichenfolge eingefügt haben, den Wert EntityPath, und entfernen Sie das EntityPath-Paar (danken Sie daran, das voranstehende Semikolon zu entfernen).In the editor where you copied the connection string, make a note of the EntityPath value, and then remove the EntityPath pair (don't forget to remove the semicolon that precedes it).

  2. Öffnen Sie in einem Editor die Datei „telcodatagen.exe.config“ im Ordner, in dem sich die entzippte Datei „TelcoGenerator.zip“ befindet.In the folder where you unzipped the TelcoGenerator.zip file, open the telcodatagen.exe.config file in an editor. (Es gibt mehrere Konfigurationsdateien. Stellen Sie daher sicher, dass Sie die richtige Datei öffnen.)(There is more than one .config file, so be sure that you open the right one.)

  3. Legen Sie im Element <appSettings> Folgendes fest:In the <appSettings> element:

    • Legen Sie den Wert des Schlüssels EventHubName auf den Event Hub-Namen fest (d.h. auf den Wert des Entitätspfads).Set the value of the EventHubName key to the event hub name (that is, to the value of the entity path).
    • Legen Sie den Wert des Schlüssels Microsoft.ServiceBus.ConnectionString auf die Verbindungszeichenfolge fest.Set the value of the Microsoft.ServiceBus.ConnectionString key to the connection string.

    Der Abschnitt <appSettings> sollte wie im folgenden Beispiel aussehen.The <appSettings> section will look like the following example. (Der Übersichtlichkeit halber wurden die Zeilen umbrochen und einige Zeichen aus dem Autorisierungstoken entfernt.)(For clarity, the lines are wrapped and some characters have been removed from the authorization token.)

    TelcoGenerator-Konfigurationsdatei mit Event Hub-Namen und Verbindungszeichenfolge

  4. Speichern Sie die Datei .Save the file.

Starten der AppStart the app

  1. Öffnen Sie ein Befehlsfenster, und wechseln Sie zum Ordner, in dem sich die entzippte TelcoGenerator-App befindet.Open a command window and change to the folder where the TelcoGenerator app is unzipped.

  2. Geben Sie den folgenden Befehl ein:Enter the following command:

telcodatagen.exe 1000 0.2 2
<span data-ttu-id="84fef-186">Die Parameter lauten wie folgt:</span><span class="sxs-lookup"><span data-stu-id="84fef-186">The parameters are:</span></span> 

* <span data-ttu-id="84fef-187">Anzahl der KDS pro Stunde</span><span class="sxs-lookup"><span data-stu-id="84fef-187">Number of CDRs per hour.</span></span> 
* <span data-ttu-id="84fef-188">Wahrscheinlichkeit eines SIM-Kartenbetrugs: Die Häufigkeit als Prozentsatz aller Anrufe, mit der die App einen betrügerischen Anruf simulieren soll.</span><span class="sxs-lookup"><span data-stu-id="84fef-188">SIM Card Fraud Probability: How often, as a percentage of all calls, that the app should simulate a fraudulent call.</span></span> <span data-ttu-id="84fef-189">Der Wert „0.2“ bedeutet, dass etwa 20 Prozent der Anrufdatensätze betrügerische Anrufe simulieren.</span><span class="sxs-lookup"><span data-stu-id="84fef-189">The value 0.2 means that about 20% of the call records will look fraudulent.</span></span>
* <span data-ttu-id="84fef-190">Dauer in Stunden:</span><span class="sxs-lookup"><span data-stu-id="84fef-190">Duration in hours.</span></span> <span data-ttu-id="84fef-191">Die Anzahl der Stunden, in denen die App ausgeführt werden soll.</span><span class="sxs-lookup"><span data-stu-id="84fef-191">The number of hours that the app should run.</span></span> <span data-ttu-id="84fef-192">Sie können die App auch jederzeit beenden, indem Sie in der Befehlszeile Strg+C drücken.</span><span class="sxs-lookup"><span data-stu-id="84fef-192">You can also stop the app any time by pressing Ctrl+C at the command line.</span></span>

<span data-ttu-id="84fef-193">Nach wenigen Sekunden werden auf dem Bildschirm in der App die Telefonanrufdatensätze angezeigt, während diese an den Event Hub gesendet werden.</span><span class="sxs-lookup"><span data-stu-id="84fef-193">After a few seconds, the app starts displaying phone call records on the screen as it sends them to the event hub.</span></span>

Zu einigen wichtigen Feldern dieser Anwendung zur Betrugserkennung in Echtzeit zählen Folgende:Some of the key fields that you will be using in this real-time fraud detection application are the following:

DatensatzRecord DefinitionDefinition
CallrecTime Der Zeitstempel für die Startzeit des Anrufs.The timestamp for the call start time.
SwitchNum Die für die Anrufverbindung verwendete Vermittlungsstelle.The telephone switch used to connect the call. In diesem Beispiel werden die Vermittlungen durch Zeichenfolgen ausgedrückt, die das Ursprungsland/die Ursprungsregion (USA, China, Großbritannien, Deutschland oder Australien) darstellen.For this example, the switches are strings that represent the country/region of origin (US, China, UK, Germany, or Australia).
CallingNum Die Telefonnummer des Anrufers.The phone number of the caller.
CallingIMSI Die IMSI (International Mobile Subscriber Identity).The International Mobile Subscriber Identity (IMSI). Dies ist die eindeutige ID des Anrufers.This is the unique identifier of the caller.
CalledNum Die Telefonnummer des Angerufenen.The phone number of the call recipient.
CalledIMSI International Mobile Subscriber Identity (IMSI).International Mobile Subscriber Identity (IMSI). Dies ist die eindeutige ID des Angerufenen.This is the unique identifier of the call recipient.

Erstellen eines Stream Analytics-Auftrags zum Verwalten von StreamingdatenCreate a Stream Analytics job to manage streaming data

Nachdem Sie einen Datenstrom von Anrufereignissen eingerichtet haben, können Sie nun einen Stream Analytics-Auftrag einrichten.Now that you have a stream of call events, you can set up a Stream Analytics job. Der Auftrag liest Daten aus dem von Ihnen eingerichteten Event Hub.The job will read data from the event hub that you set up.

Erstellen des AuftragsCreate the job

  1. Klicken Sie im Azure-Portal auf Ressource erstellen > Internet der Dinge > Stream Analytics-Auftrag.In the Azure portal, click Create a resource > Internet of Things > Stream Analytics job.

  2. Vergeben Sie einen Namen für den Auftrag asa_frauddetection_job_demo, und geben Sie ein Abonnement, eine Ressourcengruppe und einen Speicherort an.Name the job asa_frauddetection_job_demo, specify a subscription, resource group, and location.

    Es empfiehlt sich, den Auftrag und den Event Hub in derselben Region zu platzieren, damit Sie von einer optimalen Leistung profitieren und Ihnen keine Kosten für die Übertragung von Daten zwischen Regionen entstehen.It's a good idea 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.

    Create Stream Analytics job in portal
  3. Klicken Sie auf Create.Click Create.

    Der Auftrag wird erstellt, und die Auftragsdetails werden im Portal angezeigt.The job is created and the portal displays job details. Die Einrichtung ist jedoch noch nicht abgeschlossen. Bevor Sie den Auftrag starten können, müssen Sie ihn konfigurieren.Nothing is running yet, though—you have to configure the job before it can be started.

Konfigurieren einer AuftragseingabeConfigure job input

  1. Suchen Sie auf dem Dashboard oder im Bereich Alle Ressourcen nach dem Stream Analytics-Auftrag asa_frauddetection_job_demo, und wählen Sie ihn aus.In the dashboard or the All resources pane, find and select the asa_frauddetection_job_demo Stream Analytics job.

  2. Klicken Sie im Bereich „Stream Analytics-Auftrag“ im Abschnitt Übersicht auf das Feld Eingabe.In the Overview section of the Stream Analytics job pane, click the Input box.

    Feld „Eingabe“ unter „Topologie“ im Bereich „Stream Analytics-Auftrag“

  3. Klicken Sie im Bereich auf Datenstromeingabe hinzufügen, und wählen Sie Event Hub aus.Click Add stream input and select Event Hub. Geben Sie dann auf der Seite „Neue Eingabe“ die folgenden Informationen ein:Then fill the New input page with the following information:

    EinstellungSetting Empfohlener WertSuggested value BeschreibungDescription
    EingabealiasInput alias CallStreamCallStream Geben Sie einen Namen zur Identifizierung der Auftragseingabe ein.Enter a name to identify the job’s input.
    AbonnementSubscription <Ihr Abonnement><Your subscription> Wählen Sie das Azure-Abonnement aus, in dem sich der erstellte Event Hub befindet.Select the Azure subscription that has the Event Hub you created.
    Event Hub-NamespaceEvent Hub namespace asa-eh-ns-demoasa-eh-ns-demo Geben Sie den Namen des Event Hub-Namespace ein.Enter the name of the Event Hub namespace.
    Event Hub-NameEvent Hub name asa-eh-frauddetection-demoasa-eh-frauddetection-demo Wählen Sie den Namen Ihres Event Hubs aus.Select the name of your Event Hub.
    Event Hub-RichtliniennameEvent Hub policy name asa-policy-manage-demoasa-policy-manage-demo Wählen Sie die Zugriffsrichtlinie aus, die Sie zuvor erstellt haben.Select the access policy that you created earlier.

    Create Stream Analytics input in portal
  4. Klicken Sie auf Create.Click Create.

Erstellen von Abfragen zum Transformieren von Daten in EchtzeitCreate queries to transform real-time data

An diesem Punkt haben Sie einen Stream Analytics-Auftrag zum Lesen eines eingehenden Datenstroms eingerichtet.At this point, you have a Stream Analytics job set up to read an incoming data stream. Der nächste Schritt besteht darin, eine Abfrage zu erstellen, die die Daten in Echtzeit analysiert.The next step is to create a query that analyzes the data in real time. Stream Analytics unterstützt ein einfaches, deklaratives Abfragemodell zum Beschreiben der Transformationen für Echtzeitverarbeitung.Stream Analytics supports a simple, declarative query model that describes transformations for real-time processing. Die Abfragen verwenden eine SQL-ähnliche Sprache, die einige Erweiterungen speziell für Stream Analytics aufweist.The queries use a SQL-like language that has some extensions specific to Stream Analytics.

Eine einfache Abfrage kann alle eingehenden Daten möglicherweise nur lesen.A simple query might just read all the incoming data. Allerdings erstellen Sie häufig Abfragen, die nach bestimmten Daten oder Beziehungen in den Daten suchen.However, you often create queries that look for specific data or for relationships in the data. In diesem Abschnitt des Tutorials erstellen und testen Sie verschiedene Abfragen, um einige Möglichkeiten kennenzulernen, mit denen Sie einen Eingabedatenstrom zur Analyse transformieren können.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.

Die Abfragen, die Sie hier erstellen, zeigen nur die transformierten Daten auf dem Bildschirm an.The queries you create here will just display the transformed data to the screen. In einem Abschnitt weiter unten konfigurieren Sie eine Ausgabesenke und eine Abfrage, die die transformierten Daten in diese Senke schreibt.In a later section, you'll configure an output sink and a query that writes the transformed data to that sink.

Weitere Informationen zur Sprache finden Sie in der Azure Stream Analytics-Abfragesprachreferenz.To learn more about the language, see the Azure Stream Analytics Query Language Reference.

Abrufen von Beispieldaten zum Testen von AbfragenGet sample data for testing queries

Die TelcoGenerator-App sendet Anrufdatensätze an den Event Hub, und Ihr Stream Analytics-Auftrag wird zum Lesen von Daten aus dem Event Hub konfiguriert.The TelcoGenerator app is sending call records to the event hub, and your Stream Analytics job is configured to read from the event hub. Mithilfe einer Abfrage können Sie testen, ob die Daten des Auftrags korrekt gelesen werden.You can use a query to test the job to make sure that it's reading correctly. Zum Testen einer Abfrage in der Azure-Konsole benötigen Sie Beispieldaten.To test a query in the Azure console, you need sample data. In dieser exemplarischen Vorgehensweise extrahieren Sie Beispieldaten aus dem Datenstrom, der vom Event Hub stammt.For this walkthrough, you'll extract sample data from the stream that's coming into the event hub.

  1. Stellen Sie sicher, dass die TelcoGenerator-App ausgeführt wird und Anrufdatensätze erzeugt.Make sure that the TelcoGenerator app is running and producing call records.

  2. Kehren Sie im Portal zum Bereich „Stream Analytics-Auftrag“ zurück.In the portal, return to the Streaming Analytics job pane. (Wenn der Bereich geschlossen ist, suchen Sie im Bereich Alle Ressourcen nach asa_frauddetection_job_demo.)(If you closed the pane, search for asa_frauddetection_job_demo in the All resources pane.)

  3. Klicken Sie in das Feld Abfrage.Click the Query box. In Azure werden die Eingaben und Ausgaben aufgeführt, die für den Auftrag konfiguriert sind. Zudem können Sie eine Abfrage erstellen, mit der Sie die Datenstromeingabe beim Senden an die Ausgabe transformieren können.Azure lists the inputs and outputs that are configured for the job, and lets you create a query that lets you transform the input stream as it is sent to the output.

  4. Klicken Sie im Bereich Abfrage auf die Punkte neben der CallStream-Eingabe, und wählen Sie anschließend Beispieldaten aus Eingabe.In the Query pane, click the dots next to the CallStream input and then select Sample data from input.

    Menüoptionen zur Verwendung von Beispieldaten für den Stream Analytics-Auftragseintrag bei ausgewählter Option „Beispieldaten aus Eingabe“

  5. Legen Sie Minuten auf „3“ fest, und klicken Sie dann auf OK.Set Minutes to 3 and then click OK.

    Optionen für die Stichprobenentnahme aus dem Eingabedatenstrom mit ausgewählter Option „3 Minuten“

    Azure entnimmt für einen Zeitraum von 3 Minuten Stichprobendaten aus der Datenstromeingabe und benachrichtigt Sie, wenn die Beispieldaten bereit sind.Azure samples 3 minutes' worth of data from the input stream and notifies you when the sample data is ready. (Dies dauert einen Augenblick.)(This takes a short while.)

Die Beispieldaten werden vorübergehend gespeichert und sind verfügbar, solange das Abfragefenster geöffnet ist.The sample data is stored temporarily and is available while you have the query window open. Wenn Sie das Abfragefenster schließen, werden die Beispieldaten verworfen, und Sie müssen einen neuen Satz von Beispieldaten erstellen.If you close the query window, the sample data is discarded, and you'll have to create a new set of sample data.

Alternativ können Sie über GitHub eine JSON-Datei mit Beispieldaten abrufen und diese JSON-Datei dann zur Verwendung als Beispieldaten für die Eingabe CallStream hochladen.As an alternative, you can get a .json file that has sample data in it from GitHub, and then upload that .json file to use as sample data for the CallStream input.

Testen durch eine Pass-Through-AbfrageTest using a pass-through query

Wenn Sie alle Ereignisse archivieren möchten, können Sie eine Pass-Through-Abfrage verwenden, um alle Felder in der Nutzlast des Ereignisses zu lesen.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. Geben Sie im Abfragefenster die folgende Abfrage ein:In the query window, enter this query:

    SELECT 
        *
    FROM 
        CallStream
    

    Hinweis

    Wie bei SQL muss die Groß-/Kleinschreibung bei Schlüsselwörtern nicht beachtet werden, und auch Leerräume spielen keine Rolle.As with SQL, keywords are not case-sensitive, and whitespace is not significant.

    In dieser Abfrage ist CallStream der Alias, den Sie beim Erstellen der Eingabe angegeben haben.In this query, CallStream is the alias that you specified when you created the input. Wenn Sie einen anderen Alias verwendet haben, verwenden Sie stattdessen diesen Namen.If you used a different alias, use that name instead.

  2. Klicken Sie auf Test.Click Test.

    Der Stream Analytics-Auftrags führt die Abfrage für die Beispieldaten aus und zeigt die Ausgabe im unteren Bereich des Fensters an.The Stream Analytics job runs the query against the sample data and displays the output at the bottom of the window. Die Ergebnisse weisen darauf hin, dass der Event Hub und der Stream Analytics-Auftrag korrekt konfiguriert sind.The results indicate that the Event Hub and the Streaming Analytics job are configured correctly. (Wie bereits erwähnt wurde, erstellen Sie später eine Ausgabesenke, in die die Abfrage Daten schreiben kann.)(As noted, later you'll create an output sink that the query can write data to.)

    Stream Analytics-Auftragsausgabe mit 73 generierten Datensätzen

    Die genaue Anzahl der angezeigten Datensätze hängt davon ab, wie viele Datensätze in Ihrer 3-minütigen Stichprobe erfasst wurden.The exact number of records you see will depend on how many records were captured in your 3-minute sample.

Reduzieren der Anzahl von Feldern durch eine SpaltenprojektionReduce the number of fields using a column projection

In vielen Fällen sind bei Ihrer Analyse nicht alle Spalten der Datenstromeingabe erforderlich.In many cases, your analysis doesn't need all the columns from the input stream. Mithilfe einer Abfrage können Sie kleinere Sätze von zurückgegebenen Feldern projizieren als in der Pass-Through-Abfrage.You can use a query to project a smaller set of returned fields than in the pass-through query.

  1. Ändern Sie die Abfrage im Code-Editor wie folgt:Change the query in the code editor to the following:

    SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum 
    FROM 
        CallStream
    
  2. Klicken Sie erneut auf Test.Click Test again.

    Stream Analytics-Auftragsausgabe für die Projektion mit 25 Datensätzen

Zählen von eingehenden Anrufen nach Region: Rollierendes Fenster mit AggregationCount incoming calls by region: Tumbling window with aggregation

Nehmen wir an, Sie möchten die Anzahl der eingehenden Anrufe pro Region zählen.Suppose you want to count the number of incoming calls per region. Wenn Sie bei Streamingdaten Aggregatfunktionen wie eine Zählung durchführen möchten, müssen Sie den Datenstrom in temporale Einheiten segmentieren (da der Datenstrom selbst faktisch endlos ist).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). Hierzu müssen Sie eine Stream Analytics-Fensterfunktion verwenden.You do this using a Streaming Analytics window function. Sie können dann mühelos in diesem Fenster mit den Daten arbeiten.You can then work with the data inside that window as a unit.

Für diese Transformation sollte eine Sequenz von temporalen Fenstern erzeugt werden, die sich nicht überlappen – jedes Fenster weist einen separaten Satz von Daten auf, den Sie gruppieren und aggregieren können.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. Diese Art von Fenster wird als rollierendes Fenster bezeichnet.This type of window is referred to as a Tumbling window. In einem rollierenden Fenster können Sie die Anzahl eingehender Anrufe gruppiert nach SwitchNum abrufen, die für das Land bzw. die Region steht, aus dem bzw. der der Anruf stammt.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. Ändern Sie die Abfrage im Code-Editor wie folgt:Change the query in the code editor to the following:

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

    Diese Abfrage verwendet das Schlüsselwort Timestamp By in der Klausel FROM, um anzugeben, welches Zeitstempelfeld in der Datenstromeingabe für die Definition des rollierenden Fensters verwendet werden soll.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. In diesem Fall werden die Daten im Fenster in Segmente unterteilt, und zwar anhand des Felds CallRecTime in jedem Datensatz.In this case, the window divides the data into segments by the CallRecTime field in each record. (Wird kein Feld angegeben, verwendet der Windowingvorgang die Zeit, zu der jedes Ereignis beim Event Hub eingeht.)(If no field is specified, the windowing operation uses the time that each event arrives at the event hub. Weitere Informationen finden Sie unter „Ankunftszeit vs. Anwendungszeit“ in der Referenz zur Stream Analytics-Abfragesprache.See "Arrival Time Vs Application Time" in Stream Analytics Query Language Reference.

    Die Projektion enthält System.Timestamp, die einen Zeitstempel für das Ende jedes Fensters zurückgibt.The projection includes System.Timestamp, which returns a timestamp for the end of each window.

    Um anzugeben, dass Sie ein rollierendes Fenster verwenden möchten, verwenden Sie die Funktion TUMBLINGWINDOW in der Klausel GROUP BY.To specify that you want to use a Tumbling window, you use the TUMBLINGWINDOW function in the GROUP BY clause. In der Funktion geben Sie eine Zeiteinheit (von einer Mikrosekunde bis zu einem Tag) und eine Fenstergröße (Anzahl der Einheiten) an.In the function, you specify a time unit (anywhere from a microsecond to a day) and a window size (how many units). In diesem Beispiel besteht das rollierende Fenster aus 5-Sekunden-Intervallen, sodass Sie alle 5 Sekunden der Anrufe eine Zählung pro Land/Region erhalten.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. Klicken Sie erneut auf Test.Click Test again. Beachten Sie, dass die Zeitstempel in den Ergebnissen unter WindowEnd in 5-Sekunden-Schritten angegeben werden.In the results, notice that the timestamps under WindowEnd are in 5-second increments.

    Stream Analytics-Auftragsausgabe für die Aggregation mit 13 Datensätzen

Erkennen von SIM-Kartenbetrug durch SelbstverknüpfungDetect SIM fraud using a self-join

In diesem Beispiel kann eine betrügerische Verwendung als Anrufe definiert werden, die vom selben Benutzer stammen, jedoch innerhalb von 5 Sekunden von verschiedenen Standorten aus getätigt werden.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. Beispielsweise kann derselbe Benutzer nicht gleichzeitig einen legitimen Anruf aus den USA und aus Australien tätigen.For example, the same user can't legitimately make a call from the US and Australia at the same time.

In diesen Fällen können Sie den Datenstrom durch eine Selbstverknüpfung der Streamingdaten basierend auf dem Wert CallRecTime mit sich selbst verknüpfen.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. Sie können dann nach Anrufdatensätzen suchen, bei denen der Wert CallingIMSI (die ursprüngliche Anzahl) identisch ist, jedoch nicht der Wert SwitchNum (Ursprungsland/-region).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.

Wenn Sie eine Verknüpfung mit Streamingdaten durchführen, müssen bei der Verknüpfung einige Beschränkungen dazu festgelegt werden, wie stark die übereinstimmenden Zeilen zeitlich getrennt werden können.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. (Wie bereits erwähnt wurde, sind Streamingdaten faktisch endlos.) Die Zeitgrenzen für die Beziehung werden in der ON-Klausel der Verknüpfung mit der DATEDIFF-Funktion angegeben.(As noted earlier, the streaming data is effectively endless.) The time bounds for the relationship are specified inside the ON clause of the join, using the DATEDIFF function. In diesem Fall basiert die Verknüpfung auf Anrufdaten mit einem Intervall von 5 Sekunden.In this case, the join is based on a 5-second interval of call data.

  1. Ändern Sie die Abfrage im Code-Editor wie folgt:Change the query in the code editor to the following:

     ```SQL
     SELECT  System.Timestamp as Time, 
         CS1.CallingIMSI, 
         CS1.CallingNum as CallingNum1, 
         CS2.CallingNum as CallingNum2, 
         CS1.SwitchNum as Switch1, 
         CS2.SwitchNum as Switch2 
     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
     ```
    

    Diese Abfrage ähnelt einer beliebigen SQL-Verknüpfung mit Ausnahme der Funktion DATEDIFF in der Verknüpfung.This query is like any SQL join except for the DATEDIFF function in the join. Diese Version von DATEDIFF ist spezifisch für Stream Analytics und muss in der ON...BETWEEN-Klausel aufgeführt werden.This version of DATEDIFF is specific to Streaming Analytics, and it must appear in the ON...BETWEEN clause. Die Parameter umfassen eine Zeiteinheit (in diesem Beispiel Sekunden) und die Aliase der beiden Quellen für die Verknüpfung.The parameters are a time unit (seconds in this example) and the aliases of the two sources for the join. Dies unterscheidet sich von der standardmäßigen SQL-Funktion DATEDIFF.This is different from the standard SQL DATEDIFF function.

    Die Klausel WHERE enthält die Bedingung, die den betrügerischen Anruf kennzeichnet: die ursprünglichen Vermittlungen sind nicht identisch.The WHERE clause includes the condition that flags the fraudulent call: the originating switches are not the same.

  2. Klicken Sie erneut auf Test.Click Test again.

    Stream Analytics-Auftragsausgabe mit sechs generierten Datensätzen zur Selbstverknüpfung

  3. Klicken Sie auf Speichern, um die Selbstverknüpfungsabfrage als Teil des Stream Analytics-Auftrags zu speichern.Click Save to save the self-join query as part of the Streaming Analytics job. (Die Beispieldaten werden nicht gespeichert.)(It doesn't save the sample data.)

    Save Stream Analytics query in portal

Erstellen einer Ausgabesenke zum Speichern von transformierten DatenCreate an output sink to store transformed data

Sie haben einen Ereignisdatenstrom, eine Event Hub-Eingabe zum Erfassen von Ereignissen und eine Abfrage zur Durchführung einer Transformation über den Datenstrom definiert.You've defined an event stream, an event hub input to ingest events, and a query to perform a transformation over the stream. Der letzte Schritt besteht darin, eine Ausgabesenke für den Auftrag zu definieren, d.h. einen Ort, in den der transformierte Datenstrom geschrieben wird.The last step is to define an output sink for the job—that is, a place to write the transformed stream to.

Sie können viele Ressourcen als Ausgabesenken verwenden, z.B. eine SQL Server-Datenbank, Table Storage, Data Lake Storage, Power BI oder sogar einen anderen Event Hub.You can use many resources as output sinks—a SQL Server database, table storage, Data Lake storage, Power BI, and even another event hub. Für dieses Tutorial schreiben Sie den Datenstrom in Azure Blob Storage – eine gängige Option zum Sammeln von Ereignisinformationen zur späteren Analyse, da hierbei unstrukturierte Daten aufgenommen werden.For this tutorial, you'll write the stream to Azure Blob Storage, which is a typical choice for collecting event information for later analysis, since it accommodates unstructured data.

Wenn ein Blob Storage-Konto vorhanden ist, können Sie dieses verwenden.If you have an existing blob storage account, you can use that. In diesem Tutorial lernen Sie, wie Sie ein neues Speicherkonto erstellen.For this tutorial, you will learn how to create a new storage account.

Erstellen eines Azure Blob Storage-KontosCreate an Azure Blob Storage account

  1. Klicken Sie in der linken oberen Ecke des Azure-Portals auf Ressource erstellen > Speicher > Speicherkonto.From the upper left-hand corner of the Azure portal, select Create a resource > Storage > Storage account. Geben Sie auf der Seite für den Speicherkontoauftrag die entsprechenden Informationen ein: Legen Sie für Name den Namen „asaehstorage“, für Standort die Option „USA, Osten“ und für Ressourcengruppe die Option „asa-eh-ns-rg“ fest. (Hosten Sie für eine höhere Leistung das Speicherkonto in derselben Ressourcengruppe wie den Streamingauftrag.)Fill out the Storage account job page with Name set to "asaehstorage", Location set to "East US", Resource group set to "asa-eh-ns-rg" (host the storage account in the same resource group as the Streaming job for increased performance). Bei den übrigen Einstellungen können Sie die Standardwerte übernehmen.The remaining settings can be left to their default values.

    Erstellen eines Speicherkontos im Azure-Portal

  2. Kehren Sie im Azure-Portal zum Bereich „Stream Analytics-Auftrag“ zurück.In the Azure portal, return to the Streaming Analytics job pane. (Wenn der Bereich geschlossen ist, suchen Sie im Bereich Alle Ressourcen nach asa_frauddetection_job_demo.)(If you closed the pane, search for asa_frauddetection_job_demo in the All resources pane.)

  3. Klicken Sie im Abschnitt Auftragstopologie in das Feld Ausgabe.In the Job Topology section, click the Output box.

  4. Klicken Sie im Bereich Ausgaben auf Hinzufügen, und wählen Sie Blobspeicher aus.In the Outputs pane, click Add and select Blob storage. Geben Sie dann auf der Seite „Neue Ausgabe“ die folgenden Informationen ein:Then fill out the New output page with the following information:

    EinstellungSetting Empfohlener WertSuggested value BeschreibungDescription
    AusgabealiasOutput alias CallStream-FraudulentCallsCallStream-FraudulentCalls Geben Sie einen Namen zur Identifizierung der Auftragsausgabe ein.Enter a name to identify the job’s output.
    AbonnementSubscription <Ihr Abonnement><Your subscription> Wählen Sie das Azure-Abonnement mit dem von Ihnen erstellten Speicherkonto aus.Select the Azure subscription that has the storage account you created. Das Speicherkonto kann sich im gleichen oder in einem anderen Abonnement befinden.The storage account can be in the same or in a different subscription. In diesem Beispiel wird davon ausgegangen, dass Sie ein Speicherkonto im gleichen Abonnement erstellt haben.This example assumes that you have created storage account in the same subscription.
    SpeicherkontoStorage account asaehstorageasaehstorage Geben Sie den Namen des von Ihnen erstellten Speicherkontos ein.Enter the name of the storage account you created.
    ContainerContainer asa-fraudulentcalls-demoasa-fraudulentcalls-demo Wählen Sie „Neu erstellen“ aus, und geben Sie einen Containernamen ein.Choose Create new and enter a container name.

    Create blob output for Stream Analytics job
  5. Klicken Sie auf Speichern.Click Save.

Starten des Stream Analytics-AuftragsStart the Streaming Analytics job

Der Auftrag ist jetzt konfiguriert.The job is now configured. Sie haben eine Eingabe (den Event Hub), eine Transformation (die Abfrage zum Suchen nach betrügerischen Anrufen) und eine Ausgabe (Blob Storage) festgelegt.You've specified an input (the event hub), a transformation (the query to look for fraudulent calls), and an output (blob storage). Nun können Sie den Auftrag starten.You can now start the job.

  1. Stellen Sie sicher, dass die App TelcoGenerator ausgeführt wird.Make sure the TelcoGenerator app is running.

  2. Klicken Sie im Bereich „Auftrag“ auf Starten.In the job pane, click Start. Wählen Sie im Bereich Auftrag starten als Startzeit der Auftragsausgabe Jetzt.In the Start job pane, for Job output start time, select Now.

    Starten des Stream Analytics-Auftrags

Überprüfen der transformierten DatenExamine the transformed data

Sie haben nun einen Stream Analytics-Auftrag durchgeführt.You now have a complete Streaming Analytics job. Der Auftrag überprüft einen Datenstrom von Telefonanrufmetadaten. Dabei wird in Echtzeit nach betrügerischen Telefonanrufen gesucht und Informationen zu diesen betrügerischen Anrufen in den Speicher geschrieben.The job is examining a stream of phone call metadata, looking for fraudulent phone calls in real time, and writing information about those fraudulent calls to storage.

Zum Abschluss dieses Tutorials sollten Sie sich die Daten ansehen, die vom Stream Analytics-Auftrag erfasst werden.To complete this tutorial, you might want to look at the data being captured by the Streaming Analytics job. Die Daten werden in Blöcken (Dateien) in Azure Blob Storage geschrieben.The data is being written to Azure Blog Storage in chunks (files). Sie können ein beliebiges Tool verwenden, das Daten aus dem Azure Blob Storage liest.You can use any tool that reads Azure Blob Storage. Wie bereits im Abschnitt „Voraussetzungen“ erwähnt, können Sie Azure-Erweiterungen in Visual Studio oder ein Tool wie den Azure Storage-Explorer oder Cerulean verwenden.As noted in the Prerequisites section, you can use Azure extensions in Visual Studio, or you can use a tool like Azure Storage Explorer or Cerulean.

Wenn Sie die Inhalte einer Datei in Blob Storage überprüfen, wird beispielsweise Folgendes angezeigt:When you examine the contents of a file in blob storage, you see something like the following:

Azure Blob Storage mit Stream Analytics-Ausgabe

Bereinigen von RessourcenClean up resources

Es sind weitere Artikel vorhanden, die das Betrugserkennungsszenario behandeln und die die in diesem Tutorial erstellten Ressourcen verwenden.There are additional articles that continue with the fraud-detection scenario and use the resources you've created in this tutorial. Wenn Sie fortfahren möchten, lesen Sie die Empfehlungen unter Nächste Schritte.If you want to continue, see the suggestions under Next steps.

Wenn Sie jedoch fertig sind und die erstellten Ressourcen nicht benötigen, können Sie sie löschen, damit keine unnötigen Gebühren seitens Azure anfallen.However, if you're done and you don't need the resources you've created, you can delete them so that you don't incur unnecessary Azure charges. In diesem Fall wird empfohlen, folgendermaßen vorzugehen:In that case, we suggest that you do the following:

  1. Halten Sie den Stream Analytics-Auftrag an.Stop the Streaming Analytics job. Klicken Sie im Bereich Aufträge oben auf Beenden.In the Jobs pane, click Stop at the top.
  2. Beenden Sie die TelcoGenerator-App.Stop the Telco Generator app. Drücken Sie im Befehlsfenster, in dem Sie die App gestartet haben, die Tasten Strg+C.In the command window where you started the app, press Ctrl+C.
  3. Wenn Sie ein neues Blob Storage-Konto speziell für dieses Tutorial erstellt haben, löschen Sie es.If you created a new blob storage account just for this tutorial, delete it.
  4. Löschen Sie den Stream Analytics-Auftrag.Delete the Streaming Analytics job.
  5. Löschen Sie den Event Hub.Delete the event hub.
  6. Löschen Sie den Event Hub-Namespace.Delete the event hub namespace.

SupportGet support

Um Hilfe zu erhalten, nutzen Sie das Azure Stream Analytics-Forum.For further assistance, try the Azure Stream Analytics forum.

Nächste SchritteNext steps

Sie können dieses Tutorial mit dem folgenden Artikel fortsetzen:You can continue this tutorial with the following article:

Weitere Informationen zu Stream Analytics allgemein finden Sie auch in diesen Artikeln:For more information about Stream Analytics in general, see these articles: