Предоставляет табличный интерфейс для SELECT и INSERT данных из Google Cloud Storage. Требуется роль IAM Storage Object User.
Это псевдоним табличной функции s3.
Если в вашем кластере несколько реплик, вместо неё можно использовать функцию s3Cluster (она работает с GCS), чтобы распараллелить вставки.
| Аргумент | Описание |
|---|
url | Путь к файлу в бакете. В режиме только чтения поддерживаются следующие подстановочные шаблоны: *, **, ?, {abc,def} и {N..M}, где N, M — числа, а 'abc', 'def' — строки. |
NOSIGN | Если это ключевое слово указано вместо учетных данных, запросы не будут подписываться. |
hmac_key and hmac_secret | Ключи, задающие учетные данные для использования с указанной конечной точкой. Необязательны. |
format | Формат файла. |
structure | Структура таблицы. Формат: 'column1_name column1_type, column2_name column2_type, ...'. |
compression_method | Параметр необязателен. Поддерживаемые значения: none, gzip или gz, brotli или br, xz или LZMA, zstd или zst. По умолчанию метод сжатия определяется автоматически по расширению файла. |
Аргументы также можно передавать с помощью именованных коллекций. В этом случае url, format, structure и compression_method работают так же, а также поддерживаются дополнительные параметры:
| Parameter | Description |
|---|
access_key_id | hmac_key, необязательный параметр. |
secret_access_key | hmac_secret, необязательный параметр. |
filename | Добавляется к url, если указан. |
use_environment_credentials | Включен по умолчанию; позволяет передавать дополнительные параметры через переменные окружения AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, AWS_CONTAINER_CREDENTIALS_FULL_URI, AWS_CONTAINER_AUTHORIZATION_TOKEN, AWS_EC2_METADATA_DISABLED. |
no_sign_request | Отключен по умолчанию. |
expiration_window_seconds | Значение по умолчанию — 120. |
Таблица с указанной структурой для чтения или записи данных в указанный файл.
Выбор первых двух строк из таблицы в файле GCS https://storage.googleapis.com/my-test-bucket-768/data.csv:
То же самое, но из файла со сжатием gzip:
Предположим, что у нас есть несколько файлов со следующими URI в GCS:
Подсчитайте количество строк в файлах, имена которых оканчиваются числами от 1 до 3:
Подсчитайте общее количество строк во всех файлах этих двух каталогов:
Если в списке файлов есть диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или символ ?.
Подсчитайте общее количество строк в файлах с именами file-000.csv, file-001.csv, … , file-999.csv:
Запишите данные в файл test-data.csv.gz:
Запишите данные из существующей таблицы в файл test-data.csv.gz:
Шаблон glob ** можно использовать для рекурсивного обхода каталогов. Рассмотрим пример ниже: он рекурсивно извлечёт все файлы из каталога my-test-bucket-768:
Ниже рекурсивно извлекаются данные из всех файлов test-data.csv.gz во всех папках внутри каталога my-test-bucket:
Для production-сценариев рекомендуется использовать именованные коллекции. Ниже приведён пример:
Запись с разбиением на партиции
Если при вставке данных в таблицу GCS указать выражение PARTITION BY, для каждого значения партиции будет создан отдельный файл. Разбиение данных на отдельные файлы помогает повысить эффективность чтения.
Примеры
- Использование идентификатора партиции в ключе создает отдельные файлы:
В результате данные записываются в три файла: file_x.csv, file_y.csv и file_z.csv.
- Использование идентификатора партиции в имени бакета приводит к созданию файлов в разных бакетах:
В результате данные записываются в три файла в разных бакетах: my_bucket_1/file.csv, my_bucket_10/file.csv и my_bucket_20/file.csv.
Последнее изменение 2 июля 2026 г.