Utilisez Power BI et le pool Synapse SQL serverless pour analyser les données Azure Cosmos DB avec Synapse Link

S’APPLIQUE À : NoSQL MongoDB Gremlin

Dans cet article, vous allez apprendre à créer une base de données de pools SQL serverless et des affichages sur Synapse Link pour Azure Cosmos DB. Vous interrogerez les conteneurs Azure Cosmos DB, puis créerez un modèle avec Power BI sur ces affichages pour refléter cette requête.

Avec Azure Synapse Link, vous pouvez créer des tableaux de bord en quasi-temps réel dans Power BI pour analyser vos données Azure Cosmos DB. Ils n’ont aucun impact sur le niveau de performance et les coûts de vos charges de travail transactionnelles. Ils ne présentent pas non plus la complexité liée à la gestion des pipelines ETL. Vous pouvez utiliser les modes DirectQuery ou Import.

Notes

Vous pouvez créer des tableaux de bord Power BI en quelques clics à l’aide du portail Azure Cosmos DB. Pour plus d’informations, consultez Expérience Power BI intégrée dans le portail Azure Cosmos DB pour les comptes Synapse Link. Cela aura pour effet de créer automatiquement des vues T-SQL dans des pools SQL serverless Synapse sur vos conteneurs Azure Cosmos DB. Vous pouvez simplement télécharger le fichier.pbids qui se connecte à ces affichages T-SQL pour commencer à créer vos tableaux de bord BI.

Dans ce scénario, vous allez utiliser des données factices sur les ventes de produits superficiels dans un magasin de vente au détail des partenaires. Vous allez analyser le revenu par magasin en fonction de la proximité des ménages importants et de l’impact de la publicité pour une semaine spécifique. Dans cet article, vous allez créer deux affichages, nommés RetailSales et StoreDemographics, et une requête entre eux. Vous pouvez récupérer les exemples de données de produit à partir de ce référentiel GitHub.

Notes

Synapse Link pour l’API Gremlin est désormais en préversion. Vous pouvez activer Synapse Link dans vos graphiques nouveaux ou existants à l’aide d’Azure CLI. Pour plus d’informations sur la procédure de configuration, cliquez ici.

Prérequis

Avant de commencer, veillez à créer les ressources suivantes :

Créer une base de données et des affichages

Dans l’espace de travail Synapse, accédez à l’onglet Développer, sélectionnez l’icône + et sélectionnez Script SQL.

Add a SQL script to the Synapse Analytics workspace

Chaque espace de travail est fourni avec un point de terminaison SQL sans serveur. Après avoir créé un script SQL, à partir de la barre d’outils du haut, connectez-vous à Intégré.

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

La création d’affichages dans les bases de données MASTER ou par défaut n’est pas recommandée ni prise en charge. Créez une nouvelle base de données nommée RetailCosmosDB et un affichage SQL sur les conteneurs pour lesquels Synapse Link est activée. La commande suivante montre comment créer une base de données :

-- Create database
Create database RetailCosmosDB

Ensuite, créez plusieurs affichages sur différents conteneurs Azure Cosmos DB compatibles avec Synapse Link. Les affichages vous permettent d’utiliser T-SQL pour joindre et interroger des données Azure Cosmos DB se trouvant dans des conteneurs différents. Veillez à sélectionner la base de données RetailCosmosDB lors de la création des affichages.

Les scripts suivants montrent comment créer des affichages sur chaque conteneur. Pour des raisons de simplicité, nous allons utiliser la fonctionnalité d'inférence automatique de schéma du pool SQL serverless sur des conteneurs compatibles avec Synapse Link :

Affichage RetailSales :

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

Veillez à insérer votre région Azure Cosmos DB et la clé primaire dans le script SQL précédent. Tous les caractères du nom de la région doivent être des minuscules sans espaces. Contrairement aux autres paramètres de la commande OPENROWSET, le paramètre Container Name doit être spécifié sans guillemets.

Affichage 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

À présent, exécutez le script SQL en sélectionnant la commande Exécuter .

Interroger les affichages

Maintenant que les deux affichages sont créés, nous allons définir la requête pour les joindre comme suit :

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]

Sélectionnez Exécuter qui donne le résultat suivant à la table :

Query results after joining the StoreDemographics and RetailSales views

Affichage de modèle sur des conteneurs avec Power BI

Ensuite, ouvrez le bureau Power BI et connectez-vous au point de terminaison SQL sans serveur en procédant comme suit :

  1. Ouvrez l’application Power BI Desktop. Sélectionnez Obtenir des données et sélectionnez Plus.

  2. Choisissez Azure Synapse Analytics (SQL DW) dans la liste des options de connexion.

  3. Entrez le nom du point de terminaison SQL où se trouve la base de données. Entrez SynapseLinkBI-ondemand.sql.azuresynapse.net dans le champ Serveur Dans cet exemple, SynapseLinkBI est le nom de l’espace de travail. Remplacez-le si vous avez attribué un nom différent à votre espace de travail. Sélectionnez Requête directe pour le mode de connectivité des données, puis OK.

  4. Sélectionnez la méthode d’authentification préférée, par exemple Microsoft Entra ID.

  5. Sélectionnez la base de données RetailCosmosDB et les affichages RetailSales, StoreDemographics.

  6. Sélectionnez Charger pour charger les deux affichages dans le mode de requête directe.

  7. Sélectionnez Modèle pour créer une relation entre les deux affichages via la colonne storeId.

  8. Faites glisser la colonne StoreId de l’affichage RetailSales vers la colonne StoreId de l’affichage StoreDemographics.

  9. Sélectionnez la relation plusieurs-à-un (* : 1), car il existe plusieurs lignes avec le même ID de magasin dans la vue RetailSales. StoreDemographics n’a qu’une seule ligne d’ID de magasin (il s’agit d’une table de dimension).

À présent, accédez à la fenêtre du rapport et créez un rapport pour comparer l’importance relative de la taille du ménage au revenu moyen par magasin, en fonction de la représentation éparpillée du chiffre d’affaires et de l’index LargeHH :

  1. Sélectionnez Graphique à nuages de points.

  2. Glissez-déplacez LargeHH à partir de l’affichage StoreDemographics sur l’axe X.

  3. Glissez-déplacez Chiffre d’affaires entre l’affichage RetailSales et l’axe Y. Sélectionnez Moyenne pour connaître le nombre moyen de ventes par produit et par semaine.

  4. Glissez-déplacez productCode entre l’affichage RetailSales et la légende pour sélectionner une gamme de produits spécifique. Une fois ces options choisies, un graphique semblable à la capture d’écran suivante doit s’afficher :

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

Étapes suivantes

Expérience Power BI intégrée dans le portail Azure Cosmos DB pour les comptes Synapse Link

Utiliser T-SQL pour interroger des données d’Azure Cosmos DB à l’aide d’Azure Synapse Link

Utiliser un pool SQL serverless pour analyser Azure Open Datasets et visualiser les résultats dans Azure Synapse Studio