Зовнішні та Iceberg-таблиці

Автоматизація конвеєрів даних у Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Що таке зовнішня таблиця?

Випадок використання:

  • Harbr щодня отримує файли від десятків партнерів
  • Завантажувати їх у Snowflake недоцільно

external table.png

Зовнішні таблиці

  • Дані лишаються в S3, GCS або Azure Blob — не переміщуються в Snowflake
  • Snowflake зберігає метадані: шляхи до файлів, схеми
  • Читання файлів під час запиту
Автоматизація конвеєрів даних у Snowflake

Створення зовнішньої таблиці

CREATE EXTERNAL TABLE logistics.supplier_inventory
  WITH LOCATION = @harbr_stage/inventory/
  FILE_FORMAT = (TYPE = 'PARQUET')
  AUTO_REFRESH = TRUE;
Автоматизація конвеєрів даних у Snowflake

Коли використовувати зовнішні таблиці

  • Даними володіє партнер — запитуйте без управління даними
  • Файли великі, рідко запитувані — не завантажуйте дані, що читаються раз на місяць
  • Дані не можна переміщати (комплаєнс) — файли мають лишатися на місці
  • Огляд перед імпортом — читайте сирі файли перед рішенням, що завантажувати
-- 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;
Автоматизація конвеєрів даних у Snowflake

Зовнішні таблиці vs завантаження даних

Зовнішні таблиці

  • Нульові витрати на сховище Snowflake
  • Завжди відображають поточний стан хмарного сховища
  • Найкраще для рідкісних запитів і архівів
-- Запит напряму, без завантаження
SELECT * FROM 
logistics.supplier_inventory
WHERE supplier_id = 'SUP-042';

Завантаження через COPY INTO

  • Повна продуктивність запитів Snowflake
  • Найкраще для частих запитів до «живих» даних
-- Раз завантажили — швидко запитуємо
COPY INTO logistics.delivery_events
FROM @harbr_stage/events/;
Автоматизація конвеєрів даних у Snowflake

Таблиці Apache Iceberg

  • Як коректно читати дані з S3, Azure Blob або GCS?

    • Apache
  • Apache = відкритий формат таблиць: дані не прив’язані до конкретного рушія

    • файли Parquet + шар метаданих (time travel, історія схеми, партиції)
    • надійність рівня СУБД

Знімок екрана 2026-05-11 о 12:14:31 pm.png

1 * Матеріали навчання Snowflake
Автоматизація конвеєрів даних у Snowflake

Керує Snowflake vs зовнішнє керування

Керує Snowflake

  • Snowflake володіє та записує метадані Iceberg
  • Повний доступ на читання/запис через SQL
CREATE ICEBERG TABLE 
logistics.shipments
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  BASE_LOCATION = 'iceberg/shipments/';

Керують зовні

  • Зовнішній каталог володіє метаданими — AWS Glue, Apache Polaris
CREATE ICEBERG TABLE 
logistics.partner_data
  CATALOG = 'glue_catalog'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  CATALOG_TABLE_NAME = 
  'partner.deliveries';
Автоматизація конвеєрів даних у Snowflake

¡Vamos a practicar!

Автоматизація конвеєрів даних у Snowflake

Preparing Video For Download...