Power BI en serverloze Synapse SQL-pool gebruiken om Azure Cosmos DB-gegevens te analyseren met Synapse Link

VAN TOEPASSING OP: Nosql MongoDB Gremlin

In dit artikel leert u hoe u een serverloze SQL-pooldatabase en -weergaven bouwt via Synapse Link voor Azure Cosmos DB. U voert een query uit op de Azure Cosmos DB-containers en bouwt vervolgens een model met Power BI over die weergaven om die query weer te geven.

Met Azure Synapse Link kunt u bijna realtime dashboards bouwen in Power BI om uw Azure Cosmos DB-gegevens te analyseren. Er is geen invloed op prestaties of kosten voor uw transactionele workloads en geen complexiteit van het beheren van ETL-pijplijnen. U kunt DirectQuery- of importmodi gebruiken.

Notitie

U kunt Power BI-dashboards bouwen met slechts een paar klikken met behulp van de Azure Cosmos DB-portal. Zie De geïntegreerde Power BI-ervaring in de Azure Cosmos DB-portal voor accounts met Synapse Link voor meer informatie. Hiermee maakt u automatisch T-SQL-weergaven in serverloze Synapse SQL-pools in uw Azure Cosmos DB-containers. U kunt gewoon het .pbids-bestand downloaden dat verbinding maakt met deze T-SQL-weergaven om te beginnen met het bouwen van uw BI-dashboards.

In dit scenario gebruikt u dummygegevens over de verkoop van Surface-producten in een winkel van partners. U analyseert de omzet per winkel op basis van de nabijheid van grote huishoudens en de impact van reclame voor een specifieke week. In dit artikel maakt u twee weergaven met de naam RetailSales en StoreDemographics en een query ertussen. U kunt de voorbeeldproductgegevens ophalen uit deze GitHub-opslagplaats .

Notitie

Synapse Link voor Gremlin-API is nu in preview. U kunt Synapse Link inschakelen in uw nieuwe of bestaande grafieken met behulp van Azure CLI. Klik hier voor meer informatie over het configureren ervan.

Vereisten

Zorg ervoor dat u de volgende resources maakt voordat u begint:

Een database en weergaven maken

Ga in de Synapse-werkruimte naar het tabblad Ontwikkelen , selecteer het + pictogram en selecteer SQL Script.

Add a SQL script to the Synapse Analytics workspace

Elke werkruimte wordt geleverd met een serverloos SQL-eindpunt. Nadat u een SQL-script hebt gemaakt, maakt u vanaf de werkbalk bovenaan verbinding met ingebouwd.

Enable the SQL script to use the serverless SQL endpoint in the workspace

Het maken van weergaven in de hoofddatabase of standaarddatabases wordt niet aanbevolen of ondersteund. Maak een nieuwe database met de naam RetailCosmosDB en een SQL-weergave over de containers met Synapse Link. De volgende opdracht laat zien hoe u een database maakt:

-- Create database
Create database RetailCosmosDB

Maak vervolgens meerdere weergaven in verschillende Synapse Link-containers waarvoor Azure Cosmos DB is ingeschakeld. Met weergaven kunt u T-SQL gebruiken om azure Cosmos DB-gegevens in verschillende containers samen te voegen en er query's op uit te voeren. Zorg ervoor dat u de RetailCosmosDB-database selecteert bij het maken van de weergaven.

In de volgende scripts ziet u hoe u weergaven maakt voor elke container. Ter vereenvoudiging gebruiken we de functie voor automatische schemadeductie van serverloze SQL-pool via Synapse Link-containers:

RetailVerkoopweergave:

-- Create view for RetailSales container
CREATE VIEW  RetailSales
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>',RetailSales)
AS q1

Zorg ervoor dat u uw Azure Cosmos DB-regio en de primaire sleutel in het vorige SQL-script invoegt. Alle tekens in de regionaam moeten in kleine letters zonder spaties worden weergegeven. In tegenstelling tot de andere parameters van de OPENROWSET opdracht, moet de parameter containernaam worden opgegeven zonder aanhalingstekens eromheen.

Weergave StoreDemographics:

-- Create view for StoreDemographics container
CREATE VIEW StoreDemographics
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>', StoreDemographics)
AS q1

Voer nu het SQL-script uit door de opdracht Uitvoeren te selecteren.

Query's uitvoeren op de weergaven

Nu de twee weergaven zijn gemaakt, gaan we de query definiëren om deze twee weergaven als volgt samen te voegen:

SELECT 
sum(p.[revenue]) as revenue
,p.[advertising]
,p.[storeId]
,p.[weekStarting]
,q.[largeHH]
 FROM [dbo].[RetailSales] as p
INNER JOIN [dbo].[StoreDemographics] as q ON q.[storeId] = p.[storeId]
GROUP BY p.[advertising], p.[storeId], p.[weekStarting], q.[largeHH]

Selecteer Uitvoeren die de volgende tabel als resultaat geeft:

Query results after joining the StoreDemographics and RetailSales views

Modelweergaven over containers met Power BI

Open vervolgens power BI Desktop en maak verbinding met het serverloze SQL-eindpunt met behulp van de volgende stappen:

  1. Open de toepassing Power BI Desktop. Selecteer Gegevens ophalen en selecteer meer.

  2. Kies Azure Synapse Analytics (SQL DW) in de lijst met verbindingsopties.

  3. Voer de naam in van het SQL-eindpunt waar de database zich bevindt. Voer in SynapseLinkBI-ondemand.sql.azuresynapse.net het veld Server in. In dit voorbeeld is SynapseLinkBI de naam van de werkruimte. Vervang deze als u een andere naam hebt gegeven aan uw werkruimte. Selecteer Direct Query voor de gegevensverbindingsmodus en klik vervolgens op OK.

  4. Selecteer de voorkeursverificatiemethode, zoals Microsoft Entra-id.

  5. Selecteer de RetailCosmosDB-database en de weergaven RetailSales, StoreDemographics .

  6. Selecteer Laden om de twee weergaven in de directe querymodus te laden.

  7. Selecteer Model om een relatie tussen de twee weergaven te maken via de storeId-kolom .

  8. Sleep de kolom StoreId vanuit de weergave RetailSales naar de kolom StoreId in de weergave StoreDemographics .

  9. Selecteer de relatie Veel-op-één (*:1) omdat er meerdere rijen zijn met dezelfde winkel-id in de weergave RetailSales . StoreDemographics heeft slechts één rij winkel-id (dit is een dimensietabel).

Navigeer nu naar het rapportvenster en maak een rapport om het relatieve belang van de grootte van het huishouden te vergelijken met de gemiddelde omzet per winkel op basis van de spreidingsweergave van omzet en LargeHH-index:

  1. Selecteer Spreidingsdiagram.

  2. Sleep LargeHH vanuit de weergave StoreDemographics naar de X-as en zet deze neer.

  3. Sleep omzet uit de weergave RetailSales naar de Y-as. Selecteer Gemiddelde om de gemiddelde verkoop per product per winkel en per week te verkrijgen.

  4. Sleep de productCode vanuit de weergave RetailSales naar de legenda om een specifieke productlijn te selecteren. Nadat u deze opties hebt gekozen, ziet u een grafiek zoals in de volgende schermopname:

Report that compares the relative importance of household size to the average revenue per store

Volgende stappen

Geïntegreerde Power BI-ervaring in Azure Cosmos DB Portal voor Synapse Link-accounts

T-SQL gebruiken om query's uit te voeren op Azure Cosmos DB-gegevens met behulp van Azure Synapse Link

Serverloze SQL-pool gebruiken om Azure Open Datasets te analyseren en de resultaten te visualiseren in Azure Synapse Studio