Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

BigQuery内でデータをコピーする方法

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

By Joshua FoxJun 15, 20202 min read
Joshua Fox

About Joshua Fox

Joshua Fox has been a software architect in innovative technology companies for 20 years. Now, he advises tech startups and growth companies on architecture and cost optimization for Google Cloud Platform and Amazon Web Services; also publishing articles, and speaking to cloud engineers.

He has a PhD from Harvard University and a BA in math from Brandeis.

My personal page

BigQuery内のテーブル間でデータをコピーする作業は、近年で大幅に簡単になりました。とはいえ方法は今も複数あり、それぞれに異なる制約があって混乱しがちです。本記事では各手法をメリット・デメリットとあわせて解説します。

かつて、リージョンをまたぐデータコピーは厄介な作業でした。

PerfectScale™ for Kubernetes

Ready to optimize?

Get your free Kubernetes savings analysis

Storage経由でコピーする

BigQueryからCloud Storageへ書き出し、別リージョンのBigQueryへ戻す方法です。手順が一段増えるだけでなく、コストもかさみがちです。さらにスケジューリングやバッファリング、並列化などをComposerなどで自前で組み立てる必要がありました。

Dataset Copying

最近ではDataset Copying機能の登場で、この作業は格段にラクになりました。リージョンをまたいで利用でき、ネットワーク費用を除けば無料です。スケジューリングなどの関連機能も最初から組み込まれています。

Your cloud bill shouldn't be a mystery

Optimization, automation, expertise. In one platform.

`bq`、Job API、Copy Tablesによるリージョン内コピー

同一リージョン内のコピーは以前から比較的容易で、しかも無料です。コマンドラインでbq cpを実行する、Job APIに対してコードを書く、あるいはCloud Consoleの「Copy Tables」を使う、といった選択肢があります。

Scheduled Queries

Scheduled Queriesも、リージョン内コピーのもう一つの選択肢です。無料ではありませんが柔軟性が高く、任意のSELECT文を書いてターゲットテーブルへ挿入できます。名前のとおりスケジューリング機能も標準搭載です。

ここまで紹介した方法のうち、よくあるユースケースである「取り込み時間でパーティション分割されたテーブルの日次増分バックアップ」に対応できるのは、bq cpとScheduled Queriesだけです。直近1日分のパーティションのみをコピーし、ターゲットテーブルでもパーティションとして保持できるのはこの2つに限られます。

各手法を表にまとめると次のとおりです: