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

Синтаксис

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

Аргументы

GCSПуть GCS имеет следующий формат, поскольку конечная точка Google XML API отличается от JSON API:
а не https://storage.cloud.google.com.
Аргументы также можно передавать с помощью именованных коллекций. В этом случае url, format, structure и compression_method работают так же, а также поддерживаются дополнительные параметры:

Возвращаемое значение

Таблица с указанной структурой для чтения или записи данных в указанный файл.

Примеры

Выбор первых двух строк из таблицы в файле 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 г.