IntelliJ系(DataGrip含む)でBigQueryに接続する方法
注意
注: この記事の内容は古いです。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に接続することができそうです。
しかし、、、
ほげえええええええ!! サービスアカウント!!!サービスアカウントォォ!!!
そうです。サービスアカウントを使っているんです。
本来、サービスアカウントはサーバー等から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パターンがあることが分かれば体系的に理解しやすいです。
BigQuery用のJDBCドライバーの取得
以下のページから、JDBCドライバーをダウンロードします。
ODBCドライバーという似た名前のものが上の方で幅をきかせているので、間違ってダウンロードしないように注意しましょう。
BigQuery の Magnitude Simba ドライバ
ダウンロードしたら、zipファイルを解凍して、適当なディレクトリに配置しておきます。
IntelliJにBigQuery Driverを登録
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}>]
を指定。
で、OKを押して、BigQuery Driverを登録。
IntelliJにBigQuery Data Sourceを登録
Data Source → BigQueryを選択して、Data Source追加画面を開く。
NameをBigQueryに指定。
Advancesタブで以下を指定。
OAuthPvKeyPath: application_default_credentials.json
の絶対パス
OAuthServiceAccEmail: application_default_credentials.json
を生成する時にログインで使ったメールアドレス
ProjectId: いつも使っているGCPプロジェクトのID
Generalタブに戻り、Test Connectionで接続確認をしてからOKを押してData Sourceを登録する。
クエリを投げる
Data Source一覧の中にBigQueryがいるので、それを選択し、クエリを書いて実行する。
テーブル名を指定するときには以下の書式で指定する。
`プロジェクトID.データセット名.テーブル名`
Data Source作成の時に指定したProjectId内のテーブルを参照するときには、以下のプロジェクトIDを省略した形式も可。
`データセット名.テーブル名`
Author And Source
この問題について(IntelliJ系(DataGrip含む)でBigQueryに接続する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/shiozaki/items/33bf33b52d68c6261a70著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .