Externí tabulky a Iceberg

Automatizace datových pipeline ve Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Co je externí tabulka?

Případ použití:

  • Harbr denně přijímá soubory od desítek partnerů
  • Jejich načítání do Snowflake nedává smysl

Schéma externí tabulky

Externí tabulky

  • Data zůstávají v S3, GCS nebo Azure Blob — do Snowflake se nepřesouvají
  • Snowflake ukládá metadata: cesty k souborům, schémata
  • Soubory se čtou při dotazu
Automatizace datových pipeline ve Snowflake

Vytvoření externí tabulky

CREATE EXTERNAL TABLE logistics.supplier_inventory
  WITH LOCATION = @harbr_stage/inventory/
  FILE_FORMAT = (TYPE = 'PARQUET')
  AUTO_REFRESH = TRUE;
Automatizace datových pipeline ve Snowflake

Kdy použít externí tabulky

  • Data vlastní partner — dotazujte se bez přebírání správy dat
  • Velké soubory s řídkými dotazy — vyhněte se načítání dat používaných jednou měsíčně
  • Data nelze přesunout z důvodu shody — soubory musí zůstat na původním místě
  • Průzkum před rozhodnutím — čtěte surová data před tím, než je načtete
-- Query partner inventory 
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;
Automatizace datových pipeline ve Snowflake

Externí tabulky vs. načítání dat

Externí tabulky

  • Žádné náklady na úložiště Snowflake
  • Vždy odráží aktuální stav cloudového úložiště
  • Vhodné pro archivní data s řídkými dotazy
-- Query directly, no load needed
SELECT * FROM 
logistics.supplier_inventory
WHERE supplier_id = 'SUP-042';

Načítání pomocí COPY INTO

  • Plný výkon dotazů Snowflake
  • Vhodné pro živá data s častými dotazy
-- Load once, query fast
COPY INTO logistics.delivery_events
FROM @harbr_stage/events/;
Automatizace datových pipeline ve Snowflake

Tabulky Apache Iceberg

  • Jak správně číst data z S3, Azure Blob nebo GCS?

    • Apache
  • Apache = Otevřený formát tabulek: data nejsou vázána na žádný engine

    • Soubory Parquet + vrstva metadat (time travel, historie schématu, oddíly)
    • spolehlivost na úrovni databáze

Snímek obrazovky s ukázkou Apache Iceberg

1 * Výukové materiály Snowflake
Automatizace datových pipeline ve Snowflake

Správa Snowflake vs. externí správa

Spravované Snowflake

  • Snowflake vlastní a zapisuje metadata Iceberg
  • Plný přístup pro čtení i zápis přes SQL
CREATE ICEBERG TABLE 
logistics.shipments
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  BASE_LOCATION = 'iceberg/shipments/';

Spravované externě

  • Metadata vlastní externí katalog – AWS Glue, Apache Polaris
CREATE ICEBERG TABLE 
logistics.partner_data
  CATALOG = 'glue_catalog'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  CATALOG_TABLE_NAME = 
  'partner.deliveries';
Automatizace datových pipeline ve Snowflake

Pojďme procvičovat!

Automatizace datových pipeline ve Snowflake

Preparing Video For Download...