Google BigQueryに対し、JDBCにて接続を行い、結果を取得する過程を記述していきます!
#目次
1.Google BigQuery用のProgress DataDirectのJDBCコネクタのダウンロード、インストール
2.Google BigQueryでのサービスアカウント認証
3.BigQuery APIの追加とデータセット、テーブルの追加
4.Dbeaverのダウンロード
5.BigQueryコネクタをDbeaverに登録する
6.Google BigQueryへの接続設定、データの閲覧
7.補足
#実行環境
OS: Windows10 HOME
OSビルド: 18362.778
###1.Google BigQuery用のProgress DataDirectのJDBCコネクタのダウンロード、インストール
まず、https://www.progress.com/connectors/google-bigquery へアクセスし、DOWNLOAD JDBC CONNECTORSのバー内にあるWindowsをクリックします(図①)
そうしたら図②のページに遷移するので、画面右側の必要事項に入力して下のDOWNLOADを押しましょう。
ダウンロードが始まるとブラウザが遷移して図2.5の画面になります。このページではProgress DataDirect for JDBCのガイドが読めるので、詳しいことが知りたいときには参考にしましょう.
そうするとダウンロードが始まるので、終わったらPROGRESS_DATADIRECT_JDBC_GOOGLEBIGQUERY_WIN.zipというファイルを解凍します。そこでwindows使用の方はPROGRESS_DATADIRECT_JDBC_INSTALL.exeを実行しましょう。インストーラが起動したら基本的にはNextをクリックして次に進みますが、図③の表示になればI accept~の方を選択しましょう。
図④の表示になったらInstallをクリックします。
インストールが完了すれば図⑤が表示されるのでDoneをクリックしてインストーラを終了します。
###2.Google BigQueryでのサービスアカウント認証
まずhttps://console.cloud.google.com/ へアクセスし、図⑥の左上の縦三本のマークをクリックしてナビゲーションメニューを開きます(もしまだGoogle Cloud Plutformでプロジェクトを作成されたことがない方は
https://cloud.google.com/resource-manager/docs/creating-managing-projects?hl=ja を参照してください)。そうすると、メニューの中に「IAMと管理>サービスアカウント」という項目があるのでそちらをクリックします。
そうすると、図⑦のような画面が出るので画面上部のあるサービスアカウントの作成をクリックします。
ここで図⑧のようにサービスアカウント名と、サービスアカウントの説明を入力して作成をクリックします。
そして図⑨のようにロールを選択をクリックしスクロールの中からBigQuery>BigQuery管理者を選択します。
次に遷移した画面の下の方に「+キーを作成」というボタンがあるのでクリックします。図⑩のように画面右側だけ明るくなったらJSONを選択し作成をクリックしましょう。するとjsonファイルがダウンロードされます。このファイルはあとで使用します。最後に完了を押せばサービスアカウントの作成は完了です。
###3.BigQuery APIの追加とデータセット、テーブルの追加
Google Cloud Platformのトップページへ遷移します。その画面上に「プロダクトとリソースの検索」という検索ボックスがあるので「BigQuery」と検索します。するとBigQuery APIをまだ導入していない方は追加できるので追加してください。そうすると図10.1の画面に遷移するので画面左側の「+データを追加>プロジェクトを固定」をクリックし、手順2でサービスアカウントを作成したプロジェクトを選択します。するとプロジェクトIDが左下に追加されるので画面右下のデータセットの作成をクリックします。
すると図10.2のようになるので、データセットIDという項目にだけ「bigqueryJDBC」と入力し、「データセットを作成」をクリックします。すると先ほど選択したプロジェクトIDの配下に「bigqueryJDBC」が作成されます。
最後にテーブルを作成します。図10.3のテーブルを作成をクリックします。
すると、テーブルの詳細情報を入力できる画面が現れるので図10.4のように入力します。その前にローカル環境でcsvファイルを作成して、適当にデータを入力しておきましょう(手順6の最後でデータがきちんと読み込めているか確認するため)。入力出来たらテーブルの作成を押します。
###4.Dbeaverのダウンロード
まずはDbeaverというクエリツールをダウンロードします。https://dbeaver.io/download/ へアクセスし
Community EditionとEnterprise Editionがありますが必ずEnterprise Editionの方をダウンロードしてください(DownloadボタンはWebページを下にスクロールしたところにあります(図11))。そして遷移した先のページで自分のOperation Systemに合ったリンクをクリックします(ちなみに私はWindowsの64bitでした(自分のbitを確かめるには「32bit 64bit 確認」とでもググってみてください))。するとダウンロードが始まります。
インストーラを起動したら次へを押して進んでいきますが、途中で図12の選択肢が出てきますがFor anyone~の方を選択します。
あとは次へボタンをインストールへ変わるまでクリックし続けます。そうすればインストールの完了です(インストールが終わるとデスクトップにショートカットを作成しますかという表示が出てくるので、作成しておきましょう。すぐに次のステップへ進むことができます)。
###5.BigQueryコネクタをDbeaverに登録する
では、Dbeaverを起動します。そうしたらメニューバーのデータベース>ドライバーマネージャーを選択します(図13)
次に新規を押して、ドライバ名には任意の名前、クラス名には(com.ddtek.jdbc.googlebigquery.GoogleBigQueryDriver)をコピーアンドペーストします。最後に[ファイルの追加]をクリックし、目次の1でダウンロードしたDataDirect JDBCドライバの中にある「googlebigquery.jar」への絶対パスを指定します(デフォルトでダウンロードした場合(C:\Program Files\Progress\DataDirect\JDBC_60\libに存在します))(図14)。これでOKを押せばドライバの設定は完了です。
###6.Google BigQueryへの接続設定、データの閲覧
次に、Dbeaverのメニューバーのデータベース>新しい接続をクリックします。そこに先ほど自分で命名したドライバが存在するのでそれを選択して次へを押します。すると図15のような画面が現れます。
次に、JDBC URLに以下のURLを入力します。
jdbc:datadirect:googlebigquery:AuthenticationMethod=serviceaccount;Project=yourprojectID>;Dataset=your dataset ID;ServiceAccountEmail=email@yourprojectname.iam.gserviceaccount.com;ServiceAccountPrivateKey=/path-to/json-or-p12-file
改変する項目は以下の通りです。
Project - Google cloud Platform上で確認できるプロジェクトIDです
DataSet - 手順3で登録したデータセット名です(手順通りにやっているならば「bigqueryJDBC」となっているはずです)
ServiceAccountEmail – 手順2で作成したサービスアカウントのメールアドレスです(「IAMと管理>サービスアカウント」から確認できます)
ServiceAccountPrivateKey – 手順2で作成したjsonファイルへの絶対パス(C:\Users\user名\Desktop..)です(キー.jsonまでパスに含めます。)。
全部入力し終えたらテスト接続をクリックします。それがうまくいけば図13の左側にあるデータベースナビゲータの中にあるドライバを選択し右クリック>接続を押します。これでGoogle BigQueryのデータベースをクエリできるようになりました。試しに、図15のようにSQL文を入力し、表示してみましょう(FROM文はBigQueryをそのまま操作できるため「データセット名.テーブル名」となっています)。すると画面下にテーブルのデータが表示されます。以上でGoogle BigQueryに対し、JDBCにて接続を行い、結果を取得することができました!
###7.補足
この記事はhttps://www.progress.com/tutorials/jdbc/connect-and-query-google-bigquery-using-jdbc-connector を参考にし、より具体的に説明しています。