Kurz: Analýza podvodných dat volání pomocí Stream Analytics a vizualizace výsledků na řídicím panelu Power BI

V tomto kurzu se dozvíte, jak analyzovat data telefonních hovorů pomocí Azure Stream Analytics. Data telefonního hovoru generovaná klientskou aplikací obsahují podvodná volání, která jsou zjištěna úlohou Stream Analytics. Techniky z tohoto kurzu můžete použít pro jiné typy odhalování podvodů, jako jsou podvody s platebními kartami nebo krádež identity.

V tomto kurzu provedete následující úlohy:

  • Vygenerujte ukázková data telefonních hovorů a odešlete je do služby Azure Event Hubs.
  • Vytvoření úlohy Stream Analytics
  • Konfigurace vstupu a výstupu úlohy
  • Definujte dotazy pro filtrování podvodných volání.
  • Otestujte a spusťte úlohu.
  • Vizualizujte výsledky v Power BI.

Požadavky

Než začnete, ujistěte se, že jste dokončili následující kroky:

  • Pokud nemáte předplatné Azure, vytvořte si bezplatný účet.
  • Stáhněte si aplikaci generátoru událostí telefonního hovoru, TelcoGenerator.zip z webu Microsoft Download Center nebo získejte zdrojový kód z GitHubu.
  • Potřebujete účet Power BI .

Přihlášení k Azure

Přihlaste se k portálu Azure.

Vytvoření centra událostí

Než Stream Analytics dokáže analyzovat datový proud podvodných volání, musíte do centra událostí odeslat nějaká ukázková data. V tomto kurzu odesíláte data do Azure pomocí služby Azure Event Hubs.

Pomocí následujícího postupu vytvořte centrum událostí a odešlete do tohoto centra událostí data volání:

  1. Přihlaste se k portálu Azure.

  2. V nabídce vlevo vyberte Všechny služby, vyberte Internet věcí, najeďte myší na Event Hubs a pak vyberte + (Přidat).

    Screenshot showing the Event Hubs creation page.

  3. Na stránce Vytvořit obor názvů postupujte takto:

    1. Vyberte předplatné Azure, ve kterém chcete centrum událostí vytvořit.

    2. V části Skupina prostředků vyberte Vytvořit novou a zadejte název skupiny prostředků. Obor názvů služby Event Hubs se vytvoří v této skupině prostředků.

    3. Jako název oboru názvů zadejte jedinečný název oboru názvů služby Event Hubs.

    4. V části Umístění vyberte oblast, ve které chcete obor názvů vytvořit.

    5. Pro cenovou úroveň vyberte Standard.

    6. Vyberte Zkontrolovat a vytvořit v dolní části stránky.

      Screenshot showing the Create Namespace page.

    7. Na stránce Zkontrolovat a vytvořit v průvodci vytvořením oboru názvů vyberte Vytvořit v dolní části stránky po kontrole všech nastavení.

  4. Po úspěšném nasazení oboru názvů vyberte Přejít k prostředku a přejděte na stránku Oboru názvů služby Event Hubs.

  5. Na stránce Obor názvů služby Event Hubs vyberte na panelu příkazů +Event Hub.

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

  6. Na stránce Vytvořit centrum událostí zadejte název centra událostí. Nastavte počet oddílů na hodnotu 2. Ve zbývajících nastaveních použijte výchozí možnosti a vyberte Zkontrolovat a vytvořit.

    Screenshot showing the Create event hub page.

  7. Na stránce Zkontrolovat a vytvořit vyberte Vytvořit v dolní části stránky. Potom počkejte na úspěšné dokončení nasazení.

Udělení přístupu k centru událostí a získání připojovacího řetězce

Aby aplikace mohl odesílat data do služby Azure Event Hubs, musí mít centrum událostí zásadu, která umožňuje přístup. Zásady přístupu vytváří připojovací řetězec, který obsahuje informace o autorizaci.

  1. Na stránce Obor názvů služby Event Hubs vyberte v nabídce vlevo zásady sdíleného přístupu.

  2. V seznamu zásad vyberte RootManageSharedAccessKey .

  3. Pak vyberte tlačítko kopírování vedle řetězce Připojení ion – primární klíč.

  4. Vložte připojovací řetězec do textového editoru. Tento připojovací řetězec budete potřebovat v další části.

    Připojovací řetězec vypadá takto:

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

    Všimněte si, že připojovací řetězec obsahuje několik dvojic klíč-hodnota oddělených středníky: Koncový bod, SharedAccessKeyName a SharedAccessKey.

