Dela via


Använda Azure Cosmos DB-ändringsflöde för att visualisera dataanalys i realtid

GÄLLER FÖR: NoSQL

Azure Cosmos DB-ändringsflödet är en mekanism för att få ett kontinuerligt och inkrementellt flöde av poster från en Azure Cosmos DB-container när dessa poster skapas eller ändras. Stöd för ändringsflöde fungerar genom att lyssna på containern för eventuella ändringar. Funktionen returnerar sedan den sorterade listan över dokument som ändrats i den ordning de ändrades. Mer information om ändringsflöde finns i artikeln arbeta med ändringsflöde .

Den här artikeln beskriver hur ändringsflöde kan användas av ett e-handelsföretag för att förstå användarmönster, utföra dataanalys i realtid och visualisering. Du analyserar händelser som att en användare visar ett objekt, lägger till ett objekt i kundvagnen eller köper ett objekt. När en av dessa händelser inträffar skapas en ny post och ändringsflödesloggarna för posten. Ändringsflöde utlöser sedan en serie steg som resulterar i visualisering av mått som analyserar företagets prestanda och aktivitet. Exempelmått som du kan visualisera är intäkter, unika webbplatsbesökare, de mest populära objekten och genomsnittspriset för de objekt som visas jämfört med att läggas till i en kundvagn jämfört med köpta. Dessa exempelmått kan hjälpa ett e-handelsföretag att utvärdera sin webbplats popularitet, utveckla sina annonserings- och prissättningsstrategier och fatta beslut om vilket lager som ska investeras i.

Lösningskomponenter

Följande diagram representerar det dataflöde och de komponenter som ingår i lösningen:

Visuellt projekt

  1. Datagenerering: Datasimulatorn används för att generera detaljhandelsdata som representerar händelser som att en användare visar ett objekt, lägger till ett objekt i kundvagnen och köper ett objekt. Du kan generera en stor uppsättning exempeldata med hjälp av datageneratorn. De genererade exempeldata innehåller dokument i följande format:

    {
      "CartID": 2486,
      "Action": "Viewed",
      "Item": "Women's Denim Jacket",
      "Price": 31.99
    }
    
  2. Azure Cosmos DB: De genererade data lagras i en Azure Cosmos DB-container.

  3. Ändringsflöde: Ändringsflödet lyssnar efter ändringar i Azure Cosmos DB-containern. Varje gång ett nytt dokument läggs till i samlingen (dvs. när en händelse inträffar när en sådan användare visar ett objekt, lägger till ett objekt i kundvagnen eller köper ett objekt) utlöser ändringsflödet en Azure-funktion.

  4. Azure-funktion: Azure-funktionen bearbetar nya data och skickar dem till Azure Event Hubs.

  5. Azure-händelsehubb: Händelsehubben lagrar dessa händelser och skickar dem till Azure Stream Analytics för att utföra ytterligare analys.

  6. Azure Stream Analytics: Azure Stream Analytics definierar frågor för att bearbeta händelserna och utföra dataanalys i realtid. Dessa data skickas sedan till Microsoft Power BI.

  7. Power BI: Power BI används för att visualisera data som skickas av Azure Stream Analytics. Du kan skapa en instrumentpanel för att se hur måtten ändras i realtid.

Förutsättningar

  • Microsoft .NET Framework 4.7.1 eller senare

  • Microsoft .NET Core 2.1 (eller senare)

  • Visual Studio med utveckling av Universell Windows-plattform, .NET-skrivbordsutveckling och arbetsbelastningar för ASP.NET och webbutveckling

  • Microsoft Azure-prenumeration

  • Microsoft Power BI-konto

  • Ladda ned Azure Cosmos DB:s ändringsflödeslabb från GitHub.

Skapa Azure-resurser

Skapa Azure-resurserna: Azure Cosmos DB, lagringskonto, händelsehubb och Stream Analytics som krävs av lösningen. Du distribuerar dessa resurser via en Azure Resource Manager-mall. Använd följande steg för att distribuera dessa resurser:

  1. Ange Windows PowerShell-körningsprincipen till Obegränsad. Det gör du genom att öppna Windows PowerShell som administratör och köra följande kommandon:

    Get-ExecutionPolicy
    Set-ExecutionPolicy Unrestricted 
    
  2. Från GitHub-lagringsplatsen som du laddade ned i föregående steg går du till mappen Azure Resource Manager och öppnar filen med namnet parameters.json fil.

  3. Ange värden för cosmosdbaccount_nameparametrarna , eventhubnamespace_name, storageaccount_name, enligt parameters.json fil. Du måste använda de namn som du ger till var och en av dina resurser senare.

  4. Från Windows PowerShell går du till mappen Azure Resource Manager och kör följande kommando:

    .\deploy.ps1
    
  5. När du uppmanas till det anger du ditt Azure-prenumerations-ID, ändrarfeedlab för resursgruppens namn och kör1 som distributionsnamn. När resurserna börjar distribueras kan det ta upp till 10 minuter innan de har slutförts.

Skapa en databas och samlingen

Nu ska du skapa en samling för att hålla e-handelswebbplatshändelser. När en användare visar ett objekt, lägger till ett objekt i kundvagnen eller köper ett objekt får samlingen en post som innehåller åtgärden ("visad", "tillagd" eller "köpt"), namnet på det aktuella objektet, priset på det aktuella objektet och ID-numret för den aktuella användarvagnen.

  1. Gå till Azure-portalen och leta reda på det Azure Cosmos DB-konto som har skapats av malldistributionen.

  2. I fönstret Datautforskaren väljer du Ny samling och fyller i formuläret med följande information:

    • För fältet Databas-ID väljer du Skapa ny och anger sedan changefeedlabdatabase. Låt rutan Etablera databasdataflöde vara avmarkerad.
    • För fältet Samlings-ID anger du changefeedlabcollection.
    • För fältet Partitionsnyckel anger du /Item. Detta är skiftlägeskänsligt, så se till att du anger det korrekt.
    • För fältet Dataflöde anger du 10000.
    • Välj knappen OK.
  3. Skapa sedan en annan samling med namnet lån för bearbetning av ändringsflöde . Samlingen leases samordnar bearbetningen av ändringsflödet mellan flera arbetare. En separat samling används för att lagra lånen med ett lån per partition.

  4. Gå tillbaka till fönstret Datautforskaren och välj Ny samling och fyll i formuläret med följande information:

    • För fältet Databas-ID väljer du Använd befintlig och anger sedan changefeedlabdatabase.
    • För fältet Samlings-ID anger du lån.
    • För Lagringskapacitet väljer du Fast.
    • Låt fältet Dataflöde vara inställt på standardvärdet.
    • Välj knappen OK.

Hämta niska veze och nycklar

Hämta Azure Cosmos DB-niska veze

  1. Gå till Azure-portalen och leta reda på det Azure Cosmos DB-konto som skapas av malldistributionen.

  2. Gå till fönstret Nycklar , kopiera DEN PRIMÄRA ANSLUTNINGSSTRÄNGen och kopiera den till ett anteckningsblock eller ett annat dokument som du kommer att ha åtkomst till i hela labbet. Du bör märka den som Azure Cosmos DB-anslutningssträng. Du måste kopiera strängen till koden senare, så anteckna och kom ihåg var du lagrar den.

Hämta lagringskontonyckeln och niska veze

