Чтение данных из внешней таблицы, ведущей на S3 (Object Storage)

Иногда одни и те же запросы к данным нужно выполнять регулярно. Чтобы не указывать все детали работы с этими данными при каждом вызове запроса, используйте режим с внешними таблицами. В этом случае запрос выглядит, как обычный запрос к таблицам YDB.

Пример запроса для чтения данных:

SELECT
    *
FROM
    `s3_test_data`
WHERE
    version > 1

Создание внешней таблицы, ведущей на бакет S3 (Object Storage)

Чтобы создать внешнюю таблицу, описывающую бакет S3 (Object Storage), выполните следующий SQL-запрос. Запрос создает внешнюю таблицу с именем s3_test_data, в котором расположены файлы в формате CSV со строковыми полями key и value, находящиеся внутри бакета по пути test_folder, при этом для указания реквизитов подключения используется объект внешний источник данных bucket:

CREATE EXTERNAL TABLE `s3_test_data` (
  key Utf8 NOT NULL,
  value Utf8 NOT NULL
) WITH (
  DATA_SOURCE="bucket",
  LOCATION="folder",
  FORMAT="csv_with_names",
  COMPRESSION="gzip"
);

Где:

Модель данных

Чтение данных с помощью внешних таблиц из S3 (Object Storage) выполняется с помощью обычных SQL-запросов, как к обычной таблице.

SELECT
    <expression>
FROM
    `s3_test_data`
WHERE
    <filter>;

Ограничения

При работе с бакетами S3 (Object Storage) существует ряд ограничений.

Ограничения:

  1. Поддерживаются только запросы чтения данных - SELECT и INSERT, остальные виды запросов не поддерживаются.
  2. Если значение даты, хранящейся во внешнем источнике данных, находится вне допустимого для YDB диапазона (все используемые даты должны быть позднее 1970-01-01, но ранее 2105-12-31), в YDB такое значение будет преобразовано в NULL.