Självstudie: Analysera bedrägliga samtalsdata Stream Analytics och visualisera resultat i Power BI instrumentpanel
Den här självstudien visar hur du analyserar telefonsamtalsdata med hjälp av Azure Stream Analytics. Telefonsamtalsdata, som genereras av ett klientprogram, innehåller bedrägliga samtal som filtreras efter Stream Analytics jobb. Du kan använda teknikerna i den här självstudien för andra typer av bedrägeriidentifiering, till exempel kreditkortsbedrägerier eller identitetsstöld.
I den här guiden får du lära dig att:
- Generera exempel på telefonsamtalsdata och skicka dem till Azure Event Hubs.
- Skapa ett Stream Analytics-jobb.
- Konfigurera jobbindata och -utdata.
- Definiera frågor för att filtrera bedrägliga samtal.
- Testa och starta jobbet.
- Visualisera resultat i Power BI.
Förutsättningar
Innan du börjar kontrollerar du att du har slutfört följande steg:
- Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
- Ladda ned telefonsamtalets händelsegeneratorapp TelcoGenerator.zip från Microsoft Download Center eller hämta källkoden från GitHub.
- Du behöver Power BI-konto.
Logga in på Azure
Logga in på Azure-portalen.
Skapa en Azure-händelsehubb
Innan Stream Analytics kan analysera dataströmmen med bedrägliga samtal behöver data skickas till Azure. I den här självstudien skickar du data till Azure med Azure Event Hubs.
Använd följande steg för att skapa en händelsehubb och skickar samtalsdata till den händelsehubben:
Logga in på Azure-portalen.
Välj Skapa en resurs > Sakernas Internet > Event Hubs.

Fyll i fönstret Skapa namnområde med följande värden:
Inställning Föreslaget värde Beskrivning Name asaTutorialEventHub Ett unikt namn för att identifiera händelsehubbens namnområde. Prenumeration <Your subscription> Välj en Azure-prenumeration där du vill skapa händelsehubben. Resursgrupp MyASADemoRG Välj Skapa ny och ange ett nytt resursgruppsnamn för ditt konto. Location USA, västra 2 Plats där händelsehubbens namnområde kan distribueras. Använd standardalternativen för de återstående inställningarna och välj Granska + skapa. Välj sedan Skapa för att starta distributionen.

När namnområdet har distribuerats går du till Alla resurser och hittar asaTutorialEventHub i listan över Azure-resurser. Välj asaTutorialEventHub för att öppna den.
Välj sedan +Händelsehubb och ange ett Namn för händelsehubben. Ange Antal partitioner till 2. Använd standardalternativen i de återstående inställningarna och välj Skapa. Vänta sedan tills distributionen är klar.

Bevilja åtkomst till händelsehubben och få en anslutningssträng
Innan ett program kan skicka data till Azure Event Hubs händelsehubben ha en princip som tillåter åtkomst. Åtkomstprincipen producerar en anslutningssträng som inkluderar auktoriseringsinformation.
Gå till den händelsehubb som du skapade i föregående steg, MyEventHub. Välj Principer för delad åtkomst under Inställningar och välj sedan + Lägg till.
Ge principen namnet MyPolicy och se till att Hantera är markerat. Välj sedan Skapa.

När principen har skapats väljer du principnamnet för att öppna principen. Leta reda på Anslutningssträng – primärnyckel. Välj kopieringsknappen bredvid anslutningssträngen.

Klistra in anslutningssträngen i en textredigerare. Du behöver den här anslutningssträngen i nästa avsnitt.
Anslutningssträngen ser ut så här:
Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>;EntityPath=<Your event hub name>Lägg märke till att anslutningssträngen innehåller flera nyckel/värde-par som är separerade med semikolon: Endpoint, SharedAccessKeyName, SharedAccessKey och EntityPath.
Starta händelsegeneratorprogrammet
Innan du startar appen TelcoGenerator ska du konfigurera den så att den skickar data till de Azure Event Hubs du skapade tidigare.
Extrahera innehållet i filen TelcoGenerator.zip.
Öppna
TelcoGenerator\TelcoGenerator\telcodatagen.exe.configfilen i en valfri textredigerare. Det finns fler än en fil, så.configse till att du öppnar rätt fil.Uppdatera elementet
<appSettings>i config-filen med följande information:- Ange värdet för nyckeln EventHubName till värdet för EntityPath i anslutningssträngen.
- Ställ in värdet för nyckeln Microsoft.ServiceBus.ConnectionString till anslutningssträngen utan EntityPath-värdet. Glöm inte att ta bort semikolonet som föregår EntityPath-värdet.
Spara filen.
Öppna sedan ett kommandofönster och växla till den mapp där du packade upp programmet TelcoGenerator. Ange sedan följande kommando:
.\telcodatagen.exe 1000 0.2 2Kommandot stöder följande parametrar:
- Antal samtalsdataposter per timme.
- Procentandel för sannolikhet för bedrägeri, vilket är hur ofta appen ska simulera ett bedrägligt samtal. Värdet 0.2 betyder att cirka 20 % av anropsposterna ser bedrägliga ut.
- Längd i timmar, vilket är det antal timmar som appen ska köras. Du kan också stoppa appen när som helst genom att avsluta processen (Ctrl + C) på kommandoraden.
Efter några sekunder börjar appen visa telefonsamtalsposter på skärmen och skickar dem till en händelsehubb. Telefonsamtalsdata innehåller följande fält:
Post Definition CallrecTime Tidsstämpeln för samtalets starttid. SwitchNum Telefonväxeln används för att ansluta samtalet. I det här exemplet är växlarna strängar som representerar landet/regionen för ursprunget (USA, Kina, Storbritannien, Tyskland eller Australien). CallingNum Uppringarens telefonnummer. CallingIMSI International Mobile Subscriber Identity (IMSI). Det är en unik identifierare för uppringaren. CalledNum Telefonnumret till mottagaren. CalledIMSI International Mobile Subscriber Identity (IMSI). Det är en unik identifierare för mottagaren.
Skapa ett Stream Analytics-jobb
Nu nr du har en ström av anropshändelser kan du skapa ett Stream Analytics-jobb som läser data från händelsehubben.
Du skapar du ett Stream Analytics-jobb genom att gå till Azure-portalen.
Välj Skapa en resurs och sök efter Stream Analytics jobb. Välj panelen Stream Analytics jobb och välj Skapa.
Fyll i formuläret Stream Analytics jobb med följande värden:
Inställning Föreslaget värde Beskrivning Jobbnamn ASATutorial Ett unikt namn för att identifiera händelsehubbens namnområde. Prenumeration <Your subscription> Välj en Azure-prenumeration där du vill skapa jobbet. Resursgrupp MyASADemoRG Välj Använd befintlig och ange ett nytt resursgruppsnamn för ditt konto. Location USA, västra 2 Plats där jobbet kan distribueras. Vi rekommenderar att du placerar jobbet och händelsehubben i samma region för bästa prestanda och så att du inte ska betala för att överföra data mellan regioner. Värdmiljö Moln Stream Analytics-jobb kan distribueras till molnet eller edge. Med molnet kan du distribuera till Azure Cloud, och med Edge kan du distribuera till en IoT Edge enhet. Strömningsenheter 1 Strömningsenheter representerar de bearbetningsresurser som krävs för att köra ett jobb. Standardvärdet är 1. Mer information om skalning av strömningsenheter finns i artikeln om att förstå och justera strömningsenheter. Använd standardalternativen för återstående inställningar, välj Skapa och vänta tills distributionen har lyckats.

Konfigurera jobbindata
Nästa steg är att definiera en indatakälla som jobbet använder för att läsa data med hjälp av den händelsehubb som du skapade i föregående avsnitt.
Från Azure Portal öppnar du sidan Alla resurser och hittar ASATutorial-Stream Analytics jobbet.
I avsnittet Jobbtopologi i Stream Analytics jobb väljer du Indata.
Välj + Lägg till strömindata och Händelsehubb. Fyll i indataformuläret med följande värden:
Inställning Föreslaget värde Beskrivning Inmatat alias CallStream Ange ett eget namn som identifierar din inmatning. Indataaliaset får enbart innehålla alfanumeriska tecken, bindestreck och understreck och måste vara mellan 3-63 tecken långt. Prenumeration <Your subscription> Välj en Azure-prenumeration där du skapade händelsehubben. Händelsehubben kan finnas i samma eller en annan prenumeration som Stream Analytics-jobbet. Namnområde för händelsehubb asaTutorialEventHub Välj namnområdet för händelsehubben som du skapade i föregående avsnitt. Alla händelsehubbnamnområden som finns i din aktuella prenumeration visas i listrutan. Namn på händelsehubb MyEventHub Välj händelsehubben som du skapade i föregående avsnitt. Alla händelsehubbar som finns i din aktuella prenumeration visas i listrutan. Principnamn för Event Hub MyPolicy Välj händelsehubbens delade princip som du skapade i föregående avsnitt. Alla händelsehubbprinciper som finns i din aktuella prenumeration visas i listrutan. Använd standardalternativ för de återstående inställningarna och välj Spara.

