
PythonでGoogle BigQueryのデータ転送(Data Transfer)を操作したい時に便利なのが、bigquery_datatransfer
モジュールのDataTransferServiceClient
クラスです。
このクライアントを使うことで、Google広告やGoogleアナリティクスなど外部データソースの自動転送ジョブの一覧を取得したり、管理したりすることができます。
この記事では、DataTransferServiceClient
の基本的な使い方から、主要プロパティ・関数、活用時の注意点までわかりやすく解説します。
DataTransferServiceClient とは?
DataTransferServiceClient
は、Google Cloud の BigQuery Data Transfer Service API を Python から操作するためのクライアントクラスです。
この API は、例えば Cloud Storage や SaaS アプリから BigQuery にデータを 自動で転送 するための仕組みを提供しています。
PythonでこのAPIを使う場合は、google-cloud-bigquery-datatransfer
パッケージを利用します。
このとき、DataTransferServiceClient
は bigquery_datatransfer
モジュール内に含まれるクラス です。
Python で使うには google-cloud-bigquery-datatransfer
パッケージをインストールし、次のようにクライアントを生成します。
1 2 3 4 5 |
from google.cloud import bigquery_datatransfer # モジュールからクライアントクラスを呼び出す client = bigquery_datatransfer.DataTransferServiceClient() |
関係性を整理すると以下のようになります:
名称 | 種類 | 役割 |
---|---|---|
google-cloud-bigquery-datatransfer |
Pythonパッケージ | BigQuery Data Transfer API を扱うためのGoogle公式ライブラリ |
bigquery_datatransfer |
モジュール | BigQuery Data Transfer 関連の API クラスや型をまとめたもの |
DataTransferServiceClient |
クラス | 転送設定の作成・取得・削除や、転送ジョブの起動などを実際に行う役割 |
つまり、bigquery_datatransfer
(または bigquery_datatransfer_v1
)は “転送 API を扱うモジュール群” であり、その中の主要な操作窓口が DataTransferServiceClient
という関係です。
基本的な使い方
クライアントを作成し、現在設定されている転送ジョブを一覧表示する基本的な例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from google.cloud import bigquery_datatransfer # クライアントを作成 client = bigquery_datatransfer.DataTransferServiceClient() # プロジェクトIDとロケーションを指定 project_id = "your-project-id" parent = f"projects/{project_id}/locations/us" # 登録済み転送ジョブを取得 transfer_configs = client.list_transfer_configs(parent=parent) for config in transfer_configs: print(f"Display Name: {config.display_name}") print(f"Data Source: {config.data_source_id}") print(f"Destination Dataset: {config.destination_dataset_id}") print("-" * 40) |
このコードのポイント:
DataTransferServiceClient()
でクライアントを初期化list_transfer_configs()
で転送ジョブの一覧を取得- 各
config
からデータソース・転送先などの情報を取得
具体例①:Cloud Storage からの定期転送を設定
Cloud Storage 内の CSV ファイルを毎日 BigQuery に自動転送する設定を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
from google.cloud import bigquery_datatransfer client = bigquery_datatransfer.DataTransferServiceClient() project_id = "your-project-id" parent = f"projects/{project_id}/locations/us" transfer_config = bigquery_datatransfer.TransferConfig( destination_dataset_id="my_dataset", display_name="Daily Import from GCS", data_source_id="google_cloud_storage", params={ "data_path_template": "gs://my-bucket/data/*.csv", "file_format": "CSV", "skip_leading_rows": "1" }, schedule="every 24 hours" ) response = client.create_transfer_config( parent=parent, transfer_config=transfer_config ) print("Transfer config created:") print(response.name) |
このコードのポイント:
TransferConfig
で転送先・スケジュール・ファイル設定を指定create_transfer_config()
で転送ジョブを作成- これにより Cloud Storage の CSV を毎日 BigQuery に自動取り込み可能
具体例②:転送ジョブを手動で再実行
既存の転送ジョブを手動で再実行する場合の例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from google.cloud import bigquery_datatransfer from datetime import datetime, timedelta client = bigquery_datatransfer.DataTransferServiceClient() transfer_config_name = "projects/your-project-id/locations/us/transferConfigs/123abc456def" start_time = datetime.utcnow() - timedelta(days=1) end_time = datetime.utcnow() client.start_manual_transfer_runs( parent=transfer_config_name, requested_time_range=bigquery_datatransfer.TimeRange( start_time=start_time, end_time=end_time ) ) print("Manual transfer started.") |
このコードのポイント:
start_manual_transfer_runs()
を使用して特定期間のデータを再転送- 失敗した日やデータの抜けを補完したいときに便利
関連する主なプロパティ・関数
DataTransferServiceClient
でよく使う関数・プロパティをまとめます。
関数名 | 説明 |
---|---|
list_transfer_configs(parent) | 指定したプロジェクト内で設定されている すべての転送ジョブ一覧を取得 します。現在どんなデータ転送が設定されているかを確認したいときに使います。 |
create_transfer_config(parent, transfer_config) | 新しい データ転送ジョブを作成 します。たとえば「Cloud Storage のデータを毎日 BigQuery に転送したい」といった設定をここで登録します。 |
start_manual_transfer_runs(parent, requested_time_range) | 既存の転送設定を使って、指定した期間のデータを 手動で転送実行 します。通常はスケジュールで自動実行されますが、テスト目的や特定期間のみ転送したいときに便利です。 |
delete_transfer_config(name) | 指定した転送ジョブを 削除 します。不要になった転送設定を整理するときに使います。 |
get_transfer_config(name) | 特定の転送ジョブの 詳細情報(設定内容など)を取得 します。設定を確認・編集したいときに利用します。 |
list_data_sources(parent) | BigQuery Data Transfer Service で利用できる データソース一覧を取得 します。例:Google 広告、YouTube アナリティクス、Google Cloud Storage、キャンペーンマネージャーなど。 |
個人的には、list_transfer_configs(parent)はよく使います。
BigQueryの転送ジョブ一覧を取得し、スプレッドシートに出力する等でリソース管理の効率化に役立てています。
活用シーン
DataTransferServiceClient
は、単にデータを転送するだけでなく、運用・管理・自動化 の場面でも活躍します。
-
定期的な外部データの集約
Cloud StorageやSalesforce など、外部データを 定期的に BigQuery へ自動転送 できます。
人手での更新作業を減らし、データ分析を常に最新状態で保てます。 -
インフラのコード化(Infrastructure as Code)
Pythonコードで転送設定を定義・管理することで、環境の再現性が高まり、複数環境(開発・本番など)でも 同じ転送設定を簡単に再利用 できます。 -
転送失敗の検知と再実行の自動化
転送ジョブの状態を定期的にチェックし、失敗した場合に 通知や再試行を自動実行 する仕組みも構築できます。
これにより、運用の安定性が大きく向上します。
まとめ
bigquery_datatransfer.DataTransferServiceClient
は、BigQuery Data Transfer APIをPythonから操作するためのクライアントです。
転送ジョブの作成・一覧・削除・再実行をコードで簡単に管理できます。
- BigQueryの自動データ収集を効率化
- コードベースでデータパイプラインを管理
- インフラの自動化や再現性向上に最適
BigQueryの転送ジョブ一覧を取得したり、定期的なデータ転送を自動化したりしたい場合は、DataTransferServiceClient
を積極的に活用してみましょう!