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

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

概要

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

  • カンマ区切り値(CSV)
  • JSON(改行区切り)
  • Avro
  • Parquet
  • ORC(ベータ版)
  • Google Cloud Datastore バックアップ

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

  • Multi-Regional
  • Regional
  • Nearline
  • Coldline

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

データのロケーションを選択するときは、次の点を考慮してください。
  • BigQuery データセットと外部データソースを同じロケーションに配置する
    • Cloud Storage などの外部データソースのデータをクエリする場合、クエリするデータは BigQuery データと同じロケーションに存在する必要があります。たとえば、BigQuery データセットが EU のマルチリージョン ロケーションにある場合、クエリ対象のデータが含まれている Cloud Storage バケットは、EU のマルチリージョン バケットに存在する必要があります。データセットが米国のマルチリージョン ロケーションにある場合、Cloud Storage バケットは米国のマルチリージョン バケットに存在する必要があります。
    • データセットがリージョン ロケーションにある場合、クエリ対象のデータが含まれている Cloud Storage バケットは、同じロケーションに存在する必要があります。たとえば、データセットが東京リージョンにある場合、Cloud Storage バケットは東京のリージョン バケットである必要があります。
    • 外部データセットが Cloud Bigtable にある場合、データセットは米国または EU のマルチリージョン ロケーションに存在する必要があります。Cloud Bigtable データは、サポートされている Cloud Bigtable のロケーションのいずれかに存在する必要があります。
    • ロケーションに関する考慮事項は、Google ドライブの外部データソースには適用されません。
  • データを読み込む場合は Cloud Storage バケットを同じロケーションに配置する
    • BigQuery データセットがマルチリージョン ロケーションにある場合、読み込み対象のデータが含まれている Cloud Storage バケットは、同じロケーションのリージョンまたはマルチリージョン バケットに存在する必要があります。たとえば、BigQuery データセットが EU にある場合、Cloud Storage バケットは EU のリージョンまたはマルチリージョン バケットに存在する必要があります。
    • データセットがリージョン ロケーションにある場合、Cloud Storage バケットは同じロケーションのリージョン バケットに存在する必要があります。たとえば、データセットが東京リージョンにある場合、Cloud Storage バケットは東京のリージョン バケットである必要があります。
    • 例外: データセットが米国のマルチリージョン ロケーションにある場合、任意のリージョンまたはマルチリージョン ロケーションにある Cloud Storage バケットからデータを読み込むことができます。
  • データをエクスポートする場合は Cloud Storage バケットを同じリージョンに配置する
    • データをエクスポートする場合、リージョンまたはマルチリージョンの Cloud Storage バケットを BigQuery データセットと同じロケーションに配置する必要があります。たとえば、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 を使用して大量のデータセットを保存し、移動させる方法の詳細については、Google Cloud Storage とビッグデータの使用をご覧ください。

Google Cloud Storage の URI を取得する

Google 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 ウェブ UI を開きます。

    Cloud Storage ウェブ UI

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

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

必要な権限

BigQuery にデータを読み込む場合は、新規または既存の BigQuery のテーブルやパーティションにデータを読み込むためのプロジェクト レベルまたはデータセット レベルの権限が必要です。Cloud Storage からデータを読み込む場合は、データが格納されているバケットへのアクセス権も必要です。

BigQuery の権限

Cloud Storage から BigQuery にデータを読み込む場合は、プロジェクト レベルまたはデータセット レベルで bigquery.dataOwner または bigquery.dataEditor の役割が付与されている必要があります。どちらの役割もユーザーとグループに、新しいテーブルへのデータの読み込みや、既存のテーブルへのデータの追加または上書きを行う権限を付与します。

プロジェクト レベルで役割を付与した場合、プロジェクト内のすべてのデータセットのテーブルにデータを読み込む権限がユーザーまたはグループに与えられます。データセット レベルで役割を付与した場合、ユーザーまたはグループは、そのデータセット内のテーブルにのみデータを読み込むことができます。

データセット アクセスの構成の詳細については、データセットへのアクセス制御の割り当てをご覧ください。BigQuery での IAM 役割の詳細については、アクセス制御をご覧ください。

Cloud Storage の権限

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

storage.objects.get 権限と storage.objects.list 権限は、事前定義された IAM 役割 storage.objectViewer で付与できます。

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

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

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

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

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

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

Google Cloud Datastore のバックアップでは、指定できる URI は 1 つのみで、末尾に .backup_info または .export_metadata を指定する必要があります。Cloud Datastore バックアップにリンクしている外部テーブルを作成する場合、または Cloud Storage から Cloud Datastore バックアップ データを読み込む場合は、* ワイルドカード文字は使用できません。

制限事項

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

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

次のステップ

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

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

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