Med Azure Storage-konton kan användare lagra data. I den här labbuppgiften använder du ett lagringskonto för att lagra data som används av Azure-funktionen. Azure-funktionen utlöses när någon ändring görs i samlingen.

  1. Gå tillbaka till resursgruppen och öppna lagringskontot som du skapade tidigare

  2. Välj Åtkomstnycklar på menyn till vänster.

  3. Kopiera värdena under nyckel 1 till ett anteckningsblock eller ett annat dokument som du kommer att ha åtkomst till i hela labbet. Du bör märka nyckeln som lagringsnyckel och anslutningssträngensom Lagringsanslutningssträng. Du måste kopiera dessa strängar till koden senare, så anteckna och kom ihåg var du lagrar dem.

Hämta händelsehubbens namnområde niska veze

En Azure-händelsehubb tar emot händelsedata, lagrar, bearbetar och vidarebefordrar data. I den här labbuppgiften får händelsehubben ett dokument varje gång en ny händelse inträffar (när ett objekt visas av en användare, läggs till i en användares kundvagn eller köps av en användare) och vidarebefordrar sedan dokumentet till Azure Stream Analytics.

  1. Gå tillbaka till resursgruppen och öppna Event Hubs-namnområdet som du skapade och namngav i prelab.

  2. Välj Principer för delad åtkomst på menyn till vänster.

  3. Välj RootManageSharedAccessKey. Kopiera anslutningssträngens primära nyckel till ett anteckningsblock eller ett annat dokument som du kommer att ha åtkomst till i hela labbet. Du bör märka den som Event Hub-namnrymd niska veze. Du måste kopiera strängen till koden senare, så anteckna och kom ihåg var du lagrar den.

Konfigurera Azure-funktionen för att läsa ändringsflödet

När ett nytt dokument skapas eller ett aktuellt dokument ändras i en Azure Cosmos DB-container lägger ändringsflödet automatiskt till det ändrade dokumentet i dess historik över samlingsändringar. Nu ska du skapa och köra en Azure-funktion som bearbetar ändringsflödet. När ett dokument skapas eller ändras i samlingen som du skapade utlöses Azure-funktionen av ändringsflödet. Sedan skickar Azure-funktionen det ändrade dokumentet till händelsehubben.

  1. Gå tillbaka till den lagringsplats som du klonade på enheten.

  2. Högerklicka på filen med namnet ChangeFeedLabSolution.sln och välj Öppna med Visual Studio.

  3. Gå till local.settings.json i Visual Studio. Använd sedan de värden som du registrerade tidigare för att fylla i blankstegen.

  4. Gå till ChangeFeedProcessor.cs. Utför följande åtgärder i parametrarna för funktionen Kör :

    • Ersätt texten DITT SAMLINGSNAMN HÄR med namnet på samlingen. Om du har följt tidigare instruktioner är namnet på din samling changefeedlabcollection.
    • Ersätt texten YOUR LEASES COLLECTION NAME HERE med namnet på din lånesamling. Om du följde tidigare instruktioner är namnet på din lånesamling lån.
    • Överst i Visual Studio kontrollerar du att rutan Startprojekt till vänster om den gröna pilen säger ChangeFeedFunction.
    • Välj Starta överst på sidan för att köra programmet
    • Du kan bekräfta att funktionen körs när konsolappen säger "Jobbvärd startade".

Infoga data i Azure Cosmos DB

Om du vill se hur ändringsflödet bearbetar nya åtgärder på en e-handelswebbplats måste du simulera data som representerar användare som visar objekt från produktkatalogen, lägger till dessa objekt i sina kundvagnar och köper objekten i kundvagnen. Dessa data är godtyckliga och används för att replikera hur data på en e-handelswebbplats skulle se ut.

  1. Gå tillbaka till lagringsplatsen i Istraživač datoteka och högerklicka på ChangeFeedFunction.sln för att öppna den igen i ett nytt Visual Studio-fönster.

  2. Gå till filen App.config . I blocket <appSettings> lägger du till slutpunkten och den unika PRIMÄRNYCKEL som för ditt Azure Cosmos DB-konto som du hämtade tidigare.

  3. Lägg till i samlings- och databasnamnen. (Dessa namn bör vara changefeedlabcollection och changefeedlabdatabase om du inte väljer att namnge dina på ett annat sätt.)

    Uppdatera niska veze

  4. Spara ändringarna på alla filer som har redigerats.

  5. Överst i Visual Studio kontrollerar du att rutan Startprojekt till vänster på den gröna pilen säger DataGenerator. Välj sedan Starta överst på sidan för att köra programmet.

  6. Vänta tills programmet körs. Stjärnorna innebär att data kommer in! Håll programmet igång – det är viktigt att massor av data samlas in.

  7. Om du navigerar till Azure-portalen går du sedan till Azure Cosmos DB-kontot i resursgruppen och sedan till Datautforskaren ser du de slumpmässiga data som importerats i ditt changefeedlabcollection .

    Data som genereras i portalen

