転送先 - Google BigQuery

Prev Next

概要

Google CloudのBigQueryへデータを転送する設定のDocsです。

Google BigQueryとTROCCOの活用事例について

TROCCOの製品サイトでは、お客さまの導入事例を紹介しております。
本Docsとあわせてご覧ください。

制約

設定項目

STEP1 基本設定

項目 必須 デフォルト値 内容
Google BigQuery接続情報 Yes - あらかじめ登録してあるGoogle BigQuery接続情報から、今回の転送設定に必要な権限を持つものを選択します。
転送先プロジェクトの指定 Yes 接続情報のプロジェクト 転送先のプロジェクトを指定します。
接続情報のプロジェクト:接続情報で設定されたプロジェクトを使用します。
任意のプロジェクト:接続情報とは別のプロジェクトを転送先として指定できます。
転送先プロジェクトID No - 転送先プロジェクトの指定で「任意のプロジェクト」を選択した場合に入力します。
転送先として使用するプロジェクトIDを入力してください。
データセット Yes - 転送先のデータセット名を選択します。
テーブル Yes - 転送先のテーブル名を選択します。
対象テーブルが転送先のデータセット内に存在しない場合は、テーブルが自動的に作成されます。
データセットのロケーション Yes US (米国) 転送先データセットのロケーションを指定します。
東京リージョンを指定する場合はasia-northeast1を入力します。
指定できるロケーションについて、詳しくはBigQuery公式ドキュメント - BigQuery のロケーションを参照ください。
データセットの自動作成オプション Yes 作成しない 指定したデータセットが対象プロジェクト配下に存在しない場合、自動で作成します。
転送モード Yes 追記 (APPEND) 転送モードを選択します。
詳しくは、後述の転送モードについてを参照ください。
マージキー Yes - 転送モードUPSERT (MERGE)を選択したときに入力できます。
プライマリーキーが転送先のテーブルに存在しない場合、マージキー(主キー)扱いとする、カラムの名前を入力してください。
マージキーには、値の重複がなく、NULL値も持たないカラムを入力してください。
データセット・テーブル・カラムの命名上の制約

それぞれ、命名上の制約があります。

  • データセット名(STEP1で指定)
  • テーブル名(STEP1で指定)
  • カラム名(STEP2カラム定義で指定)
    • 英字・数字・アンダースコアのみで構成されている必要があります。
    • 列名の先頭は英字またはアンダースコアにする必要があります。
    • スペースや特殊文字を含めることはできません。
    • 詳しくは、BigQuery公式ドキュメント - スキーマの指定を参照ください。

STEP2 出力オプション

項目 内容
カラム設定 後述のカラム設定を参照ください。
スキーマ情報をテンプレートとして参照するテーブル BigQueryにテーブルを新規作成する際のスキーマとして、BigQuery側にすでに存在するテーブルのスキーマを流用できます。
この場合、転送設定STEP1で指定したデータセット配下にあるテーブル名を入力してください。
パーティショニング 後述のパーティショニング・クラスタリングの設定を参照ください。
クラスタリング 後述のパーティショニング・クラスタリングの設定を参照ください。
スキーマに関わる設定が適用される条件

STEP2出力オプションの以下の設定は、テーブルを新規作成する場合にのみ、適用されます。

  • カラム設定
  • スキーマ情報をテンプレートとして参照するテーブル
  • パーティショニング
  • クラスタリング

具体的には、以下の状態でジョブ実行した際に適用されます。

  • 転送先に対象となるテーブルが存在しない場合
  • 転送モードで全件洗い替え (REPLACE)を選んでいる場合
    • この場合、転送のたびに転送先テーブルのスキーマが更新されるため、上記設定の内容は都度適用されます。

補足事項

転送モードについて

以下の説明はいずれも、転送先に対象となるテーブルがすでに存在する場合の挙動となります。
転送先に対象となるテーブルが存在しない場合は、いずれのモードにおいてもテーブルを新規作成します。

転送モード スキーマ変更 トランザクション 挙動 補足
追記 (APPEND) No Yes テーブルへの追記を以下の通り行います。
  1. 一時テーブルを作成して、データを投入する
  2. 一時テーブルのデータを対象テーブルにWRITE_APPENDする
追記 (APPEND DIRECT) No No テーブルの追記を以下の通り行います。
  1. データを直接対象テーブルにWRITE_APPENDする
  • 追記 (APPEND)モードに比べて処理時間は短くなりますが、トランザクションは担保されません。
  • そのため転送が途中で失敗した場合、途中まで追加された行が対象テーブルに残ることがあります。
  • 全件洗い替え (DELETE IN ADVANCE) Yes No テーブルの洗い替えを以下の通り行います。
    1. 対象テーブルをDELETEする
    2. 対象テーブルを新規作成して、データを投入する
  • トランザクションは担保されません。
  • 全件洗い替え (REPLACE) Yes Yes テーブルの洗い替えを以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 一時テーブルのデータを対象テーブルにWRITE_TRUNCATEする
  • 既存テーブルのスキーマは削除され、新しいテーブルのものに更新されます。
  • 対象テーブルが非パーティション分割テーブルの場合に、パーティショニングが設定された転送設定でジョブを実行すると、ジョブエラーが発生します。
  • UPSERT (MERGE) No Yes テーブルへのUPSERTを以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 一時テーブルのデータを対象テーブルにMERGEする
  • 対象テーブルに対して、一時テーブルのマージキーと値が一致する行は更新され、一致しない行は挿入されます。
  • WRITE_APPENDとWRITE_TRUNCATEの違い

    BigQuery APIリファレンス - JobwriteDispositionフィールドを参照ください。

    カラム設定

    カラムに関して詳細な設定が可能です。
    詳しくは、BigQuery公式ドキュメント - スキーマの指定を参照ください。

    項目 内容
    カラム名 転送設定STEP2カラム定義カラム名一覧から選択します。
    データ型 カラムのデータ型を明示的に指定したい場合に選択します。
    モード カラムのモードを明示的に指定したい場合に選択します。
    日付フォーマット 転送設定STEP2カラム定義timestamp型と定義されたカラムをSTRING型で転送したい場合に、展開時に利用する日付フォーマットを入力できます。
    タイムゾーン 転送設定STEP2カラム定義timestamp型と定義されたカラムをSTRING型またはDATETIME型で転送したい場合に、展開時に利用するタイムゾーンを入力できます。
    説明 カラムの説明を入力できます。
    スキーマ情報をテンプレートとして参照するテーブルを利用した場合においても、本項目で入力した内容が優先されて反映されます。

    パーティショニング・クラスタリングの設定

    パーティショニング・クラスタリングについて、詳しくはパーティション分割テーブルの概要クラスタ化テーブルの概要をそれぞれ参照ください。

    項目 必須 内容
    パーティショニング 以下のいずれかを選択できます。
    • 取り込み時間により分割:TROCCOのジョブ実行時間に基づいてパーティションが切られます。
    • フィールドにより分割:基準となるカラムに基づいてパーティションが切られます。
    パーティションフィールド フィールドにより分割を選択したときに入力します。
    DATETIMESTAMPDATETIMEのいずれかの型の列名を入力してください。
    パーティションタイプ パーティショニングでいずれかの分割方式を選択した場合に選択します。
    テーブル分割の粒度を以下より選択してください。
    • 1時間ごと
    • 1日ごと
    • 1ヶ月ごと
    • 1年ごと
    クラスタリング - クラスタ化テーブルを作成したい場合に設定できます。
    クラスタ化列にカラム名を入力することで、該当のカラムに基づいてテーブルがクラスタ化されます。
    なお、クラスタ化列は最大で4つまで指定できます。
    パーティションの存続期間 - パーティションの有効期限を指定できます。
    詳しくは、パーティションの有効期限を設定するを参照ください。
    パーティショニング・クラスタリング設定の適用条件

    パーティショニング・クラスタリングの設定はテーブルの新規作成時にのみ有効です。
    出力先にすでにテーブルが存在する場合は、本設定の内容ではなく既存テーブルの設定内容でジョブが実行されます。

    「取り込み時間により分割」におけるパーティションの境界

    Google BigQueryの仕様上、パーティションの境界はUTC時間に基づきます。ご注意ください。

    整数範囲パーティショニング

    TROCCOでは、特定のINTEGER列の値に基づいてテーブルを分割する、整数範囲パーティショニングには対応していません。

    必要な権限

    ご利用いただくにあたって必要な権限は以下となります。

    • bigquery.datasets.create
    • bigquery.datasets.get
    • bigquery.jobs.create
    • bigquery.tables.create
    • bigquery.tables.delete
    • bigquery.tables.export
    • bigquery.tables.get
    • bigquery.tables.getData
    • bigquery.tables.list
    • bigquery.tables.update
    • bigquery.tables.updateData