Tables externes et Iceberg

Automatisation des pipelines de données dans Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Qu’est-ce qu’une table externe ?

Cas d’usage :

  • Harbr reçoit des fichiers de dizaines de partenaires chaque jour
  • Les charger dans Snowflake n’a pas de sens

table externe.png

Tables externes

  • Les données restent dans S3, GCS ou Azure Blob — jamais dans Snowflake
  • Snowflake stocke les métadonnées : chemins de fichiers, schémas
  • Lecture des fichiers au moment de la requête
Automatisation des pipelines de données dans Snowflake

Créer une table externe

CREATE EXTERNAL TABLE logistics.supplier_inventory
  WITH LOCATION = @harbr_stage/inventory/
  FILE_FORMAT = (TYPE = 'PARQUET')
  AUTO_REFRESH = TRUE;
Automatisation des pipelines de données dans Snowflake

Quand utiliser des tables externes

  • Données détenues par un partenaire — interroger sans gérer les données
  • Fichiers volumineux, peu consultés — éviter de charger des données mensuelles
  • Données immobiles pour conformité — doivent rester à l’emplacement d’origine
  • Explorer avant de s’engager — lire les fichiers bruts avant de décider quoi charger
-- Interroger le stock des partenaires 
SELECT supplier_id,
       COUNT(*)       AS file_count,
       SUM(quantity)  AS total_units
FROM logistics.supplier_inventory
WHERE delivery_date >= '2024-01-01'
GROUP BY supplier_id;
Automatisation des pipelines de données dans Snowflake

Tables externes vs chargement des données

Tables externes

  • Coût de stockage Snowflake nul
  • Reflètent toujours l’état actuel du stockage cloud
  • Idéales pour des données peu interrogées/archivées
-- Requête directe, sans chargement
SELECT * FROM 
logistics.supplier_inventory
WHERE supplier_id = 'SUP-042';

Chargement avec COPY INTO

  • Pleines performances de requête Snowflake
  • Idéal pour des données fréquentes et actives
-- Charger une fois, requêter vite
COPY INTO logistics.delivery_events
FROM @harbr_stage/events/;
Automatisation des pipelines de données dans Snowflake

Tables Apache Iceberg

  • Comment lire correctement des données depuis S3, Azure Blob ou GCS ?

    • Apache
  • Apache = format de table ouvert : données non liées à un moteur

    • Fichiers Parquet + couche de métadonnées (voyage dans le temps, historique de schéma, partitions)
    • Fiabilité de niveau base de données

Capture d’écran du 11/05/2026 à 12:14:31.png

1 * Documentation Snowflake
Automatisation des pipelines de données dans Snowflake

Gérées par Snowflake vs gérées en externe

Gérées par Snowflake

  • Snowflake possède et écrit les métadonnées Iceberg
  • Accès lecture/écriture complet via SQL
CREATE ICEBERG TABLE 
logistics.shipments
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  BASE_LOCATION = 'iceberg/shipments/';

Gérées en externe

  • Le catalogue externe possède les métadonnées — AWS Glue, Apache Polaris
CREATE ICEBERG TABLE 
logistics.partner_data
  CATALOG = 'glue_catalog'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  CATALOG_TABLE_NAME = 
  'partner.deliveries';
Automatisation des pipelines de données dans Snowflake

Passons à la pratique !

Automatisation des pipelines de données dans Snowflake

Preparing Video For Download...