Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

CData JDBC Driverを使って、DbVisualizerからGoogle BigQueryのSQLを実行する

前回の記事でWeb ConsoleベースでBigQueryと戯れました。

kageura.hatenadiary.jp

でもBigQuery、せっかくSQL(正確にはちょっと方言がはいるのだけど)が使えるのだから、WebConsoleだけじゃなく普段使い慣れたツールから叩きたい! という方が居るはず!

というわけで、今回はクライアントツールからBigQueryと戯れてみました。

必要なもの

JDBCドライバーが使えるツールなら、Eclipsとかでもいいのですが、今回は私がメインで使っているDbVisualizerを使います。

www.dbvis.com

あとは、以下のCData BigQuery JDBC Driverをダウンロードしておきます(30日間試用版があります)

www.cdata.com

ClientIDとClientSecretの入手

BigQueryにはOAuthでアクセスするので、まず認証用のClientIDとClientSecretを入手します。

GCPのコンソール画面を表示し、BigQueryが含まれるプロジェクトを選択の上、「プロジェクト設定に移動」をクリックします。

console.cloud.google.com

f:id:sugimomoto:20180217004943p:plain

[IAMと管理]の画面に移動するので[API認証情報]をクリック

f:id:sugimomoto:20180217004948p:plain

ここで認証情報を作成します。

[認証情報を作成]→[OAuthクライアントID]をクリック

f:id:sugimomoto:20180217004953p:plain

[アプリケーションの種類]では[その他]を選択し、適切な名前を付けて[作成]をクリックします。

f:id:sugimomoto:20180217004958p:plain

これで接続に必要な[ClientID]と[ClientSecret]が入手できます。

f:id:sugimomoto:20180217005003p:plain

DbVisualizerで接続

次にDbVisualizerでBigQueryに接続できるようにします。

接続の際にJDBCドライバーが必要になるので、インストールしておいてください。

その上で、インストールしたJDBC Driverを読み込みます。

DbVisualizerを立ち上げて[Tools]→[Driver Manager]を選択し

f:id:sugimomoto:20180217005008p:plain

左上の[+]ボタンをクリック

f:id:sugimomoto:20180217005013p:plain

任意の名前を付けて、[フォルダ]アイコンをクリックします。

f:id:sugimomoto:20180217005017p:plain

[C:\Program Files\CData\CData JDBC Driver for Google BigQuery 2017J\lib]にBigQueryのドライバーライブラリである[cdata.jdbc.googlebigquery.jar]があるので、これを参照します。

f:id:sugimomoto:20180217005022p:plain

以下のような状態になればOKです。

f:id:sugimomoto:20180217005027p:plain

続いて、Connectionの作成です。

DbVisualizerのメイン画面に戻って[Connection]ボタンをクリック

f:id:sugimomoto:20180217005032p:plain

任意の名称と、先程登録したBig QueryのDriverを選択し、Database URLを以下のような形式で入力します。ここで先程入手したClientID・ClientSecret、それから対象となるDatasetIdを指定します。

jdbc:googlebigquery:InitiateOAuth=GETANDREFRESH;ProjectId=***;DatasetId=***;OAuth Client Id=****.apps.googleusercontent.com;OAuth Client Secret=****; 

Databse typeはDefaultのまま、Database User IDとPasswordは不要です。でOKです。

細かな接続方法は以下のURLからどうぞ。

http://cdn.cdata.com/help/HBC/jdbc/pg_connectionj.htm

f:id:sugimomoto:20180217005039p:plain

これで、Connectをクリックすれば完了です。

以下のように、ツリーが開けるようになり、Datasetに登録されているTable一覧が見えると思います。

f:id:sugimomoto:20180217005044p:plain

SQLも普段と同じように叩くことができます。

f:id:sugimomoto:20180217005048p:plain

内部的にはREST APIが使われていて、Jobs/Queryのリクエストが実行されています。

なので、もちろんBigQueryの課金が発生します!! 要注意!!

サポートされるSQLは以下を参照してみてください。一部DDL等は利用できないので要注意です。

cdn.cdata.com

あとLegacySQLですが、接続文字列を設定することで利用することが可能です。その他BigQueryの方言に関するいくつかの調整が可能なので、このクエリどうなってるの?という場合は、以下のリファレンスを参照してみてください。

cdn.cdata.com

おわりに

次回はもうちょっとDriverを使ったいろいろな試みを書いていきたいかなぁと思います。