BigQueryからTreasureDataへのデータインポート

# 概要

会社でTreasureDataをデータレイクとして使っているのでBigQueryからのデータインポートを試してみます。

[ドキュメント](https://support.treasuredata.com/hc/en-us/articles/360001647267-Data-Connector-for-Google-BigQuery)を参考に用意されたデータコネクタを利用します。

# 準備

TreasureDataのコネクタ設定の準備として、必要なものは以下

 - BigQueryのJSON keyfile
 - BigQueryのプロジェクトID

## BigQuery側でインポート対象のテーブルを用意

ガイドであったテーブルを作成
<img width="634" alt="スクリーンショット 2019-11-21 17.55.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/8c38e424-1f0c-ea87-4a00-3174be7bd134.png">

## サービスアカウントキーを作成

JSON keyfileを発行するためサービスアカウントキーを作成します。

[手順](https://cloud.google.com/iam/docs/creating-managing-service-account-keys)通り実行していきます。

1. GCP Console で [IAM と管理] ページを開きます。

2. [IAM と管理] ページを開く

3. プロジェクトを選択し、[続行] をクリックします。

4. 左側のナビゲーション メニューで [サービス アカウント] をクリックします。

5. キーを作成するサービス アカウントを見つけ、その行の詳細ボタン ︙ をクリックして、[キーを作成] をクリックします。

6. [キーのタイプ] を選択して、[作成] をクリックします。

---

確認してみるとサービスアカウントいませんね...
<img width="977" alt="スクリーンショット 2019-11-21 18.01.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/069bffec-9160-d0e0-149e-d62a626ba449.png">

test用に作成します。
TDのドキュメントにあるロールは注意がいりそうです。
<img width="802" alt="スクリーンショット 2019-11-21 18.03.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/beb70ef2-4f12-b793-41a3-b879cc344beb.png">

とりあえず編集者としてロールをつけてサービスアカウントを作成
<img width="1055" alt="スクリーンショット 2019-11-21 18.05.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/0af2883c-724b-7323-de28-7082e497b99e.png">

続いて、手順のようにキーをJSONとして作成するとファイルとしてダウンロードされました。
これでBigQuery側の準備はできました。

# TreasureDataでのコネクタ設定

さっそくカタログからBigQueryを選択してみます。
<img width="475" alt="スクリーンショット 2019-11-21 18.15.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/e890a6ee-1107-9aa5-8cc6-d32a14e34cd1.png">

<img width="803" alt="スクリーンショット 2019-11-21 18.16.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/b415dcf1-9b8e-c39c-5cd7-2194b1fce2ec.png">

さきほどのJSON keyfileの入力が求められますね。
入力してContinueを押すと、認証情報が作成されます。
<img width="544" alt="スクリーンショット 2019-11-21 18.20.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/f66f2c00-1b22-2073-a57a-605ee855f46f.png">

続いて「New Source」よりコネクタを作成します。
見覚えのあるガイドで使ったサンプルクエリを使ってみます。
（その他の項目は、特に変更なしです。）
<img width="803" alt="スクリーンショット 2019-11-21 18.26.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/52873ea7-da4b-3579-6704-5a094ddd12c6.png">

プレビューも見えます。
カラム設定も今回は問題なさそうなのでそのまま進めます。
<img width="799" alt="スクリーンショット 2019-11-21 18.28.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/d12ec77e-6034-a3f8-a32a-ffb998d4d4c2.png">

続いてインポート先の情報設定です。
ここは必要に応じて新たに作成したり、既存のテーブルに追加したりが選べます。
今回は新規のテーブルを作ってみます。

<img width="799" alt="スクリーンショット 2019-11-21 18.30.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/2eb040e3-e7a0-c171-d32c-489ca62358d9.png">

スケジュール設定は不要なのでスキップ

<img width="799" alt="スクリーンショット 2019-11-21 18.31.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/93aed4b5-a525-8c66-ff29-d8e1696a34b1.png">

最後に名前をつけて実行します。

<img width="797" alt="スクリーンショット 2019-11-21 18.32.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/cb42fbd8-b656-0866-57b3-0c741f00e3db.png">

ログを見ながら少し待っているとWeb通知が届き、どうやら正常に完了したようです。
テーブルを見てみましょう。

<img width="1143" alt="スクリーンショット 2019-11-21 18.34.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519804/620ee1dd-cb9d-2623-4f5c-297796dac9b5.png">

無事取り込めてますね。

### 気になっているお金のところ

無料トライアルのクレジット残額を見ていただけだと、このインポート実行では変化なし...
ここはもう少し大きなクエリを実行してみたりしてどうなるのか検証が必要そう。


# お片付け
やりたいことは試せたのでお片付けします。

TreasureData側
 - 作成したテーブル
 - BQ用のコネクタ
 - BQ用の認証情報
BigQuery側
 - 作成したデータセット・テーブル
 - テスト用のサービスアカウント