Tabele zewnętrzne i Iceberg

Automatyzacja potoków danych w Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Czym jest tabela zewnętrzna?

Przypadek użycia:

  • Harbr codziennie otrzymuje pliki od dziesiątek partnerów
  • Ładowanie ich do Snowflake nie ma sensu

tabela zewnętrzna.png

Tabele zewnętrzne

  • Dane pozostają w S3, GCS lub Azure Blob — nie są przenoszone do Snowflake
  • Snowflake przechowuje metadane: ścieżki plików, schematy
  • Pliki są odczytywane w czasie wykonywania zapytania
Automatyzacja potoków danych w Snowflake

Tworzenie tabeli zewnętrznej

CREATE EXTERNAL TABLE logistics.supplier_inventory
  WITH LOCATION = @harbr_stage/inventory/
  FILE_FORMAT = (TYPE = 'PARQUET')
  AUTO_REFRESH = TRUE;
Automatyzacja potoków danych w Snowflake

Kiedy używać tabel zewnętrznych

  • Dane należą do partnera — zapytania bez przejmowania zarządzania danymi
  • Duże pliki, rzadko odpytywane — unikanie ładowania danych dostępnych raz w miesiącu
  • Dane nie mogą być przenoszone ze względów zgodności — pliki muszą pozostać w pierwotnej lokalizacji
  • Eksploracja przed zatwierdzeniem — odczyt surowych plików przed podjęciem decyzji o ładowaniu
-- 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;
Automatyzacja potoków danych w Snowflake

Tabele zewnętrzne a ładowanie danych

Tabele zewnętrzne

  • Zerowy koszt przechowywania w Snowflake
  • Zawsze odzwierciedla bieżący stan magazynu w chmurze
  • Najlepsze do rzadko odpytywanych, archiwalnych danych
-- Query directly, no load needed
SELECT * FROM 
logistics.supplier_inventory
WHERE supplier_id = 'SUP-042';

Ładowanie za pomocą COPY INTO

  • Pełna wydajność zapytań Snowflake
  • Najlepsze do często odpytywanych, aktualnych danych
-- Load once, query fast
COPY INTO logistics.delivery_events
FROM @harbr_stage/events/;
Automatyzacja potoków danych w Snowflake

Tabele Apache Iceberg

  • Jak poprawnie odczytywać dane z S3, Azure Blob lub GCS?

    • Apache
  • Apache = Otwarty format tabel: dane niezwiązane z żadnym silnikiem

    • Pliki Parquet + warstwa metadanych (podróż w czasie, historia schematu, partycje)
    • niezawodność na poziomie bazy danych

Zrzut ekranu 2026-05-11 o 12.14.31.png

1 * Materiały szkoleniowe Snowflake
Automatyzacja potoków danych w Snowflake

Zarządzane przez Snowflake vs zarządzane zewnętrznie

Zarządzane przez Snowflake

  • Snowflake jest właścicielem i zapisuje metadane Iceberg
  • Pełny dostęp do odczytu i zapisu z poziomu SQL
CREATE ICEBERG TABLE 
logistics.shipments
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  BASE_LOCATION = 'iceberg/shipments/';

Zarządzane zewnętrznie

  • Metadanymi zarządza zewnętrzny katalog – AWS Glue, Apache Polaris
CREATE ICEBERG TABLE 
logistics.partner_data
  CATALOG = 'glue_catalog'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  CATALOG_TABLE_NAME = 
  'partner.deliveries';
Automatyzacja potoków danych w Snowflake

Ćwiczmy!

Automatyzacja potoków danych w Snowflake

Preparing Video For Download...