Självstudie: Analysera bedrägliga samtalsdata med Stream Analytics och visualisera resultat på Power BI-instrumentpanelen

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 identifieras av Stream Analytics-jobbet. Du kan använda tekniker från den här självstudien för andra typer av bedrägeriidentifiering, till exempel kreditkortsbedrägerier eller identitetsstöld.

I den här självstudien utför du följande åtgärder:

  • Generera exempeldata för telefonsamtal 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 anrop.
  • Testa och starta jobbet.
  • Visualisera resultat i Power BI.

Förutsättningar

Kontrollera att du har slutfört följande steg innan du börjar:

  • Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt konto.
  • Ladda ned händelsegeneratorappen för telefonsamtal, TelcoGenerator.zip från Microsoft Download Center eller hämta källkoden från GitHub.
  • Du behöver ett Power BI-konto .

Logga in på Azure

Logga in på Azure-portalen.

Skapa en händelsehubb

Du måste skicka exempeldata till en händelsehubb innan Stream Analytics kan analysera dataströmmen för bedrägliga anrop. I den här självstudien skickar du data till Azure med hjälp av Azure Event Hubs.

Använd följande steg för att skapa en händelsehubb och skicka samtalsdata till händelsehubben:

  1. Logga in på Azure-portalen.

  2. Välj Alla tjänster på den vänstra menyn, välj Sakernas Internet, musen över Event Hubs och välj sedan + (Lägg till).

    Screenshot showing the Event Hubs creation page.

  3. Följ dessa steg på sidan Skapa namnområde :

    1. Välj en Azure-prenumeration där du vill skapa händelsehubben.

    2. För Resursgrupp väljer du Skapa ny och anger ett namn för resursgruppen. Event Hubs-namnområdet skapas i den här resursgruppen.

    3. Som Namnområdesnamn anger du ett unikt namn för Event Hubs-namnområdet.

    4. För Plats väljer du den region där du vill skapa namnområdet.

    5. Som Prisnivå väljer du Standard.

    6. Välj Granska + skapa längst ned på sidan.

      Screenshot showing the Create Namespace page.

    7. På sidan Granska + skapa i guiden skapa namnområde väljer du Skapa längst ned på sidan när du har granskat alla inställningar.

  4. När namnområdet har distribuerats väljer du Gå till resurs för att navigera till sidan Event Hubs-namnområde .

  5. På sidan Event Hubs-namnområde väljer du +Händelsehubb i kommandofältet.

    Screenshot showing the Add event hub button on the Event Hubs Namespace page.

  6. På sidan Skapa händelsehubb anger du ett namn för händelsehubben. Ange partitionsantalet till 2. Använd standardalternativen i de återstående inställningarna och välj Granska + skapa.

    Screenshot showing the Create event hub page.

  7. På sidan Granska + skapa väljer du Skapa längst ned på sidan. 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 måste händelsehubben ha en princip som tillåter åtkomst. Åtkomstprincipen producerar en anslutningssträng som inkluderar auktoriseringsinformation.

  1. På sidan Event Hubs-namnområde väljer du Principer för delad åtkomst på den vänstra menyn.

  2. Välj RootManageSharedAccessKey i listan med principer.

  3. Välj sedan kopieringsknappen bredvid Anslut ionssträng – primärnyckel.

  4. 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>

    Observera att anslutningssträng innehåller flera nyckel/värde-par avgränsade med semikolon: Slutpunkt, SharedAccessKeyName och SharedAccessKey.

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.

  1. Extrahera innehållet i filen TelcoGenerator.zip.

  2. TelcoGenerator\TelcoGenerator\telcodatagen.exe.config Öppna filen i valfri textredigerare Det finns fler än en .config fil, så se till att du öppnar rätt fil.

  3. Uppdatera elementet <appSettings> i config-filen med följande information:

    • Ange värdet för nyckeln EventHubName till värdet för EntityPath i slutet av anslutningssträng.
    • Ange värdet för Microsoft.ServiceBus.AnslutionString-nyckel till anslutningssträng utan EntityPath-värdet (;EntityPath=myeventhub) i slutet. Glöm inte att ta bort semikolonet som föregår EntityPath-värdet.
  4. Spara filen.

  5. Ö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 2
    

    Kommandot 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 innebär att cirka 20 % av samtalsposterna 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 ursprungslandet/ursprungsregionen (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.

  1. Du skapar du ett Stream Analytics-jobb genom att gå till Azure-portalen.
  2. Välj Skapa en resurs och sök efter Stream Analytics-jobb. Välj panelen Stream Analytics-jobb och välj Skapa.
  3. Följ dessa steg på sidan Nytt Stream Analytics-jobb :
    1. För Prenumeration väljer du den prenumeration som innehåller Event Hubs-namnområdet.

    2. För Resursgrupp väljer du den resursgrupp som du skapade tidigare.

    3. I avsnittet Instansinformation anger du ett unikt namn för Stream Analytics-jobbet.

    4. För Region väljer du den region där du vill skapa Stream Analytics-jobbet. Vi rekommenderar att du placerar jobbet och händelsehubben i samma region för bästa prestanda och så att du inte betalar för att överföra data mellan regioner.

    5. För Värdmiljö< väljer du Moln om det inte redan har valts. 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.

    6. För Enheter för direktuppspelning väljer du 1. Strömningsenheter representerar de bearbetningsresurser som krävs för att köra ett jobb. Standardvärdet är inställt på 1. Mer information om skalning av strömningsenheter finns i artikeln om att förstå och justera strömningsenheter.

    7. Välj Granska + skapa längst ned på sidan.

      Screenshot that shows the Create Azure Stream Analytics job page.

  4. På sidan Granska + skapa granskar du inställningarna och väljer sedan Skapa för att skapa Stream Analytics-jobbet.
  5. När jobbet har distribuerats väljer du Gå till resurs för att navigera till Stream Analytics-jobbsidan .

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.

  1. På sidan Stream Analytics-jobb går du till avsnittet Jobbtopologi på den vänstra menyn och väljer Indata.

  2. På sidan Indata väljer du + Lägg till indata och Händelsehubb.

    Screenshot showing the Input page for a Stream Analytics job.

  3. Följ dessa steg på sidan Händelsehubb :

    1. För Indataalias anger du CallStream. Indataalias är ett eget namn för att identifiera dina indata. Indataaliaset får enbart innehålla alfanumeriska tecken, bindestreck och understreck och måste vara mellan 3-63 tecken långt.

    2. För Prenumeration väljer du den Azure-prenumeration där du skapade händelsehubben. Händelsehubben kan finnas i samma eller en annan prenumeration som Stream Analytics-jobbet.

    3. För Event Hubs-namnområde väljer du det Event Hubs-namnområde som du skapade i föregående avsnitt. Alla namnområden som är tillgängliga i din aktuella prenumeration visas i listrutan.

    4. Som Händelsehubbnamn väljer du den händelsehubb som du skapade i föregående avsnitt. Alla händelsehubbar som är tillgängliga i det valda namnområdet visas i listrutan.

    5. För händelsehubbens konsumentgrupp väljer du alternativet Skapa ny så att en ny konsumentgrupp skapas på händelsehubben. Vi rekommenderar att du använder en distinkt konsumentgrupp för varje Stream Analytics-jobb. Om ingen konsumentgrupp anges använder $Default Stream Analytics-jobbet konsumentgruppen. När ett jobb innehåller en självkoppling eller har flera indata kan vissa indata senare läsas av mer än en läsare. Den här situationen påverkar antalet läsare i en enskild konsumentgrupp.

    6. För Autentiseringsläge väljer du Anslut ionssträng. Det är enklare att testa självstudien med det här alternativet.

    7. Som Namn på händelsehubbprincip väljer du Använd befintlig och sedan den princip som du skapade tidigare.

    8. Välj Spara längst ned på sidan.

      Screenshot showing the Event Hubs configuration page for an input.

Konfigurera jobbutdata

Det sista steget är att definiera en utdatamottagare där jobbet kan skriva transformerade data. I den här självstudien matar du ut och visualiserar data med Power BI.

  1. Öppna Alla resurser i Azure-portalen och välj ASATutorial Stream Analytics-jobbet.

  2. I avsnittet Jobbtopologi i Stream Analytics-jobbet väljer du alternativet Utdata .

  3. Välj + Lägg till>Power BI.

  4. Fyll i utdataformuläret med följande information:

    Inställning Föreslaget värde
    Utdataalias MyPBIoutput
    Grupparbetsyta Min arbetsyta
    Namn på datauppsättning ASAdataset
    Tabellnamn ASATable
    Autentiseringsläge Användartoken
  5. Välj Auktorisera och följ anvisningarna för att autentisera Power BI.

    Configure Stream Analytics output

  6. Välj Spara längst ned på Power BI-sidan.

    I den här självstudien används autentiseringsläget för användartoken . Information om hur du använder hanterad identitet finns i Använda hanterad identitet för att autentisera ditt Azure Stream Analytics-jobb till Power BI.

Skapa frågor för att transformera realtidsdata

Nu har du konfigurerat ett Stream Analytics-jobb för 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-liknande 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.

Frågorna 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 frågespråksreferensen för Azure Stream Analytics.

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 nyttolasten för händelsen.

  1. Gå till Stream Analytics-jobbet i Azure-portalen och välj Fråga under Jobbtopologi på den vänstra menyn.

  2. I frågefönstret anger du den här frågan:

    SELECT 
        *
    FROM 
        CallStream
    

    Kommentar

    Precis som med SQL är nyckelord inte skiftlägeskänsliga och blanksteget ä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.

  3. Välj Testfråga.

    Stream Analytics-jobbet kör frågan mot exempeldata från indata och visar utdata längst ned i fönstret. Resultatet visar att Event Hubs och Streaming Analytics-jobbet är korrekt konfigurerade.

    Sample output from test query.

    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 analysen inte 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, CallingNum, CalledNum 
INTO
    [MyPBIoutput]
FROM 
    CallStream

Räkna inkommande anrop efter region: Rullande fönster med aggregering

Anta att du vill räkna antalet inkommande samtal per region. När du vill utföra aggregerade funktioner som att räkna i strömmande data måste du segmentera strömmen i temporala enheter, eftersom själva dataströmmen i praktiken är oändlig. Du gör detta med hjälp av en fönsterfunktion för Streaming Analytics. Du kan sedan arbeta med data i fönstret som en enhet.

För den här omvandlingen vill du ha en sekvens med temporala fönster som inte överlappar varandra – 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 fönstret Rullande kan du få ett antal inkommande anrop grupperade efter SwitchNum, som representerar det land/den region där anropet kom.

  1. 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), SwitchNum
    

    Den här frågan använder nyckelordet Timestamp ByFROM i -satsen för att ange vilket tidsstämpelfält i indataströmmen som ska användas för att definiera rullande fönster. I det här fallet delar fönstret upp data i segment efter CallRecTime fältet i varje post. (Om inget fält anges använder fönsteråtgärden den tid då varje händelse kommer till händelsehubben. Se "Ankomsttid jämfört med programtid" i Referens för Stream Analytics-frågespråk.

    Projektionen innehåller System.Timestamp, 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 GROUP BY -satsen. I funktionen anger du en tidsenhet (var som helst från en mikrosekunder till en dag) och en fönsterstorlek (hur många enheter). I det här exemplet består rullande fönstret av 5 sekunders intervall, så du får ett antal efter land/region för anrop till ett värde av 5 sekunder.

  2. Välj Testfråga. Observera i resultatet att tidsstämplarna under WindowEnd är i steg om 5 sekunder.

Identifiera SIM-bedrägeri med hjälp av en självanslutning

I det här exemplet bör du betrakta bedräglig användning som 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 söka efter 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 CallingIMSI värdet (ursprungsnumret) är detsamma, men SwitchNum värdet (ursprungsland/ursprungsregion) inte är detsamma.

När du använder en koppling med strömmande data måste kopplingen ange vissa gränser för hur långt matchande rader kan avgränsas i tid. Som tidigare nämnts är strömmande data i praktiken oändliga. Tidsintervallen för relationen anges i ON satsen för kopplingen med hjälp DATEDIFF av funktionen . I det här fallet baseras kopplingen på ett 5-sekunders intervall med samtalsdata.

  1. 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 liknar alla SQL-kopplingar förutom DATEDIFF funktionen i kopplingen. Den här versionen av DATEDIFF är specifik för Streaming Analytics och måste visas i ON...BETWEEN -satsen. Parametrarna är en tidsenhet (sekunder i det här exemplet) och aliasen för de två källorna för kopplingen. Den här funktionen skiljer sig från sql-standardfunktionen DATEDIFF .

    Satsen WHERE innehåller villkoret som flaggar det bedrägliga anropet: de ursprungliga växlarna är inte desamma.

  2. Välj Testfråga. Granska utdata och välj sedan Spara fråga.

Starta jobbet och visualisera utdata

  1. Starta jobbet genom att gå till jobbet Översikt och välja Start.

  2. Välj Nu som starttid för jobbutdata och välj Start. Du kan se dess status i meddelandefältet.

  3. 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.

  4. Från din Power BI-arbetsyta väljer du + Skapa för att skapa en new instrumentpanel med namnet Fraudulent Calls (Bedrägliga samtal).

  5. 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 anrop 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.

    Create Power BI dashboard tiles

  6. 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 bedrägliga anrop.
    • För Tidsfönster att visa väljer du de senaste 10 minuterna.
  7. Instrumentpanelen bör se ut som i följande exempel när båda panelerna har lagts till. Observera att om ditt event hub-avsändarprogram och Streaming Analytics-program körs uppdateras Power BI-instrumentpanelen regelbundet när nya data kommer.

    Screenshot of results in Power BI dashboard.

Bädda in din Power BI-instrumentpanel i ett webbprogram

I den här delen av självstudien använder du ett exempel ASP.NET webbprogram som skapats av Power BI-teamet för att bädda in instrumentpanelen. 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 GitHub-lagringsplatsen PowerBI-Developer-Samples och följer anvisningarna under avsnittet Användarägda 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 på GitHub-lagringsplatsen. När programmet körs i webbläsaren följer du dessa steg för att bädda in instrumentpanelen som du skapade tidigare på webbsidan:

  1. Välj Logga in på Power BI, vilket ger programmet åtkomst till instrumentpanelerna i ditt Power BI-konto.

  2. 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.

  3. 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: