Cloud Storage からのデータの読み込みの概要

このページでは、Cloud Storage から BigQuery へのデータの読み込みの概要を説明します。

概要

Cloud Storage から BigQuery にデータを読み込む場合、データは次のいずれかの形式になります。

  • カンマ区切り値(CSV)
  • JSON(改行区切り)
  • Avro
  • Parquet
  • ORC
  • Cloud Datastore エクスポート
  • Cloud Firestore エクスポート

Cloud Storage から BigQuery への繰り返しの読み込みは、BigQuery Data Transfer Service でサポートされています。

BigQuery では以下の Cloud Storage ストレージ クラスからデータを読み込むことができます。

  • Multi-Regional
  • Regional
  • Nearline
  • Coldline

ロケーションに関する留意事項

データのロケーションを選択するときは、次の点を考慮してください。

  • データを読み込む場合は、Cloud Storage バケットを同じリージョンに配置する
    • BigQuery データセットがマルチリージョン ロケーションにある場合、読み込み対象のデータが含まれている Cloud Storage バケットは、同じロケーションのリージョン バケットまたはマルチリージョン バケット内になければなりません。たとえば、BigQuery データセットが EU にある場合、Cloud Storage バケットは EU のリージョンまたはマルチリージョン バケットに存在する必要があります。
    • データセットがリージョン ロケーションにある場合、Cloud Storage バケットは同じロケーションのリージョン バケットに存在する必要があります。たとえば、データセットが東京リージョンにある場合、Cloud Storage バケットは東京のリージョン バケットである必要があります。
    • 例外: データセットが米国のマルチリージョン ロケーションにある場合、任意のリージョンまたはマルチリージョン ロケーションにある Cloud Storage バケットからデータを読み込むことができます。
  • データ管理計画を作成する
    • BigQuery データセットや Cloud Storage バケットなどのリージョン ストレージ リソースを選択する場合は、データの地理的管理を行うための計画を作成します。

Cloud Storage のロケーションの詳細については、Cloud Storage ドキュメントのバケットのロケーションをご覧ください。

ロケーション間での BigQuery データの移動

データセットの作成後にそのロケーションを変更することはできませんが、データセットのコピーを作成することはできます。また、データセットをあるロケーションから別のロケーションに移動することはできませんが、手動でデータセットを移動(再作成)することはできます。

データセットのコピー

データセットをコピーする手順(リージョン間でのコピーを含む)については、データセットのコピーをご覧ください。

データセットの移動

データセットをあるロケーションから別のロケーションに手動で移動するには、次の手順に従います。

  1. BigQuery テーブルから、データセットと同じロケーションにあるリージョンまたはマルチリージョンの Cloud Storage バケットにデータをエクスポートします。たとえば、データセットが EU のマルチリージョン ロケーションにある場合は、EU のリージョン バケットまたはマルチリージョン バケットにデータをエクスポートします。

    BigQuery からのデータのエクスポートに対しては課金されませんが、エクスポートしたデータを Cloud Storage に保存する場合は課金の対象になります。BigQuery からのエクスポートには、エクスポート ジョブの制限が適用されます。

  2. Cloud Storage バケットから新しいロケーションのリージョン バケットまたはマルチリージョン バケットに、データをコピーするか移動します。たとえば、米国のマルチリージョン ロケーションから東京のリージョン ロケーションにデータを移動すると、データは東京のリージョン バケットに転送されます。Cloud Storage オブジェクトの転送について詳しくは、Cloud Storage ドキュメントのオブジェクトの名前変更、コピー、移動をご覧ください。

    リージョン間でデータを転送すると、Cloud Storage でネットワークの下り料金が発生することに注意してください。

  3. 新しいロケーションの Cloud Storage バケットにデータを転送した後、新しい BigQuery データセットを(新しいロケーションに)作成します。次に、Cloud Storage バケットから BigQuery にデータを読み込みます。

    BigQuery へのデータの読み込みに対しては課金されませんが、Cloud Storage にデータを保存した場合は課金の対象となり、データまたはバケットを削除するまで料金が請求されます。読み込まれたデータを BigQuery に保存した場合も、請求の対象になります。BigQuery へのデータの読み込みには、読み込みジョブの制限が適用されます。

Cloud Storage を使用した大量のデータセットの保存や移動に関する詳細情報については、Cloud Storage とビッグデータの使用をご覧ください。

制限事項

Cloud Storage バケットから BigQuery にデータを読み込む際には、次の制限があります。

  • データセットのロケーションが US 以外の値に設定されている場合は、リージョンまたはマルチリージョンの Cloud Storage バケットがデータセットと同じリージョンに存在する必要があります。

Cloud Storage のソースデータの形式によっては、追加の制限が適用される場合があります。詳細については、次をご覧ください。

Cloud Storage URI の取得

