Перейти к основному содержанию
Предоставляет табличный интерфейс для SELECT и INSERT данных из Google Cloud Storage. Требуется роль IAM Storage Object User. Это псевдоним табличной функции s3. Если в вашем кластере несколько реплик, вместо неё можно использовать функцию s3Cluster (она работает с GCS), чтобы распараллелить вставки.

Синтаксис

GCSТабличная функция GCS работает с Google Cloud Storage через GCS XML API и HMAC-ключи. Подробнее о конечной точке и HMAC см. в документации Google по совместимости.

Аргументы

АргументОписание
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. По умолчанию метод сжатия определяется автоматически по расширению файла.
GCSПуть GCS имеет следующий формат, поскольку конечная точка Google XML API отличается от JSON API:
а не https://storage.cloud.google.com.
Аргументы также можно передавать с помощью именованных коллекций. В этом случае url, format, structure и compression_method работают так же, а также поддерживаются дополнительные параметры:
ParameterDescription
access_key_idhmac_key, необязательный параметр.
secret_access_keyhmac_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, для каждого значения партиции будет создан отдельный файл. Разбиение данных на отдельные файлы помогает повысить эффективность чтения. Примеры
  1. Использование идентификатора партиции в ключе создает отдельные файлы:
В результате данные записываются в три файла: file_x.csv, file_y.csv и file_z.csv.
  1. Использование идентификатора партиции в имени бакета приводит к созданию файлов в разных бакетах:
В результате данные записываются в три файла в разных бакетах: my_bucket_1/file.csv, my_bucket_10/file.csv и my_bucket_20/file.csv.
Последнее изменение 2 июля 2026 г.