Partager via


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.

Important

La mise en miroir d’Azure Cosmos DB dans Microsoft Fabric est désormais disponible en préversion pour l’API NoSql. Cette fonctionnalité permet de bénéficier de toutes les capacités d’Azure Synapse Link avec de meilleures performances analytiques, la possibilité d’unifier votre patrimoine de données avec Fabric OneLake et d’ouvrir l’accès à vos données avec le format Delta Parquet. Si vous envisagez d’utiliser Azure Synapse Link, nous vous recommandons d’essayer la mise en miroir pour évaluer la compatibilité globale avec votre organisation. Bien démarrer avec la mise en miroir dans Microsoft Fabric.

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.

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.

Ajouter un script SQL à l’espace de travail Synapse Analytics

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

Autoriser le script SQL à utiliser le point de terminaison SQL sans serveur dans l’espace de travail

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 :

Résultats de la requête après avoir joint les affichages StoreDemographics et RetailSales

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 :

Rapport comparant l’importance relative de la taille du ménage au revenu moyen par magasin

É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