リノシス開発者ブログ

株式会社リノシスのエンジニアブログです。

BigQuery でデータセットをリージョン間でコピー

はじめに

リノシスの神谷です。代表やってます。

BigQuery、ご存知の通りリージョンをまたいだクエリーは書けないので、データセット/テーブルが異なるリージョンにあると、これまでは一旦CSV(かJSON)に落として、違うリージョンでテーブル作ってアップロードして、、と面倒でした。

今日、久しぶりにリージョンまたぐ必要があったのですが、改めてググると、なんとリージョンをまたいでデータセットを移行できるようになってるではないですか!なので、その方法のメモ。(まだベータ版だけどね)

 

リージョンをまたいだデータセットの移行方法

BigQuery Data Transfer Serviceというのがあるらしい。

 

BigQuery Data Transfer Serviceの有効化

以下の手順を実行する必要があります。

  • プロジェクトを作成して BigQuery API を有効にする → ここ
  • BigQuery Data Transfer Service を有効にする → 多分ここ

プロジェクトのオーナー権限が必要です。

コピー実行に必要な権限

必要な権限は以下です。

  • コピー転送を作成するための bigquery.transfers.update 権限
  • コピー元データセットに対する bigquery.tables.list 権限
  • コピー先データセットに対する bigquery.tables.list 権限と bigquery.tables.create 権限

プロジェクトのオーナーなら気にする必要なしw

 

データセットのコピー実行

コンソールからできます。

まずはコピーしたいデータセットを選択して、「データセットをコピー」をクリックします。

f:id:RenoSys:20200311230931p:plain

データセットを選択して、コピーを選択

そうすると、コピー先が選べるので、コピー先のデータセット名を選択してコピーを実行。これだけ。(コピー先のデータセットは必要に応じ、先に作っておいてください。

f:id:RenoSys:20200311231240p:plain

(ここでは両方ともロケーションはUSだけど、東京にもコピーできる)

コピーできるリージョン

現状、コピーできるのはBigQuery Data Transfer Service が現在サポートされているリージョンでのみ、だそうです。(詳しくはここを見てください。)

ただ、見た限り、だいたいどこでもできそう。

詳しくは

これを読んでください。

これでまたBigQuery生活が捗りますね!