はじめに
SnowflakeとDataikuは高いシナジーを発揮することが可能で、Dataikuを活用されているお客様の多くが、データソースとしてSnowflakeを使用しています。
具体的には、Snowflakeのデータストレージとコンピューティングのパフォーマンスの高さを、Dataikuの誰でも使える管理されたプラットフォームをかぶせることにより、データパイプライン構築やデータサイエンスのプロジェクトを高速に高度化、大規模化することが可能になります。
今回は、DataikuとSnowflakeの接続についてまとめてみました。
DataikuとSnowflakeの接続
以下の手順で接続します。
- Connectionの作成
DataikuのHome画面の右上の[Navigate to other sections of Dataiku]から「Administartion(アドミニストレーション)」>「Connection」から作成が可能です。(Stacks版のみ、Dataiku CloudではLaunchpadの「Connection」から作成)


 
- 画面右上の[NEW CONNECTION]から「Snowflake」をクリックします。

 
- New connection nameに任意のコネクション名を設定し、以下の入力項目に接続先のSnowflakeの情報を入力します。

- Host
- Snowflakeのサインイン画面のURLから取得できます。 「xxxx-yyyy..ap-northeast-1.aws.snowflakecomputing.com」の箇所がHost名になります。 (AWSの場合)
 

 
- Database
- 出力結果を格納したいデータベースを入力します。Snowflake上のHome画面の画面左のメニューから「Data」>「Databases」を選択し、画面右上の「+Database」から作成することができます。
 

 
- Warehouse
- SnowflakeのSQLワークシート上で「SELECT CURRENT_WAREHOUSE();」と入力し、右上の「▶」から実行すると表示されます。
 

 
- Role
- Snowflakeの画面左下の「ACCOUNTADMIN」の箇所がコネクション権限を付与するRoleに該当します。
 

 
- Schema
- 作成したDatabaseの下層にあるスキーマを入力します。
 

 
- User
- 1.の「ユーザー名」を入力します。
 
 
- Password
- 1. の「パスワード」を入力します。
 
 
 - Host
 
- 3.が入力完了後、画面左下の「SAVE」をクリックし、Connectionを作成します。

 
- フローに遷移し、「データセット」>「SQLデータベース」>「Snowflake」を選択します。

 
- Connectionに先ほど作成したコネクション名を選択し「GET TABLES LIST」をクリック
表示されたフォームの「CONFIRM」をクリックします。


 
- Tableのドロップダウンリストから接続したいテーブルを選択する

 
- テーブル選択後、「TEST TABLE」を選択し、問題なく読み込めているか確認
確認後、画面右上のデータセット名を入力し、「CREATE」をクリックします。


 
※上記の方法はテーブル以外にもビュー、マテリアライズドビューもDataikuのデータセットとして読み込むことができます。
(Appendix)内部STAGE上のデータ接続
テーブルやビューに対して接続する方法を紹介しましたが、Snowflakeの内部STAGEデータについても、後述の方法によりDataikuに接続することができます。
- 上記1~5までの手順で設定、Connection画面のModeを「SQL query」を選択します。

 
- 
- SQL query入力フォームに以下の図のように記入します。
入力の際はいくつか注意点がございます。
- STAGE上のテーブルのため、SELECT *で全カラムを設定することができません。csvのn列目のカラムのカラム名を一つずつ定義する必要があります。($n AS カラム名)
 
- FROM句の後は、STAGE/ファイル名のようにパスを指定する必要があります
 

 
 - SQL query入力フォームに以下の図のように記入します。
入力の際はいくつか注意点がございます。
 
- 右上のデータセット名を入力し、「CREATE」ボタンをクリックすることでデータを接続することができます。
 

まとめ
今回は、SnowflakeのデータをDataikuに接続するための手順を紹介しました。テーブルデータのみならず、他のオブジェクトにも接続することができますので、分析・機械学習を構築してみたいオブジェクトがありましたら、本ブログを参考に作成していただければと思います。
次回は、作成したモデルをUDFとしてSnowflakeに出力する方法について解説いたします。