Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Query
    • Форматы данных и алгоритмы сжатия
    • Работа с базами данных Managed Service for ClickHouse®
    • Работа с базами данных Managed Service for Greenplum®
    • Работа с базами данных Managed Service for MySQL®
    • Работа с базами данных Managed Service for PostgreSQL
    • Работа с базами данных Managed Service for YDB
    • Запись метрик в Yandex Monitoring
  • Управление доступом
  • Правила тарификации
  • Интеграции
  • Аудитные логи Audit Trails
  • Вопросы и ответы
  • Публичные материалы
  • Обучающие курсы

В этой статье:

  • Пример чтения данных
  • Поддерживаемые алгоритмы сжатия
  • Чтение
  • Запись в Yandex Object Storage
  • Запись в Yandex Data Streams
  1. Источники и приемники данных
  2. Форматы данных и алгоритмы сжатия

Форматы данных и алгоритмы сжатия

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 октября 2024 г.
  • Пример чтения данных
  • Поддерживаемые алгоритмы сжатия
    • Чтение
    • Запись в Yandex Object Storage
    • Запись в Yandex Data Streams

Ниже описаны поддерживаемые в Yandex Query форматы данных и алгоритмы сжатия.

Поддерживаемые форматы данныхПоддерживаемые форматы данных

В Yandex Query Language поддерживаются следующие форматы данных:

  • csv_with_names.
  • tsv_with_names.
  • json_list.
  • json_each_row.
  • raw.
  • json_as_string.
  • parquet.

Формат csv_with_namesФормат csv_with_names

Данный формат основан на формате CSV. Данные размещены в колонках, разделены запятыми, на первой строке файла находятся имена колонок.

Пример данных:

Year,Manufacturer,Model,Price
1997,Ford,E350,3000.00
1999,Chevy,"Venture «Extended Edition»",4900.00
Пример запроса
SELECT 
    * 
FROM <соединение>.<путь> 
WITH
(
    format=csv_with_names, 
    SCHEMA
    (
        Year int, 
        Manufacturer string, 
        Model string, 
        Price double
    )
)

Результат выполнения запроса:

# Manufacturer Model Price Year
1 Ford E350 3000 1997
2 Chevy Venture «Extended Edition» 4900 1999

Формат tsv_with_namesФормат tsv_with_names

Данный формат основан на формате TSV. Данные размещены в колонках, разделены символами табуляции (код 0x9), в первой строке файла находятся имена колонок.

Пример данных:

Year    Manufacturer    Model   Price
1997    Ford    E350    3000.00
1999    Chevy   "Venture «Extended Edition»"    4900.00
Пример запроса
SELECT 
    * 
FROM <соединение>.<путь> 
WITH
(
    format=tsv_with_names, 
    SCHEMA
    (
        Year int, 
        Manufacturer string, 
        Model string, 
        Price double
    )
)

Результат выполнения запроса:

# Manufacturer Model Price Year
1 Ford E350 3000 1997
2 Chevy Venture «Extended Edition» 4900 1999

Формат json_listФормат json_list

Данный формат основан на JSON-представлении данных. В этом формате внутри каждого файла должен находиться объект в корректном JSON-представлении.

Пример корректных данных (данные представлены в виде списка объектов JSON):

[
    { "Year": 1997, "Manufacturer": "Ford", "Model": "E350", "Price": 3000.0 },
    { "Year": 1999, "Manufacturer": "Chevy", "Model": "Venture «Extended Edition»", "Price": 4900.00 }
]

Пример НЕкорректных данных (на каждой отдельной строке находится отдельный объект в формате JSON, но эти объекты не объединены в список):

{ "Year": 1997, "Manufacturer": "Ford", "Model": "E350", "Price": 3000.0 }
{ "Year": 1999, "Manufacturer": "Chevy", "Model": "Venture «Extended Edition»", "Price": 4900.00 }

Формат json_each_rowФормат json_each_row

Данный формат основан на JSON-представлении данных. В этом формате внутри каждого файла на каждой отдельной строке файла должен находиться объект в корректном JSON-представлении, но эти объекты не объединены в JSON-список. Такой формат используется при передаче данных через потоковые системы, типа Yandex Data Streams.

Пример корректных данных (на каждой отдельной строке находится отдельный объект в формате JSON, но эти объекты не объединены в список):

{ "Year": 1997, "Manufacturer": "Ford", "Model": "E350", "Price": 3000.0 },
{ "Year": 1999, "Manufacturer": "Chevy", "Model": "Venture «Extended Edition»", "Price": 4900.00 }
Пример запроса
SELECT 
    * 
FROM <соединение>.<путь> 
WITH
(
    format=json_each_row, 
    SCHEMA
    (
        Year int, 
        Manufacturer string, 
        Model string, 
        Price double
    )
)

Результат выполнения запроса:

# Manufacturer Model Price Year
1 Ford E350 3000 1997
2 Chevy Venture «Extended Edition» 4900 1999