Spuštění aplikace generátoru událostí

Před spuštěním aplikace TelcoGenerator byste ji měli nakonfigurovat tak, aby odesílala data do služby Azure Event Hubs, kterou jste vytvořili dříve.

  1. Extrahujte obsah souboru TelcoGenerator.zip.

  2. TelcoGenerator\TelcoGenerator\telcodatagen.exe.config Otevřete soubor v textovém editoru podle vašeho výběru Existuje více než jeden .config soubor, proto se ujistěte, že jste otevřeli ten správný.

  3. Aktualizujte element <appSettings> v konfiguračním souboru následujícím způsobem:

    • Nastavte hodnotu klíče EventHubName na hodnotu EntityPath na konci připojovací řetězec.
    • Nastavení hodnoty Microsoft.ServiceBus.PřipojeníionString klíč k připojovací řetězec bez hodnoty EntityPath (;EntityPath=myeventhub) na konci. Nezapomeňte odebrat středník, který předchází hodnotě EntityPath.
  4. Uložte soubor.

  5. Dále otevřete příkazové okno a přejděte do složky, do které jste extrahovali aplikaci TelcoGenerator. Potom zadejte následující příkaz:

    .\telcodatagen.exe 1000 0.2 2
    

    Tento příkaz má následující parametry:

    • Počet záznamů dat volání za hodinu.
    • Procento pravděpodobnosti podvodů – to znamená, jak často by měla aplikace simulovat podvodné volání. Hodnota 0,2 znamená, že přibližně 20 % záznamů volání vypadá podvodně.
    • Doba v hodinách – počet hodin, po které by aplikace měla být spuštěná. Aplikaci můžete také kdykoli zastavit ukončením procesu (Ctrl+C) na příkazovém řádku.

    Po několika sekundách aplikace začne zobrazovat záznamy telefonních hovorů na obrazovce, když je odešle do centra událostí. Data telefonních hovorů obsahují následující pole:

    Záznam Definice
    CallrecTime Časové razítko pro počáteční čas volání.
    SwitchNum Telefonní ústředna použitá pro spojení volání. V tomto příkladu jsou přepínače řetězce, které představují zemi/oblast původu (USA, Čína, Spojené království, Německo nebo Austrálie).
    CallingNum Telefonní číslo volajícího.
    CallingIMSI IMSI (International Mobile Subscriber Identity). Jedinečný identifikátor volajícího.
    CalledNum Telefonní číslo příjemce volání.
    CalledIMSI IMSI (International Mobile Subscriber Identity). Jedinečný identifikátor příjemce volání.

Vytvoření úlohy Stream Analytics

Teď, když máte stream událostí volání, můžete vytvořit úlohu Stream Analytics, která načte data z centra událostí.

  1. Pokud chcete vytvořit úlohu Stream Analytics, přejděte na web Azure Portal.
  2. Vyberte Vytvořit prostředek a vyhledejte úlohu Stream Analytics. Vyberte dlaždici úlohy Stream Analytics a vyberte Vytvořit.
  3. Na stránce Nová úloha Stream Analytics postupujte takto:
    1. V části Předplatné vyberte předplatné, které obsahuje obor názvů služby Event Hubs.

    2. V části Skupina prostředků vyberte skupinu prostředků, kterou jste vytvořili dříve.

    3. V části Podrobnosti instance zadejte jako název jedinečný název pro úlohu Stream Analytics.

    4. V části Oblast vyberte oblast, ve které chcete vytvořit úlohu Stream Analytics. Doporučujeme umístit úlohu a centrum událostí do stejné oblasti, abyste mohli dosáhnout nejlepšího výkonu, abyste nemuseli platit za přenos dat mezi oblastmi.

    5. V případě hostování prostředí< vyberte Cloud , pokud ještě není vybraný. Úlohy Stream Analytics můžete nasadit do cloudu nebo do hraničního zařízení. Cloud umožňuje nasazení do Azure Cloudu a Edge umožňuje nasazení do zařízení IoT Edge.

    6. U jednotek streamování vyberte 1. Jednotky streamování představují výpočetní prostředky nutné k provedení úlohy. Ve výchozím nastavení je tato hodnota nastavená na 1. Podrobnosti o škálování jednotek streamování najdete v článku věnovaném principům a úpravám jednotek streamování.

    7. Vyberte Zkontrolovat a vytvořit v dolní části stránky.

      Screenshot that shows the Create Azure Stream Analytics job page.

  4. Na stránce Zkontrolovat a vytvořit zkontrolujte nastavení a pak vyberte Vytvořit a vytvořte úlohu Stream Analytics.
  5. Po nasazení úlohy vyberte Přejít k prostředku a přejděte na stránku úlohy Stream Analytics.