Cloud Storage データソースからデータを読み込むには、Cloud Storage URI を指定する必要があります。

Cloud Storage URI は、バケット名とオブジェクト(ファイル名)で構成されます。たとえば、Cloud Storage バケットの名前が mybucket で、データファイルの名前が myfile.csv の場合、バケットの URI は gs://mybucket/myfile.csv になります。データが複数のファイルに分かれている場合は、URI にワイルドカードを使用できます。詳しくは、Cloud Storage のリクエスト URI をご覧ください。

BigQuery は、最初のダブル スラッシュ以降に複数の連続スラッシュが含まれるソース URI をサポートしていません。Cloud Storage では、オブジェクト名に複数の連続スラッシュ("/")文字を含めることができます。一方、BigQuery では、複数の連続スラッシュは単一のスラッシュに変換されます。たとえば、gs://bucket/my//object//name というソース URI は Cloud Storage では有効ですが、BigQuery では機能しません。

Cloud Storage URI を取得するには:

  1. Cloud Storage Console を開きます。

    Cloud Storage Console

  2. ソースデータを含むオブジェクト(ファイル)の場所に移動します。

  3. Cloud Storage Console の上部に、オブジェクトのパスが表示されます。URI を作成するには、gs://bucket/file を適切なパス(例: gs://mybucket/myfile.json)で置き換えます。 bucket は Cloud Storage バケットの名前、file はデータを含むオブジェクト(ファイル)の名前です。

必要な権限

BigQuery にデータを読み込むには、読み込みジョブを実行する権限が必要です。また、新規または既存の BigQuery テーブルやパーティションにデータを読み込むための権限も必要です。Cloud Storage からデータを読み込む場合は、データを含むバケットに対するアクセス権限が必要です。

BigQuery の権限

BigQuery にデータを読み込むには、少なくとも以下の権限が必要です。これらの権限は、データを新しいテーブルまたはパーティションに読み込む場合や、テーブルまたはパーティションに対してデータの追加や上書きを行う場合に必要になります。

  • bigquery.tables.create
  • bigquery.tables.updateData
  • bigquery.jobs.create

bigquery.tables.create 権限と bigquery.tables.updateData 権限は、どちらも以下の事前定義された Cloud IAM 役割に含まれています。

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

bigquery.jobs.create 権限は、以下の事前定義された Cloud IAM 役割に含まれています。

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

さらに、bigquery.datasets.create 権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner アクセス権がユーザーに付与されます。 bigquery.dataOwner アクセス権により、読み込みジョブを使用してデータセット内のテーブルを作成または更新する権限が付与されます。

BigQuery での Cloud IAM 役割と権限について詳しくは、アクセス制御をご覧ください。

Cloud Storage の権限

Cloud Storage バケットからデータを読み込むには、storage.objects.get 権限が付与されている必要があります。URI のワイルドカードを使用する場合は storage.objects.list 権限も必要です。

事前定義された Cloud IAM 役割 storage.objectViewer が付与されると、storage.objects.get 権限と storage.objects.list 権限が両方とも与えられます。

Cloud Storage のアクセスログとストレージログ

Cloud Storage は、BigQuery に直接インポートして解析できる CSV 形式で、アクセスとストレージのログファイルを提供します。Cloud Storage ログの読み込みと分析について詳しくは、Cloud Storage ドキュメントのアクセスログとストレージログをご覧ください。

Cloud Storage の URI でのワイルドカードの使用

Cloud Storage データを分割し、共通のベース名を持つ複数のファイルに保存した場合、そのデータを読み込むときに URI でワイルドカードを使用できます。

Cloud Storage の URI にワイルドカードを追加するには、ベース名の末尾にアスタリスク(*)を追加します。たとえば、fed-sample000001.csvfed-sample000002.csv という 2 つのファイルがある場合、バケット URI を gs://mybucket/fed-sample* とします。このワイルドカードを含む URI は、Console、従来のウェブ UI、CLI、API、クライアント ライブラリで使用できます。

バケット内のオブジェクト(ファイル名)について使用できるワイルドカードは 1 つのみです。ワイルドカードは、オブジェクト名の中や末尾に使用できます。バケット名にワイルドカードを付けることはできません。

Google Cloud Datastore のエクスポートで指定できる URI は 1 つのみです。また、URI の末尾に .backup_info または .export_metadata を指定する必要があります。

以下の場合、ワイルドカード文字 *使用できません

  • Cloud Datastore または Cloud Firestore のエクスポートにリンクされる外部テーブルを作成する
  • Cloud Storage から Cloud Datastore または Cloud Firestore のエクスポート データを読み込む

次のステップ

Cloud Storage から BigQuery にデータを読み込む方法については、以下のデータ形式のドキュメントをご覧ください。

Cloud Storage から BigQuery への繰り返しの読み込みについては、Cloud Storage の転送をご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。