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 — elles n’entrent jamais dans Snowflake
  • Snowflake stocke les métadonnées : chemins de fichiers, schémas
  • Lecture des fichiers à l’exécution 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 interrogés — éviter de charger des données consultées une fois par mois
  • Données immobiles pour conformité — les fichiers doivent rester à l’emplacement d’origine
  • Explorer avant de s’engager — lire les fichiers bruts avant de décider quoi charger
-- Interroger l’inventaire du partenaire 
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

  • Aucun coût de stockage Snowflake
  • Reflètent toujours l’état actuel du stockage cloud
  • Idéales pour des données peu interrogées ou archivées
-- Interroger directement, aucun chargement requis
SELECT * FROM 
logistics.supplier_inventory
WHERE supplier_id = 'SUP-042';

Chargement avec COPY INTO

  • Performance complète des requêtes Snowflake
  • Idéal pour des données fréquentes et actives
-- Charger une fois, interroger rapidement
COPY INTO logistics.delivery_events
FROM @harbr_stage/events/;
Automatisation des pipelines de données dans Snowflake

Tables Apache Iceberg

  • Comment lire correctement les 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 2026-05-11 à 12.14.31.png

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

Gérées par Snowflake vs gérées à l’externe

Gérées par Snowflake

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

Gérées à l’externe

  • Un 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...