【dataiku】初心者向け:早めに知りたかったレシピの使い方
はじめに
dataikuは複数の「レシピ」を組み合わせることでデータの前処理をすることができます。
しかし、使用するレシピの数が増えると処理時間が長くなってしまったり、他の人から見て分かりにくいフローになってしまうことも。
そこで、より簡略的なフローや、可読性の高いフローを作るのに役立つ、
「このレシピってこんなこともできたの?」と私が最初に知っておきたかったレシピの使い方を紹介します。
なお、今回使用したデータは社食販売システムの販売履歴です。
Prepare
Prepareレシピはできることが多すぎる…故にカオス化もしやすいレシピです。
そこで、可読性を上げるための機能がいくつかあります。
特におすすめはグループ機能です。
「+ADD A GROUP」をクリックし、グループ名を付けてステップをドラッグするか、
ステップからグループを選択するだけです。


グループ名は日本語入力もできるのでとても分かりやすくなります。

グループやステップには色を付けたり、コメントを付けることもできます。
グループはステップの順番が続いていないと同じグループに入れることができないので、
色やコメントも活用していきたいですね。
TopN
「TopN」は任意の並び順に並び替え、その最初のN行(もしくは最後のN行)を取得する、というものです。
ここで、意外と使えるのが「each group of rows identified by...」という機能。
グループ化した中で並び替えをしてくれる機能です。
例えば、商品別で最も売れた日を知りたい場合、下記のように設定します。

並び順やグループ化は複数のカラムを選択することもできます。
TopNのグループ化機能を知る前は、
「Group」レシピで商品別の販売数_MAXを出し、それを元データへ「Join」レシピで結合させて取得していました。
それが「TopN」1つで終わることに気づいたときはとても感動しました。
Window
Windowレシピはパッとみで使い方が分からないレシピNo.1(個人的に)であまり使ってこなかったのですが、使いこなせれば、できることの幅が広がります。
「Group」レシピと異なり、元の列をそのまま保持し、集計した結果を新しいカラムに追加することができます。
また、集計方法はその行以上にあるデータで集計されます。
例えば、商品別・年月別それぞれで、その日までの最大販売数をすべての列に持たせたいとします。
まずPARTITIONING COLUMNSでそれぞれ項目を選択してWINDOWを作成し,
ORDER COLUMNSに日付を入れます。
この時、Prefixにグループの名前を付けておきます。

次にAggregationsで販売数のMaxを選択します。
Retrieveは元のカラムの値なので、不要であれば外します。

これでRUNをすれば、商品別と年月別に集計した結果をすべてのカラムに持たせることができます。

注意点は必ず「ORDER COLUMNS」を設定することです。
WINDOWレシピは行順で計算されるので、どの順で並んでいるのか、を制御しなければいけません。
応用すれば時系列的な集計などに活用できるので、ぜひマスターしてください。
最後に
いかがだったでしょうか。
dataikuはノーコードでだれでも使えるツールです。
それゆえに他の人が見て分かりやすいフローの作り方を意識したいですね。