Формат rawФормат raw

Данный формат позволяет считывать содержимое файлов как есть, в «сыром» виде. Считанные таким образом данные можно обработать средствами YQL, разделив на строки и столбцы.

Этот формат стоит использовать, если встроенных возможностей парсинга исходных данных в Yandex Query не достаточно.

Пример запроса
SELECT 
    * 
FROM <соединение>.<путь> 
WITH
(
    format=raw, 
    SCHEMA
    (
        Data String
    )
)

Результат выполнения запроса:

Year,Manufacturer,Model,Price
1997,Ford,E350,3000.00
1999,Chevy,\"Venture «Extended Edition»\",4900.00

Формат json_as_stringФормат json_as_string

Данный формат основан на JSON-представлении данных. Данный формат не разбивает входной JSON-документ на поля, а представляет каждую строку файла в виде одного объекта JSON (или одной строки). Такой формат удобен, если список полей не фиксирован и может изменяться в разных сообщениях.

В этом формате внутри каждого файла должен находиться:

  • объект в корректном JSON-представлении в каждой отдельной строке файла;
  • объекты в корректном JSON-представлении, объединенные в список.

Пример корректных данных (данные представлены в виде списка объектов JSON):

{ "Year": 1997, "Manufacturer": "Ford", "Model": "E350", "Price": 3000.0 }
{ "Year": 1999, "Manufacturer": "Chevy", "Model": "Venture «Extended Edition»", "Price": 4900.00 }
Пример запроса
SELECT 
    * 
FROM <соединение>.<путь> 
WITH
(
    format=json_as_string, 
    SCHEMA
    (
        Data Json
    )
)

Результат выполнения запроса:

# Data
1 {"Manufacturer": "Ford", "Model": "E350", "Price": 3000, "Year": 1997}
2 {"Manufacturer": "Chevy", "Model": "Venture «Extended Edition»", "Price": 4900, "Year": 1999}

Формат parquetФормат parquet

Данный формат позволяет считывать содержимое файлов в формате Apache Parquet.

Поддерживаемые алгоритмы сжатия данных внутри файлов Parquet:

  • Без сжатия
  • SNAPPY
  • GZIP
  • LZO
  • BROTLI
  • LZ4
  • ZSTD
  • LZ4_RAW
Пример запроса
SELECT 
    * 
FROM <соединение>.<путь> 
WITH
(
    format=parquet, 
    SCHEMA
    (
        Year int, 
        Manufacturer string, 
        Model string, 
        Price double
    )
)

Результат выполнения запроса:

# Manufacturer Model Price Year
1 Ford E350 3000 1997
2 Chevy Venture «Extended Edition» 4900 1999

Пример чтения данныхПример чтения данных

Пример запроса для чтения данных из Yandex Object Storage.

SELECT
        *
FROM
    connection.`folder/filename.csv`
WITH(
    format='csv_with_names',
    SCHEMA 
    (
        Year int,
        Manufacturer String,
        Model String,
        Price Double 
    )
);

Где:

Поле Описание
connection Название соединения с Yandex Object Storage
folder/filename.csv Путь к файлу в бакете Yandex Object Storage
SCHEMA Описание схемы данных в файле

Поддерживаемые алгоритмы сжатияПоддерживаемые алгоритмы сжатия

ЧтениеЧтение

В Yandex Query поддерживаются следующие алгоритмы сжатия данных для чтения:

Формат сжатия Название в Query
Gzip gzip
Zstd zstd
LZ4 lz4
Brotli brotli
Bzip2 bzip2
Xz xz

Формат файлов parquet поддерживает собственные внутренние алгоритмы сжатия. Yandex Query позволяет читать данные в формате parquet с использованием следующих алгоритмов сжатия:

Формат сжатия Название в Query
Raw raw
Snappy snappy

Запись в Yandex Object StorageЗапись в Yandex Object Storage

В настоящий момент поддерживается запись в следующих форматах:

Формат данных Название в Query
CSV csv_with_names
Parquet parquet

В Query поддерживаются следующие алгоритмы сжатия данных для записи:

Формат сжатия Название в Query
Gzip gzip
Zstd zstd
LZ4 lz4
Brotli brotli
Bzip2 bzip2
Xz xz

Формат файлов parquet поддерживает собственные внутренние алгоритмы сжатия. Query позволяет записывать данные в формате parquet с использованием следующих алгоритмов сжатия:

Формат сжатия Название в Query
Snappy Без названия, по умолчанию

Запись в Yandex Data StreamsЗапись в Yandex Data Streams

В Data Streams можно выполнять запись только в виде байтового потока, который интепретируется на принимающей стороне.

Настройки форматов файлов и алгоритмов сжатия при записи в Data Streams не применяются.

Была ли статья полезна?

Предыдущая
Подключение с помощью IDE
Следующая
Чтение данных с помощью соединений
Проект Яндекса
© 2025 ООО «Яндекс.Облако»