Použití kanálu změn služby Azure Cosmos DB k vizualizaci analýzy dat v reálném čase
PLATÍ PRO: NoSQL
Kanál změn služby Azure Cosmos DB je mechanismus pro získání průběžného a přírůstkového kanálu záznamů z kontejneru Azure Cosmos DB při vytváření nebo úpravách těchto záznamů. Podpora kanálu změn funguje tak, že naslouchá kontejneru pro všechny změny. Výstupem je pak seznam změněných dokumentů v pořadí podle času úprav. Další informace o kanálu změn najdete v článku o práci s kanálem změn.
Tento článek popisuje, jak může informační kanál změn používat společnost elektronického obchodování k pochopení vzorů uživatelů, provádění analýz a vizualizací dat v reálném čase. Budete analyzovat události, jako je uživatel prohlížející si položku, přidání položky do košíku nebo nákup položky. Když dojde k některé z těchto událostí, vytvoří se nový záznam a protokoly kanálu změn, které záznam zaznamená. Kanál změn pak aktivuje řadu kroků, které vedou k vizualizaci metrik, které analyzují výkon a aktivitu společnosti. Ukázkové metriky, které můžete vizualizovat, zahrnují výnosy, jedinečné návštěvníky webu, nejoblíbenější položky a průměrnou cenu položek, které se zobrazují a přidají do košíku a které jste si koupili. Tyto ukázkové metriky můžou společnosti elektronického obchodování pomoct vyhodnotit popularitu svého webu, rozvíjet své reklamní a cenové strategie a rozhodovat se o tom, do jakého inventáře investovat.
Součásti řešení
Následující diagram znázorňuje tok dat a komponenty, které jsou součástí řešení:
Generování dat: Simulátor dat slouží ke generování maloobchodních dat, která představují události, jako je například uživatel prohlížející položku, přidání položky do košíku a nákup položky. Pomocí generátoru dat můžete vygenerovat velkou sadu ukázkových dat. Vygenerovaná ukázková data obsahují dokumenty v následujícím formátu:
{ "CartID": 2486, "Action": "Viewed", "Item": "Women's Denim Jacket", "Price": 31.99 }
Azure Cosmos DB: Vygenerovaná data se ukládají v kontejneru Azure Cosmos DB.
Kanál změn: Kanál změn bude naslouchat změnám v kontejneru Azure Cosmos DB. Pokaždé, když se do kolekce přidá nový dokument (to znamená, že dojde k události, když uživatel zobrazí položku, přidá položku do košíku nebo koupí položku), informační kanál změn aktivuje funkci Azure Functions.
Funkce Azure: Funkce Azure zpracovává nová data a odesílá je do služby Azure Event Hubs.
Centrum událostí Azure: Centrum událostí tyto události ukládá a odesílá je do Azure Stream Analytics za účelem další analýzy.
Azure Stream Analytics: Azure Stream Analytics definuje dotazy pro zpracování událostí a provádění analýzy dat v reálném čase. Tato data se pak odešlou do Microsoft Power BI.
Power BI: Power BI slouží k vizualizaci dat odesílaných službou Azure Stream Analytics. Můžete vytvořit řídicí panel, abyste viděli, jak se metriky mění v reálném čase.
Požadavky
Microsoft .NET Framework 4.7.1 nebo novější
Microsoft .NET Core 2.1 (nebo novější)
Visual Studio s vývojem pro Univerzální platforma Windows, vývojem desktopových aplikací .NET a ASP.NET a úlohami vývoje webů
Předplatné Microsoft Azure
Účet Microsoft Power BI
Stáhněte si testovací prostředí kanálu změn služby Azure Cosmos DB z GitHubu.
Vytvoření zdrojů Azure
Vytvořte prostředky Azure: Azure Cosmos DB, účet úložiště, centrum událostí a Stream Analytics vyžadované řešením. Tyto prostředky nasadíte prostřednictvím šablony Azure Resource Manageru. K nasazení těchto prostředků použijte následující postup:
Nastavte zásadu spouštění Windows PowerShellu na Neomezenou. Uděláte to tak, že otevřete Windows PowerShell jako správce a spustíte následující příkazy:
Get-ExecutionPolicy Set-ExecutionPolicy Unrestricted
Z úložiště GitHubu, které jste si stáhli v předchozím kroku, přejděte do složky Azure Resource Manageru a otevřete soubor s názvem parameters.json soubor.
Zadejte hodnoty pro
cosmosdbaccount_name
, ,storageaccount_name
eventhubnamespace_name
parametry uvedené v parameters.json souboru. Později budete muset použít názvy, které dáte jednotlivým prostředkům.Ve Windows PowerShellu přejděte do složky Azure Resource Manageru a spusťte následující příkaz:
.\deploy.ps1
Po zobrazení výzvy zadejte ID předplatného Azure, jako název skupiny prostředků změňte kanál a spusťte 1 pro název nasazení. Jakmile se prostředky začnou nasazovat, může trvat až 10 minut, než se dokončí.
Vytvoření databáze a kolekce
Teď vytvoříte kolekci pro ukládání událostí webu elektronického obchodování. Když uživatel zobrazí položku, přidá položku do košíku nebo koupí položku, obdrží kolekce záznam, který zahrnuje akci ("viewed", "added" nebo "zakoupeno"), název zahrnuté položky, cenu zahrnuté položky a číslo ID příslušného košíku uživatele.
Přejděte na web Azure Portal a vyhledejte účet služby Azure Cosmos DB vytvořený nasazením šablony.
V podokně Průzkumník dat vyberte Nová kolekce a vyplňte formulář následujícími podrobnostmi:
- Jako pole ID databáze vyberte Vytvořit nový a pak zadejte changefeedlabdatabase. Políčko Zřídit propustnost databáze nechte nezaškrtnuté.
- Do pole ID kolekce zadejte changefeedlabcollection.
- Do pole Klíč oddílu zadejte /Item. Rozlišují se malá a velká písmena, proto se ujistěte, že jste ho zadali správně.
- Do pole Propustnost zadejte hodnotu 10000.
- Vyberte tlačítko OK.
Dále vytvořte další kolekci s názvem zapůjčení pro zpracování kanálu změn. Kolekce zapůjčení koordinuje zpracování kanálu změn napříč několika pracovními procesy. Samostatná kolekce se používá k ukládání zapůjčení s jedním zapůjčením na oddíl.
Vraťte se do podokna Průzkumník dat a vyberte Nová kolekce a vyplňte formulář následujícími podrobnostmi:
- Jako pole ID databáze vyberte Použít existující a pak zadejte changefeedlabdatabase.
- Do pole ID kolekce zadejte zapůjčení.
- V případě kapacity úložiště vyberte Pevné.
- Pole Propustnost nechte nastavené na výchozí hodnotu.
- Vyberte tlačítko OK.
Získání připojovací řetězec a klíčů
Získání připojovací řetězec služby Azure Cosmos DB
Přejděte na Web Azure Portal a vyhledejte účet služby Azure Cosmos DB vytvořený nasazením šablony.
Přejděte do podokna Klíče , zkopírujte PRIMÁRNÍ PŘIPOJOVACÍ ŘETĚZEC a zkopírujte ho do poznámkového bloku nebo jiného dokumentu, ke kterému budete mít přístup v celém cvičení. Měli byste ho označovat připojovacím řetězcem služby Azure Cosmos DB. Řetězec budete muset později zkopírovat do kódu, proto si poznamenejte a zapamatujte si, kam ho ukládáte.
Získání klíče účtu úložiště a připojovací řetězec
Účty azure Storage umožňují uživatelům ukládat data. V tomto cvičení použijete účet úložiště k ukládání dat používaných funkcí Azure Functions. Funkce Azure Se aktivuje, když se v kolekci provede jakákoli změna.
Vraťte se do skupiny prostředků a otevřete účet úložiště, který jste vytvořili dříve.
V nabídce na levé straně vyberte Přístupové klávesy .
Zkopírujte hodnoty pod klíčem 1 do poznámkového bloku nebo do jiného dokumentu, ke kterému budete mít přístup v celém cvičení. Klíč byste měli označit jako klíč úložiště a připojovací řetězec jako připojovací řetězec úložiště. Tyto řetězce budete muset později zkopírovat do kódu, proto si poznamenejte a zapamatujte si, kam je ukládáte.
Získání oboru názvů centra událostí připojovací řetězec
Centrum událostí Azure přijímá data, úložiště, procesy a předává data. V tomto cvičení centrum událostí obdrží dokument pokaždé, když dojde k nové události (pokaždé, když uživatel zobrazí položku, přidá ji do košíku uživatele nebo si ho koupí uživatel) a pak tento dokument přepošlá do Azure Stream Analytics.
Vraťte se do skupiny prostředků a otevřete obor názvů služby Event Hubs, který jste vytvořili a pojmenovali v předlabu.
V nabídce na levé straně vyberte Zásady sdíleného přístupu.
Vyberte RootManageSharedAccessKey. Zkopírujte primární klíč připojovacího řetězce do poznámkového bloku nebo do jiného dokumentu, ke kterému budete mít přístup v celém cvičení. Měli byste ho označovat připojovací řetězec oboru názvů centra událostí. Řetězec budete muset později zkopírovat do kódu, proto si poznamenejte a zapamatujte si, kam ho ukládáte.
Nastavení funkce Azure Functions pro čtení kanálu změn
Při vytvoření nového dokumentu nebo úpravě aktuálního dokumentu v kontejneru Azure Cosmos DB se kanál změn automaticky přidá do historie změn kolekce. Teď sestavíte a spustíte funkci Azure Functions, která zpracovává kanál změn. Při vytvoření nebo úpravě dokumentu v kolekci, kterou jste vytvořili, aktivuje kanál změn funkci Azure Functions. Funkce Azure Pak odešle upravený dokument do centra událostí.
Vraťte se do úložiště, které jste naklonovali na svém zařízení.
Klikněte pravým tlačítkem na soubor s názvem ChangeFeedLabSolution.sln a vyberte Otevřít v sadě Visual Studio.
Přejděte na local.settings.json v sadě Visual Studio. Potom použijte hodnoty, které jste si poznamenali dříve, a vyplňte prázdné hodnoty.
Přejděte na ChangeFeedProcessor.cs. V parametrech funkce Spustit proveďte následující akce:
- Nahraďte text YOUR COLLECTION NAME HERE názvem vaší kolekce. Pokud jste postupovali podle předchozích pokynů, název kolekce se změnífeedlabcollection.
- Nahraďte text VAŠE KOLEKCE ZAPŮJČENÍ SEM názvem kolekce zapůjčení. Pokud jste postupovali podle předchozích pokynů, název kolekce zapůjčení je zapůjčení.
- V horní části sady Visual Studio se ujistěte, že pole Spouštěný projekt vlevo od zelené šipky říká ChangeFeedFunction.
- Vyberte Spustit v horní části stránky a spusťte program.
- Můžete ověřit, že je funkce spuštěná, když se v aplikaci konzoly zobrazí zpráva "Spuštěno hostitele úloh".
Vložení dat do služby Azure Cosmos DB
Pokud chcete zjistit, jak kanál změn zpracovává nové akce na webu elektronického obchodování, musí simulovat data, která představují uživatele, kteří si prohlížejí položky z katalogu produktů, přidávají tyto položky do košíků a nakupují položky v jejich košíkech. Tato data jsou libovolná a používají se k replikaci dat na webu elektronického obchodování.
Vraťte se do úložiště v Průzkumník souborů a kliknutím pravým tlačítkem na ChangeFeedFunction.sln ho znovu otevřete v novém okně sady Visual Studio.
Přejděte do souboru App.config .
<appSettings>
V rámci bloku přidejte koncový bod a jedinečný PRIMÁRNÍ KLÍČ vašeho účtu služby Azure Cosmos DB, který jste získali dříve.Přidejte názvy kolekcí a databází . (Tyto názvy by měly být changefeedlabcollection a changefeedlabdatabase , pokud se nerozhodnete pojmenovat jinak.)
Uložte změny u všech upravovaných souborů.
V horní části sady Visual Studio se ujistěte, že pole Spouštěný projekt vlevo od zelené šipky říká DataGenerator. Potom program spustíte výběrem možnosti Start v horní části stránky.
Počkejte, než se program spustí. Hvězdy znamenají, že data přicházejí. Udržujte program spuštěný – je důležité, aby se shromáždilo velké množství dat.
Pokud přejdete na web Azure Portal a pak do účtu služby Azure Cosmos DB ve vaší skupině prostředků, pak do Průzkumníka dat uvidíte náhodná data importovaná v souboru changefeedlabcollection .
Nastavení úlohy Stream Analytics
Azure Stream Analytics je plně spravovaná cloudová služba pro zpracování streamovaných dat v reálném čase. V tomto cvičení použijete stream analytics ke zpracování nových událostí z centra událostí (při zobrazení položky, přidání do košíku nebo nákupu), začlenění těchto událostí do analýzy dat v reálném čase a jejich odeslání do Power BI pro vizualizaci.
Na webu Azure Portal přejděte do své skupiny prostředků a pak na streamjob1 (úlohu Stream Analytics, kterou jste vytvořili v předlabovacím prostředí).
Výběr vstupů , jak je znázorněno níže.
Vyberte + Přidat vstup streamu. Pak v rozevírací nabídce vyberte Centrum událostí.
Vyplňte nový vstupní formulář následujícími podrobnostmi:
- Do pole Vstupní alias zadejte vstup.
- Vyberte možnost Vybrat centrum událostí z vašich předplatných.
- Nastavte pole Předplatné na vaše předplatné.
- Do pole oboru názvů Event Hubs zadejte název oboru názvů centra událostí, který jste vytvořili během předlabování.
- V poli Název centra událostí vyberte možnost Použít existující a v rozevírací nabídce zvolte event-hub1.
- Pole názvu zásady centra událostí nechte nastavené na výchozí hodnotu.
- Ponechte formát serializace událostí ve formátu JSON.
- Pole Kódování nechte nastavené na UTF-8.
- Pole typu komprese události ponechte nastavené na Hodnotu Žádné.
- Vyberte tlačítko Uložit.
Přejděte zpět na stránku úlohy Stream Analytics a vyberte Výstupy.
Vyberte + Přidat. Potom v rozevírací nabídce vyberte Power BI .
Pokud chcete vytvořit nový výstup Power BI pro vizualizaci průměrné ceny, proveďte následující akce:
- Do pole Alias výstupu zadejte averagePriceOutput.
- Pole Pracovní prostor skupiny nechte nastavené na Autorizovat připojení k načtení pracovních prostorů.
- Do pole Název datové sady zadejte averagePrice.
- Do pole Název tabulky zadejte averagePrice.
- Vyberte tlačítko Autorizovat a pak podle pokynů povolte připojení k Power BI.
- Vyberte tlačítko Uložit.
Pak se vraťte do streamjob1 a vyberte Upravit dotaz.
Do okna dotazu vložte následující dotaz. Dotaz AVERAGE PRICE vypočítá průměrnou cenu všech položek zobrazených uživateli, průměrnou cenu všech položek přidaných do košíků uživatelů a průměrnou cenu všech položek zakoupených uživateli. Tato metrika může pomoct společnostem elektronického obchodování rozhodnout, na jaké ceny se mají položky prodávat a do jakého inventáře investovat. Pokud je například průměrná cena zobrazených položek mnohem vyšší než průměrná cena zakoupených položek, může se společnost rozhodnout přidat do inventáře levnější položky.
/*AVERAGE PRICE*/ SELECT System.TimeStamp AS Time, Action, AVG(Price) INTO averagePriceOutput FROM input GROUP BY Action, TumblingWindow(second,5)
Potom v levém horním rohu vyberte Uložit .
Teď se vraťte do streamjob1 a vyberte tlačítko Start v horní části stránky. Spuštění služby Azure Stream Analytics může trvat několik minut, ale nakonec se zobrazí změna z "Spuštění" na "Spuštěno".
Připojení k Power BI
Power BI je cloudová sada nástrojů pro obchodní analýzu, která umožňuje analyzovat data a sdílet informace. Je to skvělý příklad toho, jak můžete strategicky vizualizovat analyzovaná data.
Přihlaste se k Power BI a přejděte do Části Pracovní prostor tak, že otevřete nabídku na levé straně stránky.
V pravém horním rohu vyberte + Vytvořit a pak výběrem řídicího panelu vytvořte řídicí panel.
V pravém horním rohu vyberte + Přidat dlaždici .
Vyberte Vlastní streamovaná data a pak vyberte tlačítko Další .
Vyberte averagePrice z VAŠÍ DATOVÉ SADY a pak vyberte Další.
V poli Typ vizualizace zvolte v rozevírací nabídce skupinový pruhový graf. V části Osa přidejte akci. Přeskočte legendu bez přidání čehokoli. Potom v další části s názvem Hodnota přidejte průměr. Vyberte Další, pak zadejte název grafu a vyberte Použít. Na řídicím panelu by se měl zobrazit nový graf.
Pokud teď chcete vizualizovat další metriky, můžete se vrátit ke streamjob1 a vytvořit tři další výstupy s následujícími poli.
a. Alias výstupu: incomingRevenueOutput, Název datové sady: incomingRevenue, Název tabulky: incomingRevenue
b. Alias výstupu: top5Output, název datové sady: top5, název tabulky: top5
c. Alias výstupu: uniqueVisitorCountOutput, Název datové sady: uniqueVisitorCount, Název tabulky: uniqueVisitorCountPak vyberte Upravit dotaz a vložte následující dotazy nad dotaz, který jste už napsali.
/*TOP 5*/ WITH Counter AS ( SELECT Item, Price, Action, COUNT(*) AS countEvents FROM input WHERE Action = 'Purchased' GROUP BY Item, Price, Action, TumblingWindow(second,30) ), top5 AS ( SELECT DISTINCT CollectTop(5) OVER (ORDER BY countEvents) AS topEvent FROM Counter GROUP BY TumblingWindow(second,30) ), arrayselect AS ( SELECT arrayElement.ArrayValue FROM top5 CROSS APPLY GetArrayElements(top5.topevent) AS arrayElement ) SELECT arrayvalue.value.item, arrayvalue.value.price, arrayvalue.value.countEvents INTO top5Output FROM arrayselect /*REVENUE*/ SELECT System.TimeStamp AS Time, SUM(Price) INTO incomingRevenueOutput FROM input WHERE Action = 'Purchased' GROUP BY TumblingWindow(hour, 1) /*UNIQUE VISITORS*/ SELECT System.TimeStamp AS Time, COUNT(DISTINCT CartID) as uniqueVisitors INTO uniqueVisitorCountOutput FROM input GROUP BY TumblingWindow(second, 5)
Dotaz TOP 5 vypočítá prvních pět položek seřazených podle počtu zakoupených položek. Tato metrika může pomoct společnostem elektronického obchodování vyhodnotit, které položky jsou nejoblíbenější, a mohou ovlivnit rozhodnutí o inzerci, cenách a inventáři společnosti.
Dotaz REVENUE vypočítá výnosy součtem cen všech položek zakoupených každou minutu. Tato metrika může pomoct společnostem elektronického obchodování vyhodnotit její finanční výkonnost a také pochopit, kdy denní doba přispívá k většině výnosů. To může mít vliv na celkovou strategii společnosti, zejména marketing.
Dotaz UNIQUE VISITORS vypočítá, kolik jedinečných návštěvníků je na webu každých pět sekund tím, že zjistí jedinečné ID košíku. Tato metrika může společnostem elektronického obchodování pomoct vyhodnotit svou aktivitu webu a strategii, jak získat další zákazníky.
Teď můžete přidávat i dlaždice pro tyto datové sady.
- V případě prvních 5 by bylo vhodné vytvořit skupinový sloupcový graf s položkami jako osou a počtem jako hodnotou.
- U výnosů by bylo vhodné provést spojnicový graf s časem jako osou a součtem cen jako hodnoty. Časové intervaly, které se mají zobrazit, by měly být co největší, aby bylo možné poskytovat co nejvíce informací.
- Pro jedinečné návštěvníky by bylo vhodné provést vizualizaci karet s počtem jedinečných návštěvníků jako hodnotou.
Takto vypadá ukázkový řídicí panel s těmito grafy:
Volitelné: Vizualizace pomocí webu elektronického obchodování
Teď se dozvíte, jak můžete pomocí nového nástroje pro analýzu dat připojit se k skutečnému webu elektronického obchodování. Pokud chcete vytvořit web elektronického obchodování, použijte databázi Azure Cosmos DB k uložení seznamu kategorií produktů, katalogu produktů a seznamu nejoblíbenějších položek.
Vraťte se na web Azure Portal a pak přejděte ke svému účtu služby Azure Cosmos DB a pak do Průzkumníka dat.
Přidejte dvě kolekce do produktů a kategorií changefeedlabdatabase - s pevnou kapacitou úložiště.
Do souboru changefeedlabdatabase přidejte další kolekci s názvem topItems a /Item jako klíč oddílu.
Vyberte kolekci topItems a v části Měřítko a nastavení nastavte hodnotu Time to Live na 30 sekund , aby se topItems aktualizoval každých 30 sekund.
Pokud chcete naplnit kolekci topItems nejčastěji zakoupenými položkami, přejděte zpět na streamjob1 a přidejte nový výstup. Vyberte Azure Cosmos DB.
Vyplňte požadovaná pole podle obrázku níže.
Pokud jste přidali volitelný dotaz TOP 5 v předchozí části cvičení, přejděte na část 5a. Pokud ne, pokračujte k části 5b.
5a. Ve streamjob1 vyberte Upravit dotaz a vložte následující dotaz do editoru dotazů Azure Stream Analytics pod dotaz TOP 5, ale nad zbývající dotazy.
SELECT arrayvalue.value.item AS Item, arrayvalue.value.price, arrayvalue.value.countEvents INTO topItems FROM arrayselect
5b. Ve streamjob1 vyberte Upravit dotaz a vložte následující dotaz do editoru dotazů Azure Stream Analytics nad všechny ostatní dotazy.
/*TOP 5*/ WITH Counter AS ( SELECT Item, Price, Action, COUNT(*) AS countEvents FROM input WHERE Action = 'Purchased' GROUP BY Item, Price, Action, TumblingWindow(second,30) ), top5 AS ( SELECT DISTINCT CollectTop(5) OVER (ORDER BY countEvents) AS topEvent FROM Counter GROUP BY TumblingWindow(second,30) ), arrayselect AS ( SELECT arrayElement.ArrayValue FROM top5 CROSS APPLY GetArrayElements(top5.topevent) AS arrayElement ) SELECT arrayvalue.value.item AS Item, arrayvalue.value.price, arrayvalue.value.countEvents INTO topItems FROM arrayselect
Otevřete EcommerceWebApp.sln a přejděte do souboru Web.config v Průzkumník řešení.
<appSettings>
V bloku přidejte identifikátor URI a PRIMÁRNÍ KLÍČ, který jste si uložili dříve, kde se zde zobrazí identifikátor URI a váš primární klíč. Pak přidejte název databáze a název kolekce, jak je uvedeno. (Tyto názvy by měly být změněnyfeedlabdatabase a changefeedlabcollection , pokud jste se rozhodli pojmenovat jinak.)Vyplňte název kolekce produktů, název kolekce kategorií a název kolekce nejvyšších položek, jak je uvedeno. (Tyto názvy by měly být produkty, kategorie a topItems , pokud se nerozhodnete pojmenovat jinak.)
Přejděte do složky Pokladna a otevřete ji v EcommerceWebApp.sln. Pak otevřete soubor Web.config v této složce.
<appSettings>
Do bloku přidejte identifikátor URI a PRIMÁRNÍ KLÍČ, který jste si uložili dříve, kde je uvedeno. Potom přidejte název databáze a název kolekce, jak je uvedeno. (Tyto názvy by měly být změněnyfeedlabdatabase a changefeedlabcollection , pokud jste se rozhodli pojmenovat jinak.)Program spustíte stisknutím klávesy Start v horní části stránky.
Teď si můžete zahrát na webu elektronického obchodování. Když zobrazíte položku, přidáte do košíku položku, změníte množství položky v košíku nebo zakoupíte položku, tyto události se předají prostřednictvím kanálu změn služby Azure Cosmos DB do centra událostí, Stream Analytics a power BI. Doporučujeme pokračovat ve spuštění DataGeneratoru, aby vygeneroval důležitá data webového provozu a na webu elektronického obchodování poskytoval realistickou sadu "horkých produktů".
Odstranění prostředků
Pokud chcete odstranit prostředky, které jste vytvořili v tomto cvičení, přejděte do skupiny prostředků na webu Azure Portal a v nabídce v horní části stránky vyberte Odstranit skupinu prostředků a postupujte podle uvedených pokynů.
Další kroky
- Další informace o kanálu změn najdete v tématu Práce s podporou kanálu změn ve službě Azure Cosmos DB