はじめに
この記事では、BigQuery に存在するデータを Snowflake に移行する方法を紹介します。
具体的な流れは以下の通りです。
- BigQuery に存在するデータを GCS にエスクポートする
- Snowflake でクラウドストレージ統合を作成し、Cloud Storage Service アカウントを取得する
- バケットオブジェクトにアクセスするためのサービスアカウント権限を付与する
- 外部ステージを作成し、データをロードする
BigQuery に存在するデータを GCS にエスクポートする
以下のクエリを用いて、Snowflake に移行したいデータを GCS にエクスポートします。今回は csv 形式で GCS にデータを保存していきます。
Snowflake でクラウドストレージ統合を作成し、Cloud Storage Service アカウントを取得する
Snowflake 上で以下のクエリを用いて、ストレージ統合を行います。STORAGE_ALLOWED_LOCATIONS の部分では参照したい GCS のパスを記載してください。
バケットオブジェクトにアクセスするためのサービスアカウント権限を付与する
どのアカウトに後ほど IAM の権限付与をすればいいか判別するために、Snowflake 上で以下のクエリを実行します。
実行すると以下の結果が表示されます。赤枠のアカウトに対して GCP の IAM から GCS の権限を付与します。
必要な権限の詳細についてはこちらに記載されております。

外部ステージを作成し、データをロードする
GCS の権限が付与されため、Snowflake 上で指定した GCS のデータが参照できるようになりました。
Snowflake 上で以下のクエリを実行し、ステージを作成します。
ステージが作成されているかは以下のクエリで確認することができます。
ステージを作成したら以下のクエリを実行すると、テーブルが作成されます。※
※あらかじめテーブルを作っていない場合は以下のクエリを参考にテーブルを作成してください。
詳細はこちらに記載されております。
補足
ステージ
クラウドストレージ内のデータファイルの場所をステージと呼びます。
ウェアハウスについて
存在しているウェアハウスは以下のクエリを用いて、確認できます。
使用したいウェアハウスは以下のクエリを用いて、指定ができます。
まとめ
今回は BigQuery にあるデータを Snowflake に移行させる方法について解説をしました。
BigQuery のデータを直接参照することはできず、解説した通りストレージを通して Snowflake に移行させる必要があります。
今回は Cloud Storage を使用しましたが、AWS の S3 など別のストレージでも同様に Snowflake へデータを移行させることが可能です。
データ移行は様々な方法があるため、自社にあった方法を検討していきましょう。
参考

備考
Hakky では社内のデータ活用やサービスとしてデータ提供を行うためのソリューションを展開しております。
Snowflake など具体的な相談はもちろんのこと、「どんなことをお願いできるのか知りたい」や「こんなことをやりたい」など、ご検討段階でも構いませんので、ぜひお気軽にフォームよりお問い合わせくださいませ。