Konfigurera ett stream analytics-jobb

Azure Stream Analytics är en fullständigt hanterad molntjänst för realtidsbearbetning av strömmande data. I den här labbuppgiften använder du streamanalys för att bearbeta nya händelser från händelsehubben (när ett objekt visas, läggs till i en kundvagn eller köps), införliva dessa händelser i realtidsdataanalys och skicka dem till Power BI för visualisering.

  1. Från Azure-portalen går du till resursgruppen och sedan till streamjob1 (stream analytics-jobbet som du skapade i förlabbet).

  2. Välj Indata enligt nedan.

    Skapa indata

  3. Välj + Lägg till strömindata. Välj sedan Händelsehubb i den nedrullningsbara menyn.

  4. Fyll i det nya indataformuläret med följande information:

    • I fältet Indataalias anger du indata.
    • Välj alternativet Välj händelsehubb från dina prenumerationer.
    • Ange prenumerationsfältet till din prenumeration.
    • I fältet Event Hubs-namnområde anger du namnet på händelsehubbens namnområde som du skapade under förlabbet.
    • I fältet Händelsehubbnamn väljer du alternativet Använd befintlig och väljer event-hub1 på den nedrullningsbara menyn.
    • Lämna fältet Event Hub-principnamn inställt på standardvärdet.
    • Lämna formatet händelse serialisering som JSON.
    • Låt kodningsfältet vara inställt på UTF-8.
    • Lämna fältet Händelsekomprimeringstyp inställt på Ingen.
    • Klicka på knappen Spara.
  5. Gå tillbaka till jobbsidan för stream analytics och välj Utdata.

  6. Markera + Lägg till. Välj sedan Power BI i den nedrullningsbara menyn.

  7. Utför följande åtgärder för att skapa ett nytt Power BI-utdata för att visualisera genomsnittspriset:

    • I fältet Utdataalias anger du averagePriceOutput.
    • Lämna fältet Grupparbetsyta inställt på Auktorisera anslutning för att läsa in arbetsytor.
    • I fältet Datauppsättningsnamn anger du averagePrice.
    • I fältet Tabellnamn anger du averagePrice.
    • Välj knappen Auktorisera och följ sedan anvisningarna för att auktorisera anslutningen till Power BI.
    • Klicka på knappen Spara.
  8. Gå sedan tillbaka till streamjob1 och välj Redigera fråga.

    Redigera fråga

  9. Klistra in följande fråga i frågefönstret. Frågan GENOMSNITTLIGT PRIS beräknar genomsnittspriset för alla objekt som visas av användare, genomsnittspriset för alla objekt som läggs till i användarnas kundvagnar och det genomsnittliga priset för alla artiklar som köps av användare. Det här måttet kan hjälpa e-handelsföretag att bestämma vilka priser som ska säljas till och vilka lager som ska investeras i. Om det genomsnittliga priset för objekt som visas till exempel är mycket högre än det genomsnittliga priset för köpta artiklar kan ett företag välja att lägga till billigare artiklar i lagret.

    /*AVERAGE PRICE*/      
    SELECT System.TimeStamp AS Time, Action, AVG(Price)  
     INTO averagePriceOutput  
     FROM input  
     GROUP BY Action, TumblingWindow(second,5) 
    
  10. Välj sedan Spara i det övre vänstra hörnet.

  11. Gå tillbaka till streamjob1 och välj knappen Start överst på sidan. Azure Stream Analytics kan ta några minuter att starta, men så småningom kommer du att se att det ändras från "Starta" till "Körs".

Anslut till Power BI

Power BI är suite business analytics-verktyg för att analysera data och dela information. Det är ett bra exempel på hur du strategiskt kan visualisera de analyserade data.

  1. Logga in på Power BI och gå till Min arbetsyta genom att öppna menyn till vänster på sidan.

  2. Välj + Skapa i det övre högra hörnet och välj sedan Instrumentpanel för att skapa en instrumentpanel.

  3. Välj + Lägg till panel i det övre högra hörnet.

  4. Välj Anpassade strömmande data och välj sedan knappen Nästa .

  5. Välj averagePrice från DINA DATAUPPSÄTTNINGar och välj sedan Nästa.

  6. I fältet Visualiseringstyp väljer du Grupperat stapeldiagram på den nedrullningsbara menyn. Under Axel lägger du till åtgärd. Hoppa över förklaring utan att lägga till något. Under nästa avsnitt med namnet Värde lägger du sedan till avg. Välj Nästa, sedan rubrik diagrammet och välj Tillämpa. Du bör se ett nytt diagram på instrumentpanelen!

  7. Om du nu vill visualisera fler mått kan du gå tillbaka till streamjob1 och skapa ytterligare tre utdata med följande fält.

    a. Utdataalias: incomingRevenueOutput, Dataset name: incomingRevenue, Table name: incomingRevenue
    b. Utdataalias: top5Output, Datauppsättningsnamn: top5, Tabellnamn: top5
    c. Utdataalias: uniqueVisitorCountOutput, Dataset name: uniqueVisitorCount, Table name: uniqueVisitorCount

    Välj sedan Redigera fråga och klistra in följande frågor ovanför den du redan skrev.

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

    Top 5-frågan beräknar de fem översta objekten, rangordnade efter antalet gånger som de har köpts. Det här måttet kan hjälpa e-handelsföretag att utvärdera vilka artiklar som är mest populära och kan påverka företagets beslut om annonsering, prissättning och inventering.

    Frågan REVENUE beräknar intäkter genom att summera priserna för alla artiklar som köpts varje minut. Det här måttet kan hjälpa e-handelsföretag att utvärdera sina ekonomiska resultat och även förstå vilka tider på dagen som bidrar till de flesta intäkter. Detta kan påverka företagets övergripande strategi, särskilt marknadsföring.

    Frågan UNIKA BESÖKARE beräknar hur många unika besökare som finns på webbplatsen var femte sekund genom att identifiera unika kundvagns-ID:er. Det här måttet kan hjälpa e-handelsföretag att utvärdera sin webbplatsaktivitet och strategiisera hur man skaffar fler kunder.

  8. Nu kan du även lägga till paneler för dessa datauppsättningar.

    • För Topp 5 är det klokt att göra ett grupperat stapeldiagram med objekten som axel och antal som värde.
    • För Intäkter är det klokt att göra ett linjediagram med tiden som axel och summan av priserna som värde. Tidsfönstret som ska visas bör vara det största möjliga för att kunna leverera så mycket information som möjligt.
    • För Unika besökare är det klokt att göra en kortvisualisering med antalet unika besökare som värde.

    Så här ser en exempelinstrumentpanel ut med följande diagram:

    Skärmbild som visar en exempelinstrumentpanel med diagram med namnet Genomsnittligt pris för objekt efter åtgärd, unika besökare, intäkter och de 5 vanligaste objekten som köpts.

Valfritt: Visualisera med en e-handelswebbplats

Nu kommer du att se hur du kan använda ditt nya dataanalysverktyg för att ansluta till en riktig e-handelswebbplats. För att skapa e-handelswebbplatsen använder du en Azure Cosmos DB-databas för att lagra listan över produktkategorier, produktkatalogen och en lista över de mest populära objekten.

  1. Gå tillbaka till Azure-portalen och sedan till ditt Azure Cosmos DB-konto och sedan till Datautforskaren.

    Lägg till två samlingar under changefeedlabdatabase-produkter - och kategorier med fast lagringskapacitet.

    Lägg till en annan samling under changefeedlabdatabase med namnet topItems och /Item som partitionsnyckel.

  2. Välj samlingen topItems och under Skala och inställningar anger du Time to Live till 30 sekunder så att topItems uppdateras var 30:e sekund.

    Time to live

  3. För att fylla i samlingen topItems med de mest köpta objekten går du tillbaka till streamjob1 och lägger till en ny utdata. Välj Azure Cosmos DB.

  4. Fyll i de obligatoriska fälten enligt bilden nedan.

    Azure Cosmos DB-utdata

  5. Om du har lagt till den valfria TOP 5-frågan i föregående del av labbet fortsätter du till del 5a. Om inte fortsätter du till del 5b.

    5a. I streamjob1 väljer du Redigera fråga och klistrar in följande fråga i Azure Stream Analytics-frågeredigeraren under TOP 5-frågan men ovanför resten av frågorna.

    SELECT arrayvalue.value.item AS Item, arrayvalue.value.price, arrayvalue.value.countEvents
    INTO topItems
    FROM arrayselect
    

    5b. I streamjob1 väljer du Redigera fråga och klistrar in följande fråga i Azure Stream Analytics-frågeredigeraren framför alla andra frågor.

    /*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
    
  6. Öppna EcommerceWebApp.sln och gå till filen Web.config i Istraživač rešenja.

  7. <appSettings> I blocket lägger du till den URI och PRIMÄRNYCKEL som du sparade tidigare där det står din URI här och din primära nyckel här. Lägg sedan till databasnamnet och samlingsnamnet enligt angivet. (Dessa namn bör vara changefeedlabdatabase och changefeedlabcollection om du inte väljer att namnge dina på ett annat sätt.)

    Fyll i produktsamlingens namn, samlingsnamn för kategorier och samlingsnamnet för de vanligaste objekten enligt beskrivningen. (Dessa namn bör vara produkter, kategorier och topItems om du inte väljer att namnge dina på ett annat sätt.)

  8. Gå till och öppna mappen Checkout i EcommerceWebApp.sln. Öppna sedan filen Web.config i mappen.

  9. I blocket <appSettings> lägger du till den URI och PRIMÄRNYCKEL som du sparade tidigare, där det anges. Lägg sedan till databasnamnet och samlingsnamnet enligt angivet. (Dessa namn bör vara changefeedlabdatabase och changefeedlabcollection om du inte väljer att namnge dina på ett annat sätt.)

  10. Tryck på Start överst på sidan för att köra programmet.

  11. Nu kan du leka på e-handelswebbplatsen. När du visar ett objekt lägger du till ett objekt i kundvagnen, ändrar antalet av ett objekt i kundvagnen eller köper ett objekt. Dessa händelser skickas via Azure Cosmos DB-ändringsflödet till händelsehubben, Stream Analytics och sedan Power BI. Vi rekommenderar att du fortsätter att köra DataGenerator för att generera betydande webbtrafikdata och tillhandahålla en realistisk uppsättning "Heta produkter" på e-handelswebbplatsen.

Ta bort resurserna

Om du vill ta bort de resurser som du skapade under den här labbuppgiften går du till resursgruppen på Azure-portalen och väljer sedan Ta bort resursgrupp på menyn överst på sidan och följer anvisningarna.

Nästa steg