Konfigurera jobbutdata
Det sista steget är att definiera en utdata mottagare där jobbet kan skriva transformerade data. I den här självstudien matar du ut och visualiserar data med Power BI.
Från Azure Portal du Alla resurser och väljer asatutorial-Stream Analytics jobbet.
I avsnittet Jobbtopologi i Stream Analytics jobb väljer du alternativet Utdata.
Välj + Lägg till > Power BI. Välj auktorisera och följ sedan anvisningarna för att autentisera Power BI.
Fyll i utdataformuläret med följande information och välj Spara:
Inställning Föreslaget värde Utdataalias MyPBIoutput Grupparbetsyta Min arbetsyta Namn på datauppsättning ASAdataset Tabellnamn ASATable Autentiseringsläge Användartoken 
I den här självstudien används autentiseringsläget användartoken. Information om hur du använder hanterad identitet finns i Använda hanterad identitet för Azure Stream Analytics för att Power BI.
Skapa frågor för att transformera realtidsdata
Nu har du ett jobb Stream Analytics att läsa en inkommande dataström. Nästa steg är att skapa en fråga som analyserar data i realtid. Frågorna använder ett SQL språk som har vissa tillägg som är specifika för Stream Analytics.
I det här avsnittet av självstudien skapar och testar du flera frågor för att lära dig några olika sätt att transformera en indataström för analys.
De frågor som du skapar här visar bara transformerade data på skärmen. I ett senare avsnitt skriver du transformerade data till Power BI.
Mer information om språket finns i Azure Stream Analytics Query Language Reference.
Testa med hjälp av en direktfråga
Om du vill arkivera varje händelse kan du använda en direktfråga för att läsa alla fält i händelsens nyttolast.
Gå till ditt Stream Analytics jobb i Azure Portal och välj Fråga under Jobbtopologi.
I frågefönstret anger du den här frågan:
SELECT * FROM CallStreamAnteckning
Precis som SQL är nyckelord inte fallkänsliga, och blanksteg är inte betydande.
I den här frågan
CallStreamär det alias som du angav när du skapade indata. Om du använde ett annat alias använder du det namnet i stället.Välj Testa fråga.
Jobbet Stream Analytics kör frågan mot exempeldata från indata och visar utdata längst ned i fönstret. Resultatet visar att Event Hub och Streaming Analytics-jobbet är korrekt konfigurerade.
Det exakta antalet poster som visas beror på hur många poster som har avbildats i exemplet.
Minska antalet fält med hjälp av en kolumnprojektion
I många fall behöver inte analysen alla kolumner från indataströmmen. Du kan använda en fråga för att projicera en mindre uppsättning returnerade fält än i direktfrågan.
Kör följande fråga och lägg märke till utdata.
SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNumCalledNum
FROM
CallStream
Räkna inkommande anrop per region: Rullande fönster med aggregering
Anta att du vill räkna antalet inkommande samtal per region. När du vill utföra mängdfunktioner som att räkna i strömmande data måste du segmentera dataströmmen i temporala enheter, eftersom själva dataströmmen i praktiken är oändlig. Det gör du med hjälp av en funktion i Streaming Analytics-fönstret. Du kan sedan arbeta med data i fönstret som en enhet.
För den här transformeringen vill du ha en sekvens med tidsfönster som inte överlappar – varje fönster har en diskret uppsättning data som du kan gruppera och aggregera. Den här typen av fönster kallas för ett rullande fönster. I rullande fönster kan du hämta antalet inkommande samtal grupperade efter , som representerar det SwitchNum land/den region där anropet kom från.
Klistra in följande fråga i frågeredigeraren:
SELECT System.Timestamp as WindowEnd, SwitchNum, COUNT(*) as CallCount FROM CallStream TIMESTAMP BY CallRecTime GROUP BY TUMBLINGWINDOW(s, 5), SwitchNumDen här frågan använder nyckelordet i -satsen för att ange vilket tidsstämpelfält i indataströmmen som ska användas för
Timestamp ByFROMatt definiera rullande fönster. I det här fallet delar fönstret in data i segment efterCallRecTimefält i varje post. (Om inget fält anges använder fönsteråtgärden den tid då varje händelse anländer till händelsehubben. Se "Ankomsttid jämfört med programtid" i Stream Analytics Query Language Reference.Projektionen
System.Timestampinnehåller , som returnerar en tidsstämpel för slutet av varje fönster.Om du vill ange att du vill använda ett rullande fönster använder du funktionen TUMBLINGWINDOW i -satsen.
GROUP BYI funktionen anger du en tidsenhet (allt från en mikrosekunder till en dag) och en fönsterstorlek (hur många enheter). I det här exemplet består rullande fönster av 5 sekunders intervall, så du får ett antal per land/region för var femte sekunds anrop.Välj Testa fråga. I resultatet ser du att tidsstämplarna under WindowEnd är i steg om 5 sekunder.
Identifiera SIM-bedrägerier med självkoppling
I det här exemplet kan bedräglig användning vara anrop som kommer från samma användare men på olika platser inom 5 sekunder från varandra. Samma användare kan till exempel inte legitimt ringa ett samtal från USA och Australien samtidigt.
Om du vill kontrollera dessa fall kan du använda en självkoppling av strömmande data för att ansluta dataströmmen till sig själv baserat på CallRecTime värdet. Du kan sedan söka efter anropsposter där värdet (det ursprungliga numret) är detsamma, men värdet CallingIMSI SwitchNum (land/region för ursprung) inte är detsamma.
När du använder en koppling med strömmande data måste koppling tillhandahålla vissa gränser för hur långt de matchande raderna kan separeras i tid. Som tidigare nämnts är strömmande data i praktiken oändliga. Tidsbegränsningarna för relationen anges inuti ON -satsen i -koppling med hjälp av DATEDIFF funktionen . I det här fallet baseras koppling på ett 5-sekundersintervall med anropsdata.
Klistra in följande fråga i frågeredigeraren:
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))Den här frågan fungerar SQL alla kopplingar utom
DATEDIFFfunktionen i -koppling. Den här versionenDATEDIFFav är specifik för Streaming Analytics och måste visas i -satsen.ON...BETWEENParametrarna är en tidsenhet (sekunder i det här exemplet) och alias för de två källorna för koppling. Detta skiljer sig från SQLDATEDIFFstandardfunktion.Satsen
WHEREinnehåller villkoret som flaggar det bedrägliga anropet: de ursprungliga växlarna är inte samma.Välj Testa fråga. Granska utdata och välj sedan Spara fråga.
Starta jobbet och visualisera utdata
Starta jobbet genom att gå till jobbet Översikt och välja Starta.
Välj Nu som starttid för jobbutdata och välj Start. Du kan se dess status i meddelandefältet.
När jobbet är klart går du till Power BI och loggar in med ditt arbets- eller skolkonto. Om Stream Analytics-jobbfrågan genererar resultat finns den ASAdataset-datamängd som du skapade under fliken Datamängder.
Från din Power BI-arbetsyta väljer du + Skapa för att skapa en new instrumentpanel med namnet Fraudulent Calls (Bedrägliga samtal).
Längst upp i fönstret väljer du Redigera och Lägg till panel. Välj sedan Anpassade strömmande data och Nästa. Välj ASAdataset under Dina datamängder. Välj Kort i listrutan Visualiseringstyp och lägg till bedrägliga samtal i Fält. Välj Nästa för att ange ett namn på panelen och välj sedan Applicera för att skapa panelen.