Konfigurace vstupu úlohy

Dalším krokem je definování vstupního zdroje, ze kterého bude úloha číst data pomocí centra událostí, které jste vytvořili v předchozí části.

  1. Na stránce úlohy Stream Analytics v části Topologie úlohy v nabídce vlevo vyberte Vstupy.

  2. Na stránce Vstupy vyberte + Přidat vstup a centrum událostí.

    Screenshot showing the Input page for a Stream Analytics job.

  3. Na stránce Centra událostí postupujte takto:

    1. Jako vstupní alias zadejte CallStream. Vstupní alias je popisný název pro identifikaci vašeho vstupu. Vstupní alias může obsahovat jenom alfanumerické znaky, spojovníky a podtržítka a musí být dlouhý 3 až 63 znaků.

    2. V části Předplatné vyberte předplatné Azure, ve kterém jste vytvořili centrum událostí. Centrum událostí může být ve stejném předplatném jako úloha Stream Analytics, ale i v jiném.

    3. V případě oboru názvů služby Event Hubs vyberte obor názvů služby Event Hubs, který jste vytvořili v předchozí části. Všechny obory názvů dostupné v aktuálním předplatném jsou uvedené v rozevíracím seznamu.

    4. Jako název centra událostí vyberte centrum událostí, které jste vytvořili v předchozí části. Všechna centra událostí dostupná ve vybraném oboru názvů jsou uvedená v rozevíracím seznamu.

    5. V případě skupiny příjemců centra událostí ponechte vybranou možnost Vytvořit novou , aby se v centru událostí vytvořila nová skupina příjemců. Pro každou úlohu Stream Analytics doporučujeme použít samostatnou skupinu příjemců. Pokud není zadána žádná skupina příjemců, použije $Default úloha Stream Analytics skupinu příjemců. Pokud úloha obsahuje vlastní spojení nebo má více vstupů, některé vstupy mohou později přečíst více než jeden čtenář. Tato situace ovlivňuje počet čtenářů v jedné skupině příjemců.

    6. V režimu ověřování vyberte Připojení ionový řetězec. Tento kurz je jednodušší otestovat pomocí této možnosti.

    7. Jako název zásady centra událostí vyberte Použít existující a pak vyberte zásadu, kterou jste vytvořili dříve.

    8. Vyberte Uložit v dolní části stránky.

      Screenshot showing the Event Hubs configuration page for an input.

Konfigurace výstupu úlohy

Posledním krokem je definování výstupní jímky, ve které může úloha zapisovat transformovaná data. V tomto kurzu data vypíšete a vizualizujete pomocí Power BI.

  1. Na webu Azure Portal otevřete Všechny prostředky a vyberte úlohu ASATutorial Stream Analytics.

  2. V části Topologie úlohy Stream Analytics vyberte možnost Výstupy.

  3. Vyberte + Přidat>Power BI.

  4. Vyplňte výstupní formulář následujícími podrobnostmi:

    Nastavení Navrhovaná hodnota
    Alias pro výstup MyPBIoutput
    Pracovní prostor skupiny Můj pracovní prostor
    Název datové sady ASAdataset
    Název tabulky ASATable
    Režim ověřování Token uživatele
  5. Vyberte Autorizovat a podle pokynů ověřte Power BI.

    Configure Stream Analytics output

  6. V dolní části stránky Power BI vyberte Uložit.

    V tomto kurzu se používá režim ověřování uživatelských tokenů . Pokud chcete použít spravovanou identitu, přečtěte si téma Použití spravované identity k ověření úlohy Azure Stream Analytics v Power BI.

Vytváření dotazů pro transformaci dat v reálném čase

V tuto chvíli máte nastavenou úlohu Stream Analytics pro čtení příchozího datového proudu. Dalším krokem je vytvoření dotazu, který analyzuje data v reálném čase. Dotazy používají jazyk podobný SQL, který má určitá rozšíření specifická pro Stream Analytics.

V této části kurzu vytvoříte a otestujete několik dotazů, abyste se naučili několik způsobů, jak transformovat vstupní datový proud pro analýzu.

Dotazy, které tady vytvoříte, zobrazí jenom transformovaná data na obrazovku. V další části napíšete transformovaná data do Power BI.

