LoginSignup
25
11

More than 1 year has passed since last update.

IntelliJ系(DataGrip含む)でBigQueryに接続する方法

Last updated at Posted at 2020-05-16

注意

注: この記事の内容は古いです。IntelliJのバージョンが2021.1以上の人は以下の方法で接続したほうが良いです。


IntelliJ便利ですよね。
JavaのIDEとして有名ですが、その他にも様々な言語のIDEとしても使えますし、さらにはDBクライアントとしても優秀です。
対応しているDBの種類が豊富ですし、機能もリッチです。
ですが、BigQueryにはデフォルトで対応していないので、そこだけちょっと惜しいです。

この記事ではIntelliJ系のIDEからBigQueryに接続する方法を説明します。

参考にした手法とその問題点

IntelliJ BigQuery でGoogle検索すると以下の記事が最初に見つかります。
https://blog.jetbrains.com/datagrip/2018/07/10/using-bigquery-from-intellij-based-ide/

この記事のとおりにやれば、BigQueryに接続することができそうです。
しかし、、、

貼り付けた画像_2020_05_16_17_10.png

ほげえええええええ!! サービスアカウント!!!サービスアカウントォォ!!!

そうです。サービスアカウントを使っているんです。
本来、サービスアカウントはサーバー等からGCPのサービスを使う時に用いるものですので、これを個人ユーザーが使うのは問題があります。
例えば、この方法で発行したサービスアカウントをチーム皆で使い回すと、DBアクセスをした個人が不明になってしまい、監査的にマズイことに繋がります。
それならばと、個人ごとに個別のサービスアカウントを発行しようとすると今度は管理する必要のあるアカウントの数が倍になってしまい、アカウントの管理コストも倍になります。

ですので、サービスアカウントではなく、ユーザーアカウントでBigQueryに接続しましょう!!!

手順

application_default_credentials.jsonの生成

最初に以下のコマンドを実行して、ユーザーアカウントで認証をするためのJSONファイルを生成します。

$ gcloud auth application-default login

コマンドを実行すると、ブラウザによってGoogleのログインフォームが開かれるので、ログインを行います。
認証が成功すると、~/.config/gcloud/application_default_credentials.jsonというファイルが生成されます。
ぶっちゃけると、後の手順は上に貼ったJetBrainsのBlog記事と変わらないですが、一応書いておきます。

なお、gcloud auth loginをやったことはあるけど、今回のコマンドとの違いが分からないという方は、以下の神ドキュメントを一読することをオススメします。
(ユーザーアカウント, サービスアカウント)×(Cloud SDK, サーバーアプリケーション)という合計4パターンがあることが分かれば体系的に理解しやすいです。

GCP と OAuth2

BigQuery用のJDBCドライバーの取得

以下のページから、JDBCドライバーをダウンロードします。
ODBCドライバーという似た名前のものが上の方で幅をきかせているので、間違ってダウンロードしないように注意しましょう。

BigQuery の Magnitude Simba ドライバ

ダウンロードしたら、zipファイルを解凍して、適当なディレクトリに配置しておきます。

IntelliJにBigQuery Driverを登録

スクリーンショット 2020-05-16 17.43.38.png
Driverを選択して、Driver追加画面を開く。

スクリーンショット 2020-05-16 17.46.10.png

NameをBigQueryにする。
Driver filesにさっきダウンロードしたzipの中にあるjarファイルを全部登録。
Classに com.simba.googlebigquery.jdbc42.Driver を指定。
※ jarファイル登録直後はドロップダウンメニューに表れないので、ちょっと待つ
URL templatesのdefaultに jdbc:bigquery://[{host::https\://www.googleapis.com/bigquery/v2}[:{port::443}]][<;,{:identifier}={:param}>] を指定。

スクリーンショット 2020-05-16 17.50.33.png
AdvancedタブのOAuthTypeを0に設定。

で、OKを押して、BigQuery Driverを登録。

IntelliJにBigQuery Data Sourceを登録

スクリーンショット 2020-05-16 17.52.45.png

Data Source → BigQueryを選択して、Data Source追加画面を開く。

スクリーンショット 2020-05-16 17.56.24.png

NameをBigQueryに指定。

貼り付けた画像_2020_05_16_17_57.png
Advancesタブで以下を指定。
OAuthPvKeyPath: application_default_credentials.json の絶対パス
OAuthServiceAccEmail: application_default_credentials.jsonを生成する時にログインで使ったメールアドレス
ProjectId: いつも使っているGCPプロジェクトのID

スクリーンショット 2020-05-16 18.00.51.png

Generalタブに戻り、Test Connectionで接続確認をしてからOKを押してData Sourceを登録する。

クエリを投げる

貼り付けた画像_2020_05_16_18_03-2.png

Data Source一覧の中にBigQueryがいるので、それを選択し、クエリを書いて実行する。
テーブル名を指定するときには以下の書式で指定する。

`プロジェクトID.データセット名.テーブル名`

Data Source作成の時に指定したProjectId内のテーブルを参照するときには、以下のプロジェクトIDを省略した形式も可。

`データセット名.テーブル名`
25
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
11