Projet Pratique

DataShop Analytics - Analyse de données avec Synapse

Projet Unifié : DataShop Analytics

Utilisez Azure Synapse pour analyser les données e-commerce stockées dans votre Data Lake. Ce module utilise le SQL Serverless (pay-per-query) pour minimiser les coûts.

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

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 :
  1. Recherchez "Azure Synapse Analytics"
  2. Cliquez sur "+ Create"
  3. 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éé)
  4. Onglet Security :
    • SQL Server admin login : sqladmin
    • Password : Choisissez un mot de passe fort
  5. 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.

  1. Une fois le workspace créé, allez dans la ressource
  2. Cliquez sur "Open Synapse Studio" (ou allez sur web.azuresynapse.net)
  3. 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.

  1. Dans Synapse Studio, allez dans Manage > Linked services
  2. Vérifiez que votre Storage Account est déjà lié (créé automatiquement)
  3. Si non, cliquez "+ New" et sélectionnez "Azure Data Lake Storage Gen2"
Vérification des données :
  1. Allez dans Data > Linked
  2. Développez votre Storage Account
  3. Naviguez vers raw > vous devriez voir products.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 !

  1. Allez dans Develop > SQL scripts > New SQL script
  2. Assurez-vous que "Built-in" (serverless) est sélectionné
  3. 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.

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.

Prochaine étape

Analytics en place ! Continuez avec Azure DevOps pour automatiser le déploiement.

Module suivant : Azure DevOps - Pratique →