Další informace o jazyce najdete v referenčních informacích k dotazovacímu jazyku Azure Stream Analytics.

Testování pomocí předávacího dotazu

Pokud chcete archivovat každou událost, můžete použít předávací dotaz ke čtení všech polí v datové části události.

  1. Na webu Azure Portal přejděte k úloze Stream Analytics a v levé nabídce vyberte Dotaz v topologii úlohy.

  2. V okně dotazu zadejte tento dotaz:

    SELECT 
        *
    FROM 
        CallStream
    

    Poznámka:

    Stejně jako u SQL klíčová slova nerozlišují malá a velká písmena a prázdné znaky nejsou významné.

    V tomto dotazu je alias, CallStream který jste zadali při vytváření vstupu. Pokud jste použili jiný alias, použijte tento název.

  3. Výběr testovacího dotazu

    Úloha Stream Analytics spustí dotaz na ukázková data ze vstupu a zobrazí výstup v dolní části okna. Výsledky ukazují, že služba Event Hubs a úloha Stream Analytics jsou správně nakonfigurované.

    Sample output from test query.

    Přesný počet záznamů, které vidíte, závisí na tom, kolik záznamů bylo zaznamenáno ve vzorku.

Zmenšení počtu polí pomocí projekce sloupce

V mnoha případech analýza nepotřebuje všechny sloupce ze vstupního datového proudu. Dotaz můžete použít k promítání menší sady vrácených polí než v předávacím dotazu.

Spusťte následující dotaz a všimněte si výstupu.

SELECT CallRecTime, SwitchNum, CallingIMSI, CallingNum, CalledNum 
INTO
    [MyPBIoutput]
FROM 
    CallStream

Počítání příchozích hovorů podle oblasti: Přeskakující okno s agregací

Předpokládejme, že chcete spočítat počet příchozích hovorů na oblast. Pokud chcete v streamovaných datech provádět agregační funkce, jako je počítání, musíte stream rozdělit do dočasných jednotek, protože samotný datový proud je efektivně nekonečný. Provedete to pomocí funkce okna Stream Analytics. Pak můžete pracovat s daty v daném okně jako jednotkou.

