Durée estimée : 60-90 minutes | Coût : ~$0.01-0.05 (quelques requêtes SQL)
Prérequis : Vous devez avoir complété le module pratique Azure Cloud avant de continuer. Les ressources créées (Resource Group, Storage Account) sont nécessaires.
Objectifs de ce module
- Créer un workspace Synapse Analytics
- Connecter le Data Lake au workspace
- Interroger des fichiers CSV avec SQL Serverless
- Créer des vues pour simplifier les requêtes
- Analyser les données de ventes DataShop
1 Créer le workspace Synapse PAY-PER-USE
Le workspace Synapse est le point central pour toutes les opérations d'analytics.
Via le Portail Azure :
- Recherchez "Azure Synapse Analytics"
- Cliquez sur "+ Create"
- Onglet Basics :
- Subscription : Votre subscription
- Resource group :
rg-datashop-dev-weu-001 - Workspace name :
syn-datashop-dev-weu-001 - Region : West Europe
- Data Lake Storage Gen2 :
- Account name :
stdatashopdevweu001 - File system name :
synapse(sera créé)
- Account name :
- Onglet Security :
- SQL Server admin login :
sqladmin - Password : Choisissez un mot de passe fort
- SQL Server admin login :
- Cliquez sur "Review + create" puis "Create"
Temps de création : Le workspace prend 5-10 minutes à se déployer. Profitez-en pour lire les modules théoriques sur Synapse.
Coût minimal : Nous n'utiliserons que le SQL Serverless Pool (inclus par défaut). Pas de Dedicated SQL Pool ni de Spark Pool = pas de frais fixes. Vous ne payez que les données scannées (~$5/TB).
2 Ouvrir Synapse Studio
Synapse Studio est l'interface web pour travailler avec Synapse.
- Une fois le workspace créé, allez dans la ressource
- Cliquez sur "Open Synapse Studio" (ou allez sur web.azuresynapse.net)
- Sélectionnez votre workspace
Familiarisez-vous avec l'interface :
- Data (gauche) : Explorateur de données et bases
- Develop : Scripts SQL, notebooks Spark
- Integrate : Pipelines de données
- Monitor : Suivi des exécutions
- Manage : Configuration des pools et connexions
3 Connecter le Data Lake
Liez votre Storage Account au workspace pour accéder aux données.
- Dans Synapse Studio, allez dans Manage > Linked services
- Vérifiez que votre Storage Account est déjà lié (créé automatiquement)
- Si non, cliquez "+ New" et sélectionnez "Azure Data Lake Storage Gen2"
Vérification des données :
- Allez dans Data > Linked
- Développez votre Storage Account
- Naviguez vers
raw> vous devriez voirproducts.csv
Permission requise : Si vous ne voyez pas les fichiers, retournez dans le portail Azure et ajoutez le rôle "Storage Blob Data Contributor" à votre workspace Synapse sur le Storage Account.
4 Première requête SQL sur CSV
Interrogez directement les fichiers CSV sans les importer !
- Allez dans Develop > SQL scripts > New SQL script
- Assurez-vous que "Built-in" (serverless) est sélectionné
- Collez et exécutez cette requête :
-- Requête directe sur fichier CSV
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'https://stdatashopdevweu001.dfs.core.windows.net/raw/products.csv',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
HEADER_ROW = TRUE
) AS products
product_id | name | category | price | stock
---------- | ----------------- | ----------- | ------- | -----
1 | Laptop Pro 15 | Electronics | 1299.99 | 50
2 | Wireless Mouse | Electronics | 29.99 | 200
3 | USB-C Hub | Electronics | 49.99 | 150
...
Astuce : Remplacez
stdatashopdevweu001 par le nom de votre Storage Account si different.
Voir la théorie : Module 3 - SQL Serverless et OPENROWSET
5 Créer une base de données et des vues
Créez des vues pour simplifier l'accès aux données.
-- Créer une base de données serverless
CREATE DATABASE DataShopDB;
GO
USE DataShopDB;
GO
-- Créer un schéma pour organiser
CREATE SCHEMA analytics;
GO
-- Créer une vue pour les produits
CREATE VIEW analytics.vw_products AS
SELECT
CAST(product_id AS INT) AS product_id,
name,
category,
CAST(price AS DECIMAL(10,2)) AS price,
CAST(stock AS INT) AS stock,
CAST(created_at AS DATE) AS created_at
FROM OPENROWSET(
BULK 'https://stdatashopdevweu001.dfs.core.windows.net/raw/products.csv',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
HEADER_ROW = TRUE
) AS products;
GO
-- Créer une vue pour les commandes
CREATE VIEW analytics.vw_orders AS
SELECT
CAST(order_id AS INT) AS order_id,
customer_id,
CAST(product_id AS INT) AS product_id,
CAST(quantity AS INT) AS quantity,
CAST(order_date AS DATE) AS order_date,
status,
CAST(total_amount AS DECIMAL(10,2)) AS total_amount
FROM OPENROWSET(
BULK 'https://stdatashopdevweu001.dfs.core.windows.net/raw/orders.csv',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
HEADER_ROW = TRUE
) AS orders;
GO
-- Créer une vue pour les clients
CREATE VIEW analytics.vw_customers AS
SELECT
customer_id,
name,
email,
country,
city,
CAST(signup_date AS DATE) AS signup_date,
loyalty_tier
FROM OPENROWSET(
BULK 'https://stdatashopdevweu001.dfs.core.windows.net/raw/customers.csv',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
HEADER_ROW = TRUE
) AS customers;
GO
Pourquoi des vues ? Les vues permettent de :
- Typer correctement les colonnes (CAST)
- Masquer la complexité d'OPENROWSET
- Simplifier les requêtes futures
6 Requêtes d'analyse business
Exécutez ces requêtes pour analyser les données DataShop :
1. Chiffre d'affaires par catégorie :
USE DataShopDB;
GO
SELECT
p.category,
COUNT(DISTINCT o.order_id) AS nb_commandes,
SUM(o.quantity) AS quantite_totale,
SUM(o.total_amount) AS ca_total
FROM analytics.vw_orders o
JOIN analytics.vw_products p ON o.product_id = p.product_id
GROUP BY p.category
ORDER BY ca_total DESC;
2. Top 5 clients par chiffre d'affaires :
SELECT TOP 5
c.name AS client,
c.loyalty_tier AS niveau,
c.city AS ville,
COUNT(o.order_id) AS nb_commandes,
SUM(o.total_amount) AS ca_total
FROM analytics.vw_orders o
JOIN analytics.vw_customers c ON o.customer_id = c.customer_id
GROUP BY c.name, c.loyalty_tier, c.city
ORDER BY ca_total DESC;
3. Produits les plus vendus :
SELECT TOP 5
p.name AS produit,
p.category,
SUM(o.quantity) AS quantite_vendue,
SUM(o.total_amount) AS ca_généré
FROM analytics.vw_orders o
JOIN analytics.vw_products p ON o.product_id = p.product_id
GROUP BY p.name, p.category
ORDER BY quantite_vendue DESC;
4. Evolution des ventes par jour :
SELECT
order_date,
COUNT(order_id) AS nb_commandes,
SUM(total_amount) AS ca_jour
FROM analytics.vw_orders
GROUP BY order_date
ORDER BY order_date;
7 Exporter les résultats en Parquet
Exportez les résultats agrégés vers le container "curated" au format Parquet (plus performant).
-- Créer une table externe avec les métriques produits
CREATE EXTERNAL DATA SOURCE DataLake
WITH (
LOCATION = 'https://stdatashopdevweu001.dfs.core.windows.net'
);
GO
CREATE EXTERNAL FILE FORMAT ParquetFormat
WITH (FORMAT_TYPE = PARQUET);
GO
-- Exporter les stats produits vers Parquet
CREATE EXTERNAL TABLE analytics.product_stats
WITH (
LOCATION = 'curated/product_stats/',
DATA_SOURCE = DataLake,
FILE_FORMAT = ParquetFormat
) AS
SELECT
p.product_id,
p.name,
p.category,
p.price,
COALESCE(SUM(o.quantity), 0) AS total_sold,
COALESCE(SUM(o.total_amount), 0) AS total_revenue
FROM analytics.vw_products p
LEFT JOIN analytics.vw_orders o ON p.product_id = o.product_id
GROUP BY p.product_id, p.name, p.category, p.price;
Format Parquet : Parquet est un format columnar optimisé pour l'analytics. Les requêtes sur Parquet sont 10x plus rapides et coûtent moins cher (moins de données scannées).
Vérification - Cochez quand terminé
Ressources créées
| Ressource | Nom | Coût |
|---|---|---|
| Synapse Workspace | syn-datashop-dev-weu-001 |
~$5/TB scanné |
| Base serverless | DataShopDB |
Inclus |
Estimation du coût : Avec nos fichiers de test (~1 Ko), le coût des requêtes sera de quelques centimes. Pour des données réelles (GB), surveillez le coût dans Cost Management.