転送先 - Google BigQuery
  • 15 Mar 2024
  • ダーク
    ライト
  • PDF

転送先 - Google BigQuery

  • ダーク
    ライト
  • PDF

Article Summary

概要

Google CloudのBigQueryへデータを転送する設定のヘルプページです。

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

troccoの製品サイトでは、お客さまの導入事例を紹介しております。
本ヘルプページとあわせてご覧ください。

制約

設定項目

STEP1 基本設定

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

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

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

STEP2 出力オプション

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

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

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

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

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

補足事項

転送モードについて

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

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

    転送先Google BigQueryの転送モードには、UPSERT (MERGE)がありません。
    UPSERT (MERGE)を行いたい場合の代替案を、DWH上のマスターテーブルを重複なく効率的に更新するにて説明しております。
    是非ご参照ください。

    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

    この記事は役に立ちましたか?