Сховища, формати файлів і COPY INTO

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

Emily Melhuish

Technical Curriculum Developer, Snowflake

Snowflake підтримує багато робочих навантажень

Знімок екрана 2026-05-11 о 11:52:34 am.png

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

Приклад конвеєра

 

 

Знімок екрана 2026-05-11 о 10:48:51 am.png

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

Знайомтесь: Harbr

Фейковий логотип Harbr

Про Harbr

  • Глобальна платформа логістики та ланцюгів постачання
  • Використовує Snowflake для відстеження відправлень, запасів складу та показників доставки
  • Інтегрує дані із систем постачальників у різних регіонах
Автоматизація конвеєрів даних у Snowflake

Проблема завантаження даних

Схема завантаження даних

Stage = тимчасове місце зберігання

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

Типи сховищ

Два типи сховищ

Внутрішні сховища

  • Користувацьке
    • Особиста staging-область для одного користувача
  • Табличне
    • Прив’язане до конкретної таблиці
  • Іменоване
    • Об’єкт бази даних, створюється в схемі

Зовнішнє сховище

  • Іменоване
    • Вказує на хмарного провайдера
Автоматизація конвеєрів даних у Snowflake

Параметри сховища

Directory Table

CREATE STAGE harbr_stage
  DIRECTORY = (ENABLE = TRUE)

Шифрування внутрішніх сховищ

ENCRYPTION = (TYPE = SNOWFLAKE_FULL)
ENCRYPTION = (TYPE = SNOWFLAKE_SSE)

Шифрування зовнішніх сховищ

ENCRYPTION = 
([ TYPE = 'AWS_CSE' ] MASTER_KEY = '') 

ENCRYPTION = 
([ TYPE = 'AWS_SSE_S3' ]) 

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

Формати файлів

  • Структуровані формати: CSV зі специфічними роздільниками, рядками заголовків, правилами лапок
  • Напівструктуровані формати: JSON, Parquet, Avro, ORC і XML.

    • Завантаження безпосередньо у стовпець VARIANT
    • Одноразові правила парсингу, повторне використання для всіх завантажень
  • Оновіть об’єкт формату один раз

SQL

CREATE FILE FORMAT harbr_csv_format
  TYPE = 'CSV'
  FIELD_DELIMITER = ','
  SKIP_HEADER = 1;
Автоматизація конвеєрів даних у Snowflake

COPY INTO

Завантаження з іменованого сховища з іменованим форматом

COPY INTO logistics.shipments
FROM @harbr_internal_stage/shipments/
FILE_FORMAT = (FORMAT_NAME = 'harbr_csv_format')
Автоматизація конвеєрів даних у Snowflake

Обробка помилок

Параметри ON_ERROR Поведінка
ABORT_STATEMENT Зірвати все завантаження при першій помилці (типово)
CONTINUE Пропускати некоректні рядки, решту завантажувати
SKIP_FILE Пропустити весь файл, якщо є будь-які помилки
SKIP_FILE_<num> Пропустити файл, лише якщо помилок більше за вказану кількість
SKIP_FILE_<num>% Пропустити файл, лише якщо помилок більше за вказаний % поріг
Автоматизація конвеєрів даних у Snowflake

Режим перевірки та COPY_HISTORY

Перевірка без завантаження = пробний запуск

COPY INTO logistics.shipments
FROM @harbr_internal_stage/shipments/
FILE_FORMAT = (FORMAT_NAME = 'harbr_csv_format')
VALIDATION_MODE = RETURN_ERRORS;

Перегляд історії завантажень

SELECT * FROM TABLE(INFORMATION_SCHEMA.COPY_HISTORY(
  TABLE_NAME => 'shipments',
  START_TIME => DATEADD('hour', -24,
    CURRENT_TIMESTAMP())));
Автоматизація конвеєрів даних у Snowflake

Давайте попрактикуємося!

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

Preparing Video For Download...