Чтение данных из внешней таблицы, ведущей на 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"
);
Где:
key, value
- список колонок данных и их типов;bucket
- имя внешнего источника данных к S3 (Object Storage);folder
- путь внутри бакета с данными;csv_with_names
- один из допустимых типов хранения данных;gzip
- один из допустимых алгоритмов сжатия.
Модель данных
Чтение данных с помощью внешних таблиц из S3 (Object Storage) выполняется с помощью обычных SQL-запросов, как к обычной таблице.
SELECT
<expression>
FROM
`s3_test_data`
WHERE
<filter>;
Ограничения
При работе с бакетами S3 (Object Storage) существует ряд ограничений.
Ограничения:
- Поддерживаются только запросы чтения данных -
SELECT
иINSERT
, остальные виды запросов не поддерживаются. -
Если значение даты, хранящейся во внешнем источнике данных, находится вне допустимого для YDB диапазона (все используемые даты должны быть позднее 1970-01-01, но ранее 2105-12-31), в YDB такое значение будет преобразовано в
NULL
.