Cloud Storage の転送

は、

BigQuery Data Transfer Service for Cloud Storage を使用すると、Cloud Storage から BigQuery への繰り返しのデータ読み込みをスケジュールできます。

始める前に

Cloud Storage の転送を作成する前に、以下を行います。

制限事項

Cloud Storage から BigQuery への繰り返しの転送には、次の制限があります。

  • 転送のワイルドカードまたはランタイム パラメータで定義したパターンに一致するファイルはすべて、宛先テーブルに対して定義したスキーマと同じスキーマを共有している必要があり、そうでない場合は転送が失敗します。転送後にテーブル スキーマを変更して再度転送を実行した場合も、転送が失敗します。
  • Cloud Storage 内のソースファイルが転送の対象になるには、そのファイルが作成後 1 時間以上経過している必要があります。
  • Cloud Storage オブジェクトはバージョニングが可能ですが、アーカイブ済みの Cloud Storage オブジェクトは BigQuery に転送できないことに注意してください。転送されるオブジェクトは、ライブデータである必要があります。
  • Cloud Storage から BigQuery へ個別にデータを読み込む場合と異なり、継続的な転送では転送を設定する前に宛先テーブルとスキーマを作成する必要があります。BigQuery では、繰り返しのデータ転送プロセスの一環としてテーブルを作成することはできません。
  • Cloud Storage からの転送は、常に WRITE_APPEND 設定によってトリガーされ、データが宛先テーブルに追加されます。詳細については、読み込みの構成configuration.load.writeDisposition をご覧ください。
  • データセットのロケーションが US 以外の値に設定されている場合は、リージョンまたはマルチリージョンの Cloud Storage バケットがデータセットと同じリージョンに存在する必要があります。

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

必要な権限

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

  • BigQuery: スケジュールされた転送を作成するには、bigquery.transfers.update 権限が必要です。bigquery.admin 権限は事前定義されたプロジェクト レベルの IAM 役割であり、bigquery.transfers.update 権限を含みます。BigQuery での IAM 役割の詳細については、アクセス制御をご覧ください。
  • Cloud Storage: プロジェクト レベル、または個々のバケットでの storage.objects.get 権限が必要です。URI のワイルドカードを使用する場合は、storage.objects.list 権限も必要です。転送が完了するたびにソースファイルを削除する場合は、storage.objects.delete 権限も必要です。このすべての権限は、storage.objectAdmin で事前定義されたプロジェクト レベルの IAM 役割に含まれています。

Cloud Storage の転送の設定

BigQuery Data Transfer Service で Cloud Storage 転送を作成するには:

従来の UI

  1. BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [Transfers] をクリックします。

  3. [Add Transfer] をクリックします。

  4. [New Transfer] ページで次の操作を行います。

    • [Source] で [Cloud Storage] を選択します。
    • [Display name] に、スケジュールされたクエリの名前(例: My Transfer)を入力します。表示名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
    • (省略可)[Schedule] については、デフォルト値の [Daily](作成時間に基づいて 24 時間ごと)のままにしておくか、[Edit] をクリックして時間を変更します。間隔を [Weekly]、[Monthly]、[Custom] に変更することもできます。[Custom] を選択したときは、Cron と同様の時間指定(例: every 12 hours)が求められます。最短許容時間は 12 時間です。有効な追加 API 値については、TransferConfigschedule フィールドをご覧ください。

      クエリ スケジュール

    • [Destination Dataset] で、該当するデータセットを選択します。

    • [Destination table] に宛先テーブルの名前を入力します。宛先テーブルは、テーブルの命名規則に従う必要があります。宛先テーブル名でもパラメータがサポートされています。

    • [Cloud Storage URI] には Cloud Storage URI を入力します。ワイルドカードパラメータがサポートされています。

    • 転送が完了するたびにソースファイルを削除する場合は、[Delete source files after transfer] をオンにします。削除ジョブはベスト エフォート ベースです。最初にソースファイルの削除が失敗すると、削除ジョブは再試行されません。

    • [File format] で、転送するファイルのタイプを選択します。

    • [Transfer Options - All Formats] セクションでは、以下のように設定します。

      • [Number of errors allowed] には、BigQuery がジョブの実行中に無視できる不良レコードの最大数を入力します。不良レコード数がこの値を超えると、ジョブ結果で「invalid」が返されてジョブが失敗します。デフォルト値は 0 です。
    • [Transfer Options - JSON, CSV] セクションでは、以下のように設定します。

      • 転送で宛先テーブルのスキーマに適合しないデータが削除されるようにする場合は、[Ignore unknown values] をオンにします。
    • [Transfer Options - CSV] セクションでは、以下のように設定します。

      • [Field delimiter] に、フィールドを区切る文字を入力します。デフォルト値はカンマ(,)です。
      • [Header rows to skip] に、インポートの対象外にするソースファイル内のヘッダー行の数を入力します。デフォルト値は 0 です。
      • 引用符で囲まれたフィールド内で改行を許可するには、[Allow quoted newlines] をオンにします。
      • NULLABLE 列がない行を転送する場合は、[Allow jagged rows] をオンにします。

      新しい Cloud Storage 転送

    • (省略可)[Advanced] セクションを展開し、転送用に実行通知を構成します。転送実行通知は、現時点ではアルファ版です。

    • [Cloud Pub/Sub topic] には、Cloud Pub/Sub トピック名(例: projects/myproject/topics/mytopic)を入力します。

    • [Send email notifications] をオンにして、転送実行失敗のメール通知を許可します。

      Cloud Pub/Sub トピック

  5. [追加] をクリックします。

