2023/03/29_Snowflake・ Dataikuのコラボ ～UDFの活用でsnowflakeエンジンでテストデータを予測～

## はじめに

このブログをご覧いただきありがとうございます。
今回はSnowflakeとDataikuのコラボについて、簡単に紹介しています。
最後まで、読んでいただけると嬉しいです。

## 本ブログの流れ

#### ・Snowflakeの特徴・メリット
#### ・Dataikuの特徴・メリット
#### ・Snowflake・Dataikuのコラボメリット
#### ・まとめ

## １．Snowflake

Snowflakeは、単なるDWHを超えてデータシェアリング、マルチクラウドレプリケーションなどを備えたプラットフォームサービスに進化を遂げた「Data Cloud」です。

一般的に、企業のビッグデータ活用に必要なシステム領域は、「データレイク」「データウェアハウス」「データマート」の3点で構成されます。
Snowflakeの data cloud は、この3つすべてをカバーすることが可能です。

##### 特徴
今までDWHはデータの保管やデータを使って加工する処理が1つのレイヤー（層）で管理されていましたが、Snowflakeはデータを保管するストレージレイヤーとデータを使って処理するコンピュートレイヤーが完全に分離しているアーキテクチャとなっているのが大きな特徴になります。
またSnowflakeはコンピュートした分、支払う従量課金制も大きな特徴となっています。
Snowflakeの主な金額は、データのストレージ料金 ＋ ウェアハウスサイズ × 時間 になります。

https://docs.snowflake.com/ja/user-guide/warehouses-overview

##### メリット
Snowflakeのメリットは複数のワークロードで大規模並列処理が可能なことです。
先ほど説明しましたが、Snowflakeはストレージレイヤーとコンピューㇳレイヤーが分離しているのが特徴です。
なので、1つのデータを複数のワークロードで使用することが可能です。
処理する仮想マシンのウェアハウスサイズを容易に変更できるので、適正なサイズを使うことによってコストかつ時間効率の向上につなげることができます。
またSnowflake同士のデータの共有や管理が、とても簡単なのがメリットになります。

![仮想マシン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610573/1e929130-741e-b638-b7e1-08cc9a211b92.png)




## 2.　Dataikuについて

「Dataiku」（データイク）は、データの準備からデータの加工、モデリング（機械学習モデルの作成）、デプロイまでの
全工程を一つのUIでカバーする「データサイエンス・機械学習プラットフォーム」です。

#### ■特徴
Dataikuのコンセプトは、データサイエンティストから初級アナリストまで様々な
メンバーで構成されるデータ分析チームの誰もが扱いやすいコラボレーション
データサイエンスプラットフォームです。

1つのプラットフォームで関係者全員が共同で課題を解決することができ、
データの準備からデータの加工、モデリング（機械学習モデルの作成）、デプロイまでの全工程をブラウザーのGUI操作で作成することができます。

![プラットフォーム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610573/49acbfd6-72b7-96a6-dfb0-e187cd3ef19c.png)



#### ■メリット
メリットは４つあります。

##### ・１点目
データ準備からデプロイといった一連の全工程を1つのツールでカバーしていることです。
##### ・２点目
Dataikuでは細やかな権限管理やすべての操作ログを残すことができるので、安全で効率的なデータ分析ができます。
##### ・３点目
非コーダーはGUI操作で簡単にデータ処理や機械学習モデルを作成することができます。またコーダーは今まで書いてきたプログラムを無駄なく有効利用することができます。
##### ・４点目
Dataikuでは作成したフローを自動で実行する機能や結果をグラフなどで表現するダッシュボード、データ分析を継続的に運用する上で必要な機能を完備していることです。


## ３.　SnowflakeとDataikuのコラボメリット
コラボメリットは２つあります。
##### ・１つ目
１つ目のメリットは、ツール間のデータ転送が不要なことです。
下図は、Dataikuのフローを示します。

![Dataiku_Flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610573/738ab325-0462-c9f3-6f56-681c003c85b4.png)

赤い四角で囲まれている部分は、左側のデータセット（orders_SF）を加工して右側のデータセット（orders_prepared_SF）に出力しているフローを表しています。
入力データと出力データが同じデータベースに配置されている場合、データの処理をデータベース・エンジン側で処理をします。
これにより、DataikuとDB間（今回はSnowflake）とのデータ転送が不要になります。
さらにSnowflakeは前章のメリットにもあります、仮想マシンのウェアハウスサイズを変更できることから大量データの処理が得意なサービスでもありますので、大量データ処理の作業効率の向上につなげることができます。


##### ・２つ目
２つ目のメリットは、SnowflakeはDataikuで作成した機械学習モデルをUDFとして実行することができます。
UDFとはUser Define Function の略称でSnowflake側で実行するために必要なユーザ定義関数のことです。
手順として、Dataikuで作成した機械学習モデルをSnowflakeにエクスポートします。
![Export‗Snowflake.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610573/c1c535a4-b02e-9cbb-debd-f87e95af74dd.png)
Snowflakeへの接続名とユーザ定義関数名を設定して、エクスポートします。
![Export‗Snowflake_information.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610573/3d56add1-e149-f187-f362-5b34e6aaf07f.png)



エクスポートに成功しましたら、SnowflakeにUDFが登録されていることを確認します。
![Snowflake_UDF_information.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610573/3a95ad18-1686-d414-39ba-edf6fc44fd08.png)
確認できましたら、ワークシートにSQL文を書き、登録したUDFを呼び出しテストデータを予測を実行します。下図はSQL文とその結果を表しています。
![Snowflake_worksheet2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610573/e783e44f-3019-6839-5d32-1805dcc76cee.png)
Snowflakeは大量データでの処理が可能なので、データ数によってDataikuを使って機械学習をするのか、Snowflake使い分けるのも1つの手法です！

この章では、DataikuとSnowflakeのコラボメリットについて説明してきました。





## ４．まとめ

今回は、SnowflakeとDataikuのコラボによって生まれるメリットについてご紹介してきました。

今回の記事をまとめると
・Dataikuはデータ処理をDB（データベース）側のエンジンで実行することができるため、データ間の転送が不要
・SnowflakeではDataikuで作成した機会学習モデルはUDFとして登録することができる。
・登録したUDFを使用し、Snowflake側でSELECT文で推論を実行することができる。
・Snowflakeは最適なストレージと計算リソースを活用できるので、コスト削減と時間効率UPにつながります。

現代、データはとても価値あるモノになってきました。本記事を読んでいただき、少しでも参考になれば嬉しく思います。
本ブログを読んでくださり、ありがとうございました。

Have a good day!