Стейджи, форматы файлов и COPY INTO

Автоматизация конвейеров данных в Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Snowflake поддерживает широкий спектр задач

Screenshot 2026-05-11 at 11.52.34 am.png

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

Пример пайплайна

 

 

Screenshot 2026-05-11 at 10.48.51 am.png

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

Знакомство с Harbr

Логотип Harbr

О компании Harbr

  • Глобальная платформа логистики и управления цепочкой поставок
  • Использует Snowflake для отслеживания отправлений, складских запасов и эффективности доставки
  • Получает данные из систем поставщиков в нескольких регионах
Автоматизация конвейеров данных в Snowflake

Проблема загрузки данных

Схема загрузки данных

Стейдж = временное место хранения

Автоматизация конвейеров данных в Snowflake

Типы стейджей

Два типа стейджей

Внутренние стейджи

  • Пользовательский
    • Личная область для одного пользователя
  • Табличный
    • Привязан к конкретной таблице
  • Именованный
    • Объект базы данных, создаётся в схеме

Внешний стейдж

  • Именованный
    • Указывает на облачного провайдера
Автоматизация конвейеров данных в Snowflake

Параметры стейджа

Таблица директорий

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