U této transformace chcete mít posloupnost časových oken, která se nepřekrývají – každé okno má samostatnou sadu dat, která můžete seskupit a agregovat. Tento typ okna se označuje jako přeskakující okno. V okně pro přeskakování můžete získat počet příchozích hovorů seskupených podle SwitchNumzemě nebo oblasti, ve které hovor pochází.

  1. Do editoru dotazů vložte následující dotaz:

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

    Tento dotaz používá Timestamp By klíčové slovo v FROM klauzuli k určení pole časového razítka ve vstupním datovém proudu, které se má použít k definování přeskakujícího okna. V tomto případě okno rozdělí data do segmentů podle CallRecTime pole v každém záznamu. (Pokud není zadáno žádné pole, operace vytváření oken používá čas, kdy každá událost dorazí do centra událostí. Viz Referenční informace k dotazovacímu jazyku Stream Analytics v části Čas příletu a čas aplikace.

    Projekce zahrnuje System.Timestamp, který vrátí časové razítko pro konec každého okna.

    Chcete-li určit, že chcete použít přeskakující okno, použijte funkci TUMBLINGWINDOW v klauzuli GROUP BY . Ve funkci zadáte časovou jednotku (kdekoli od mikrosekund na den) a velikost okna (kolik jednotek). V tomto příkladu se přeskakující okno skládá z pětisekundových intervalů, takže získáte počet volání podle země nebo oblasti za každých 5 sekund.

  2. Výběr testovacího dotazu Ve výsledcích si všimněte, že časové razítka v okně WindowEnd jsou v 5sekundových přírůstcích.

Zjišťování podvodů sim karty pomocí samoobslužného připojení

V tomto příkladu zvažte použití podvodných volání, která pocházejí od stejného uživatele, ale v různých umístěních do 5 sekund od sebe. Například stejný uživatel nemůže legitimně uskutečnit volání z USA a Austrálie současně.

Pokud chcete zkontrolovat tyto případy, můžete pomocí sebe připojit streamovaná data k sobě na základě CallRecTime hodnoty. Potom můžete vyhledat záznamy volání, kde CallingIMSI je hodnota (původní číslo) stejná, ale SwitchNum hodnota (země/oblast původu) není stejná.

Když použijete spojení se streamovanými daty, musí spojení poskytnout určitá omezení, jak daleko se dají odpovídající řádky oddělit v čase. Jak už jsme uvedli dříve, streamovaná data jsou v podstatě nekonečná. Časové hranice relace jsou zadány uvnitř ON klauzule spojení pomocí DATEDIFF funkce. V tomto případě je spojení založeno na 5sekundovém intervalu dat volání.

  1. Do editoru dotazů vložte následující dotaz:

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

    Tento dotaz se podobá jakémukoli spojení SQL s výjimkou DATEDIFF funkce ve spojení. Tato verze DATEDIFF je specifická pro Stream Analytics a musí se zobrazit v klauzuli ON...BETWEEN . Parametry jsou časová jednotka (sekundy v tomto příkladu) a aliasy dvou zdrojů spojení. Tato funkce se liší od standardní funkce SQL DATEDIFF .

    Klauzule WHERE obsahuje podmínku, která označuje podvodné volání: původní přepínače nejsou stejné.

  2. Výběr testovacího dotazu Zkontrolujte výstup a pak vyberte Uložit dotaz.

Spuštění úlohy a vizualizace výstupu

  1. Pokud chcete úlohu spustit, přejděte do přehledu úlohy a vyberte Spustit.

  2. Vyberte Nyní pro čas spuštění výstupu úlohy a vyberte Spustit. Stav úlohy můžete sledovat v oznamovacím pruhu.

  3. Po úspěšném provedení úlohy přejděte do Power BI a přihlaste se pomocí svého pracovního nebo školního účtu. Pokud dotaz úlohy Stream Analytics vypisuje výsledky, na kartě Datové sady se zobrazí existující datová sada ASAdataset, kterou jste vytvořili.

  4. V pracovním prostoru Power BI vyberte + Vytvořit a vytvořte nový řídicí panel Podvodná volání.

  5. V horní části okna vyberte Upravit a přidat dlaždici. Potom vyberte Vlastní streamovaná data a Další. V části Vaše datové sady zvolte ASAdataset. V rozevíracím seznamu Typ vizualizace vyberte kartu a přidejte do polí podvodná volání. Vyberte Další, zadejte název dlaždice a pak výběrem možnosti Použít dlaždici vytvořte.

    Create Power BI dashboard tiles

  6. Zopakujte krok 5 s následujícími možnostmi:

    • Jako typ vizualizace vyberte spojnicový graf.
    • Přidejte osu a vyberte windowend.
    • Přidejte hodnotu a vyberte podvodná volání.
    • Jako časové okno pro zobrazení vyberte posledních 10 minut.
  7. Po přidání obou dlaždic by měl řídicí panel vypadat jako v následujícím příkladu. Všimněte si, že pokud je spuštěná aplikace odesílatele centra událostí a aplikace Streaming Analytics, řídicí panel Power BI se pravidelně aktualizuje při příchodu nových dat.

    Screenshot of results in Power BI dashboard.

Vložení řídicího panelu Power BI do webové aplikace

V této části kurzu použijete ukázkovou ASP.NET webovou aplikaci vytvořenou týmem Power BI k vložení řídicího panelu. Další informace o vkládání řídicích panelů najdete v tématu Vkládání pomocí Power BI.

Pokud chcete aplikaci nastavit, přejděte do úložiště GitHubu PowerBI-Developer-Samples a postupujte podle pokynů v části User Owns Data (použijte adresy URL pro přesměrování a domovskou stránku v pododdílu integrace webové aplikace). Vzhledem k tomu, že používáme příklad řídicího panelu, použijte vzorový kód integrace webové aplikace umístěný v úložišti GitHub. Jakmile máte aplikaci spuštěnou v prohlížeči, vložte řídicí panel, který jste vytvořili dříve, na webovou stránku:

  1. Vyberte Přihlásit se k Power BI, čímž aplikaci udělíte přístup k řídicím panelům ve vašem účtu Power BI.

  2. Vyberte tlačítko Získat řídicí panely, které zobrazí tabulku s přehledem řídicích panelů ve vašem účtu. Vyhledejte název řídicího panelu powerbi-embedded-dashboard, který jste vytvořili dříve, a zkopírujte odpovídající hodnotu EmbedUrl.

  3. Nakonec vložte hodnotu EmbedUrl do odpovídajícího textového pole a vyberte Vložit řídicí panel. Nyní můžete vidět stejný řídicí panel vložený do webové aplikace.

Další kroky

V tomto kurzu jste vytvořili jednoduchou úlohu Stream Analytics, analyzovali jste příchozí data a zobrazili výsledky na řídicím panelu Power BI. Další informace o úlohách Stream Analytics získáte v dalším kurzu: