メインコンテンツへスキップ
Google Cloud Storage のデータに対して SELECT および INSERT を行うためのテーブル形式インターフェイスを提供します。Storage Object User IAM role が必要です。 これは s3 テーブル関数 の別名です。 クラスター内に複数のレプリカがある場合は、代わりに s3Cluster function (GCS でも使用可能) を使うことで、挿入を並列化できます。

構文

GCSGCS テーブル関数は、GCS XML API と HMAC キーを使用して Google Cloud Storage と連携します。 エンドポイントと HMAC の詳細については、Google の相互運用性に関するドキュメント を参照してください。

引数

GCSGoogle XML API の エンドポイント は JSON API と異なるため、GCS パスは次の形式になります:
https://storage.cloud.google.com ではありません。
引数は named collections を使って渡すこともできます。この場合、urlformatstructurecompression_method は同様に機能し、追加のパラメータもいくつかサポートされます:

戻り値

指定されたファイル内のデータの読み取りまたは書き込みに使用される、指定された構造のテーブル。

GCSファイル https://storage.googleapis.com/my-test-bucket-768/data.csv からテーブルの先頭2行を選択する例:
同様に、gzip 圧縮方式のファイルからの場合:

使用例

GCS 上に、次の URI を持つ複数のファイルがあるとします。 末尾の数字が 1 から 3 のファイルの行数を数えます。
これら2つのディレクトリ内のすべてのファイルに含まれる行数の合計を数えます:
ファイル一覧に先頭に 0 が付いた数値範囲が含まれる場合は、各桁ごとに波かっこを使った構文を使用するか、? を使用してください。
file-000.csvfile-001.csv、…、file-999.csv という名前のファイル内の行数の合計を数えます。
ファイル test-data.csv.gz にデータを挿入します:
既存のテーブルのデータをファイル test-data.csv.gz に挿入します:
Glob ** は、ディレクトリを再帰的にたどるために使用できます。以下の例では、my-test-bucket-768 ディレクトリ配下のすべてのファイルを再帰的に取得します。
以下では、my-test-bucket ディレクトリ内の任意のフォルダにあるすべての test-data.csv.gz ファイルから、再帰的にデータを取得します:
本番環境で利用する場合は、named collectionsの使用を推奨します。以下はその例です。

パーティション単位での書き込み

GCS テーブルへのデータ挿入時に PARTITION BY 式を指定すると、パーティション値ごとに個別のファイルが作成されます。データをファイルごとに分割することで、読み取り処理の効率向上につながります。
  1. キーにパーティション ID を使用すると、個別のファイルが作成されます:
その結果、データは file_x.csvfile_y.csvfile_z.csv の3つのファイルに書き込まれます。
  1. バケット名にパーティション ID を使用すると、ファイルは異なるバケットに作成されます。
その結果、データは異なる3つのバケット内の my_bucket_1/file.csvmy_bucket_10/file.csvmy_bucket_20/file.csv という3つのファイルに書き込まれます。
最終更新日 2026年6月19日