Выгрузка данных и подключение

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

Emily Melhuish

Technical Curriculum Developer, Snowflake

Сценарий выгрузки данных

Экспорт данных в облачное хранилище

  • Не у всех партнёров есть доступ к Snowflake
  • COPY INTO записывает результаты напрямую в стейдж
  • Отдельный экспортный конвейер не нужен
    COPY INTO @harbr_partner_export/
    daily_summary/
    FROM (SELECT * FROM 
    logistics.shipment_summary
    WHERE export_date = 
    CURRENT_DATE() - 1);
    

 

 

Схема выгрузки из Snowflake в партнёрское хранилище

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

COPY INTO

COPY INTO @harbr_partner_export/shipment_summary/
FROM (
  SELECT shipment_id,
         origin,
         destination,
         delivery_status,
         delivery_time_hours
  FROM logistics.shipments
  WHERE delivery_date = CURRENT_DATE()
)
FILE_FORMAT = (TYPE = 'CSV' HEADER = TRUE)
OVERWRITE = TRUE;
Автоматизация конвейеров данных в Snowflake

Форматы файлов для экспорта

 

Формат Лучше всего для
CSV Универсальный — поддерживается везде; идеален для партнёрского экспорта
JSON Сохраняет вложенные структуры; подходит для полуструктурированных данных
Parquet Большие аналитические наборы; столбчатое сжатие = меньше файлов, быстрее чтение

Ключевые параметры выгрузки

-- Split large exports across multiple files (bytes)
HEADER = TRUE              -- include column names in first row
OVERWRITE = TRUE           -- replace any existing files at that path
MAX_FILE_SIZE = 104857600  -- 100 MB per output file
Автоматизация конвейеров данных в Snowflake

Ландшафт подключений

Ландшафт подключений и коннекторы

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

Коннекторы Kafka и Spark

Коннектор Kafka

  • Топики передаются напрямую в таблицы Snowflake
  • Без файлов и стейджей — использует Snowpipe Streaming
  • Задержка — секунды
# connector.properties (Kafka settings)
snowflake.topic2table.map=events:
delivery_events
snowflake.ingestion.method=
SNOWPIPE_STREAMING

Коннектор Spark

  • Интеграция с DataFrame API Spark
  • Задания Spark читают данные из Snowflake и записывают в него
  • Обработка крупных трансформационных нагрузок
// Read from Snowflake into a Spark DataFrame
val df = spark.read.format("snowflake")
  .options(sfOptions).option("dbtable", 
    "shipments").load()
Автоматизация конвейеров данных в Snowflake

JDBC/ODBC и партнёрские интеграции

Универсальное подключение

Интеграция Тип Применение в Harbr
JDBC / ODBC Универсальные драйверы Инструменты BI (Tableau, Power BI, Looker) — прямые запросы
Python Connector Нативный Python-драйвер Конвейеры данных, ETL по расписанию, задачи data science
dbt SQL-трансформации Запуск моделей в Snowflake
Fivetran / Airbyte Управляемая загрузка SaaS-источники → Snowflake, без кода
Автоматизация конвейеров данных в Snowflake

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

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

Preparing Video For Download...