コマンドライン

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。次のフラグも必要です。

  • --data_source
  • --display_name
  • --target_dataset
  • --params

    bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --display_name=[NAME] --target_dataset=[DATASET] --params='[PARAMETERS]'
    

各要素の意味は次のとおりです。

  • --project_id はプロジェクト ID です。特定のプロジェクトを示す --project_id が指定されていない場合は、デフォルトのプロジェクトが使用されます。
  • --data_source はデータソースです。ここでは、google_cloud_storage を指定します。
  • --display_name は転送構成の表示名です。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
  • --target_dataset は転送構成のターゲット データセットです。
  • --params には、作成される転送構成のパラメータを JSON 形式で指定します(例: --params='{"param":"param_value"}')。
    • Cloud Storage では、data_path_templatedestination_table_name_templatefile_format の各パラメータを指定する必要があります。data_path_template は、転送するファイルが格納されている Cloud Storage URI で、ワイルドカードを 1 つ含めることができます。destination_table_name_template は宛先テーブルの名前です。file_format には、転送するファイルの種類(CSVJSONAVROPARQUETORC)を指定します。デフォルト値は CSV です。
    • すべての file_format 値について、オプションのパラメータとして max_bad_records を含めることができます。デフォルト値は 0 です。
    • file_format の値として JSON または CSV を指定した場合は、オプションのパラメータとして ignore_unknown_values を含めることができます。file_format の値として CSV または JSON を指定していない場合、このパラメータは無視されます。
    • file_format の値として CSV を指定した場合は、オプションのパラメータとして field_delimiter を含め、フィールドを区切る文字を示すことができます。デフォルト値はカンマ(,)です。file_format の値として CSV を指定していない場合、このパラメータは無視されます。
    • file_format の値として CSV を指定した場合は、オプションのパラメータとして skip_leading_rows を含め、インポートの対象外とするヘッダー行数を示すことができます。デフォルト値は 0 です。file_format の値として CSV を指定していない場合、このパラメータは無視されます。
    • file_format の値として CSV を指定した場合は、オプションのパラメータとして allow_quoted_newlines を含め、引用符で囲まれたフィールド内で改行を許可できます。file_format の値として CSV を指定していない場合、このパラメータは無視されます。
    • file_format の値として CSV を指定した場合は、オプションのパラメータとして allow_jagged_rows を含めることで、末尾のオプションの列が欠落している行を受け入れることができます。欠落した値には NULL が入力されます。file_format の値として CSV を指定していない場合、このパラメータは無視されます。
    • オプションの delete_source_files パラメータを指定すると、転送が完了するたびにソースファイルが削除されます(最初にソースファイルの削除が失敗すると、削除ジョブは再試行されません)。delete_source_files のデフォルト値は false です。

たとえば、次のコマンドは、gs://mybucket/myfile/*.csvdata_path_template 値、ターゲットのデータセットとして mydatasetfile_format の値として CSV を使用して、My Transfer という名前の Cloud Storage 転送を作成します。この例では、file_format の CSV 値に関連するオプションのパラメータとして、デフォルト以外の値を使用しています。

この転送はデフォルトのプロジェクトで作成されます。

bq mk --transfer_config --target_dataset=mydataset --display_name='My Transfer' --params='{"data_path_template":"gs://mybucket/myfile/*.csv","destination_table_name_template":"MyTable","file_format":"CSV","max_bad_records":"1","ignore_unknown_values":"true","field_delimiter":"|","skip_leading_rows":"1","allow_quoted_newlines":"true","allow_jagged_rows":"false","delete_source_files":"true"}' --data_source=google_cloud_storage

コマンドを実行すると、次のようなメッセージが表示されます。

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

指示に従って、認証コードをコマンドラインに貼り付けます。

API

projects.locations.transferConfigs.create メソッドを使用し、TransferConfig リソースのインスタンスを指定します。

転送のリフレッシュ実行の設定

Cloud Storage からの繰り返しの転送の設定に加えて、追加のデータファイルを転送の対象とするリフレッシュ実行を設定できます。

転送構成が日付に関連付けられている(パラメータ化されている)か Cloud Storage URI がパラメータ化されている場合、あるいはその両方が当てはまる場合、特定の日付について転送を実行できます。

更新転送を設定するには:

従来の UI

  1. BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [Transfers] をクリックします。

  3. 目的の転送をクリックします。

  4. [Refresh Transfer] をクリックします。

    更新転送

  5. [Start Transfer Runs] ダイアログで、[Start Time] と [End Time] を選択します。

    過去の日付を設定する

    Cloud Storage の転送構成がパラメータ化されていない場合は、[Refresh Transfer] をクリックしたときに日付オプションが表示されません。その場合は直ちに更新が行われます。ファイルが転送の対象になるには、そのファイルが作成後 1 時間以上経過している必要があります。

    直ちに更新する

  6. [OK] をクリックします。

次のステップ

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

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

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