Följ steg 5, med följande alternativ:
- När du kommer till Visualiseringstyp väljer du Linjediagram.
- Lägg till en axel och välj windowend.
- Lägg till ett värde och välj fraudulentcalls.
- För Tidsfönster att visa väljer du de senaste 10 minuterna.
Din instrumentpanel bör se ut som i exemplet nedan när båda panelerna har lagts till. Observera att om händelsehubbens avsändarprogram och Streaming Analytics-programmet körs, uppdateras Power BI instrumentpanel regelbundet när nya data tas emot.

Bädda in Power BI instrumentpanel i ett webbprogram
I den här delen av självstudien använder du ett exempel på en ASP.NET-webbapp som skapats av Power BI-teamet för att bädda in din instrumentpanel. Mer information om att bädda in instrumentpaneler finns i artikeln inbäddning med Power BI.
Om du vill konfigurera programmet går du till lagringsplatsen PowerBI-Developer-Samples GitHub och följer instruktionerna i avsnittet Användar äger data (använd URL:erna för omdirigering och startsida under underavsnittet integrate-web-app). Eftersom vi använder exemplet instrumentpanel använder du exempelkoden integrate-web-app som finns i GitHub lagringsplatsen. När du har fått igång programmet i webbläsaren följer du anvisningarna för att bädda in instrumentpanelen du skapade tidigare på webbsidan:
Välj Logga in för Power BI, vilket ger programmet åtkomst till instrumentpanelerna i ditt Power BI konto.
Välj knappen Hämta instrumentpaneler som visar kontots instrumentpaneler i en tabell. Leta reda på namnet på instrumentpanelen du skapade tidigare powerbi-embedded-dashboard och kopiera motsvarande EmbedUrl.
Slutligen ska du klistra in EmbedUrl i motsvarande textfält och välja Bädda in instrumentpanel. Nu kan du visa samma instrumentpanel inbäddad i ett webbprogram.
Nästa steg
I den här självstudien skapade du ett enkelt Stream Analytics-jobb, analyserade inkommande data och presenterade resultatet på en Power BI-instrumentpanel. Om du vill veta mer om Stream Analytics-jobb kan du fortsätta till nästa självstudie: