IntelliJ IDEAからSnowflakeに接続してクエリを実行する #SnowflakeDB

SnowflakeはJDBCドライバーを提供しています。これを利用することでJavaプログラムや各種のSQLクライアントツールからSnowflakeに接続してクエリを実行することができます。

本ブログ記事ではIntelliJ IDEAのデータベースツールを使ってSnowflakeに接続する方法をご紹介します(と言っても特別な手順はありません。IntelliJ IDEAのデータベースツールのごく一般的な使い方そのままです)。

動作環境

  • OS : macOS Mojave v10.14.6
  • Snowflake JDBC Driver : v3.10.0
  • IntelliJ IDEA : 2019.2.3

Snowflakeのアカウント登録や基本操作については以下のブログ記事を参照ください。

JDBCドライバーのダウンロード

JDBCドライバーはMaven Central Repositoryからダウンロード可能です。

http://search.maven.org/

また、IntelliJ IDEAのデータベースツールからダウンロードすることも可能です(今回はこちらの方法を利用します)。

Snowflakeへの接続&クエリ実行

IntelliJ IDEAのデータベースツールにはSnowflake用の接続テンプレートがビルトインされています。これを利用するとSnowflakeへの接続設定を簡単に行えます。

  • IntelliJ IDEAのデータベースツールを開きます。

show-intellij-database-tool

  • データソースの追加ボタン(+)をクリック - 「Data Source」-「Snowflake」を選択します。

create-new-datasource

  • データソースの設定画面が起動します。画面下の「Download missing drive files」のリンクをクリックしてSnowflake用のJDBCドライバーをダウンロードします。手元のmacOS環境では、~/Library/Preferences/IntelliJIdea2019.2/jdbc-drivers/Snowflakeにファイルが配置されました。

snowflake-jdbc-connection-configuration-1

  • ホスト名、ユーザー名、パスワードを入力します。それ以外の項目はオプションです。
項目 説明 必須/オプション
Host <アカウントID>.<リージョン>.snowflakecomputing.com 必須 xy12345.ap-southeast-1.snowflakecomputing.com
User ユーザー名 必須 sampleuser
Password パスワード 必須
Database データベース名 オプション SAMPLE_DB
Schema スキーマ名 オプション PUBLIC
Warehouse ウェアハウス名 オプション SAMPLE_WH

snowflake-jdbc-connection-configuration-2

上記以外の接続パラメータを指定したい場合は、JDBCの接続URLを直接編集します。

例えばセッションで利用するロールを指定する場合は、接続URLに「role」パラメータを追加します。

jdbc:snowflake://xy12345.ap-southeast-1.snowflakecomputing.com/?role=samplerole

利用できる接続パラメーターについてはSnowflakeの公式ドキュメントを参照ください。

Configuring and Using the JDBC Driver — Snowflake Documentation

  • 「Test Connection」を実行してSnowflakeに接続できることを確認します。

test-connection

  • 「Schemas」タブから、クエリ実行対象のデータベースを選択します。

select-schema

  • クエリを実行してみます。

execute-query-from-intellij

まとめ

Snowflakeには「Worksheets」という純正のクエリエディタも用意されています。こちらはWebブラウザベースなので手軽に使えるのが魅力です。アドホックなクエリ実行環境としてはこのWorksheetsで十分かもしれません。

より高機能なクエリエディタを使ってSnowflakeにアクセスしたい、という場合は、今回ご紹介した手順を参考に各種SQLクライアントツールからSnowflakeへの接続をお試しください。