Dataikuを案件などで本格的に使っていくうえで避けては通れないvariablesについて紹介します。
参考サイト:https://academy.dataiku.com/variables-101/608267
variablesとは
Dataikuのフローやシナリオ、pythonレシピやRレシピなどで使える変数です。
Applicationsやシナリオと組み合わせることで、Dataikuでできることの幅がぐっと広がります。
variablesの定義
プロジェクトの上部のメニューから、Variables設定画面に行くことができます。
上記VariablesをクリックするとProject variablesを設定する画面になります。
Project variablesにはGlobal variablesとLocal varialbesの二種類があり、どちらもプロジェクト固有の変数です。次のような違いがあります。
- Local variablesで定義される変数はインスタンス固有。Design nodeからAutomation nodeにデプロイするバンドルには含まれない。
- Global variablesは、Automation nodeにデプロイするバンドルに含むことができる。
つまり、実運用で使うvariablesは、Global variablesに設定しなければならないということです。
variablesを試してみる
ここでは簡単に、Visual recipe内でvariablesを試してみます。
プロジェクトのインポート
[+New PROJECT] > [DSS tutorials]>[Advanced Designer] > [Dataiku Applications(Tutorial)]で、Tutorial用プロジェクトをインポートします。
フローは以下。本来はApplicationsという別の機能の説明用Tutorialを借りてきています。今回、用いるのはこのごく一部。
最初はフローがBuildされていないので、まずはフローをBuildします。
一番左側のオレンジの丸(ダウンロードレシピ)を右クリックして[Build Flow outputs reachable from here]をクリック。
デフォルトでBuild required dependenciesが指定されているのでそのまま[BUILD]押下。
ネットワークの問題で最初のダウンロードでうまくいかない場合は、以下を手動でダウンロードして用います。
https://archive.ics.uci.edu/ml/machine-learning-databases/00502/online_retail_II.xlsx
今回やってみること。
itemsデータセットをのぞいてみると、'Customer ID'という列があることがわかります。
どうやら、商品ごとの購入顧客IDが記載されているようです。
itemsデータセットの次のフィルタレシピで、Customer IDが13758の顧客のみのデータセットに絞っています。
実際に、items_of_one_customerデータセットのCustomer ID列を見てみると、顧客IDが全て13758になっていることがわかります。
この、ハードコードされている13758に対して今回はvariablesを設定します。
variablesの設定と実行
冒頭で出てきたProject variables画面でLocal varialbesを以下のように設定します。ちなみにjson形式です。
さきほどのフィルタレシピで13758とハードコードしていた箇所を"${customer_id}"に書き換えて、右上の[SAVE]クリック
これでRUNボタン押下により、project variablesのcustomer_idに設定された顧客IDのデータのみを抜き出すレシピになります。
フィルタレシピを実行すると、後続のitems_of_one_customerデータセットのCustomer IDが15362になっていることがわかります。
まとめ
Dataiku DSSのvariablesの設定方法の基本についてやってみました。
今回はvisual recipeで使いましたが、これはpythonコードやシナリオ、Applications、web appと組み合わせて使うことで、非常に実運用で使い倒せる機能となっています。
そのうち、Applicationsやコードでのvariablesの仕様方法についても時間があったらまとめたいです。