10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

INTECAdvent Calendar 2020

Day 19

Dataiku AcademyのAdvanced Prepare Recipe Usageをやってみました。(前編)

Last updated at Posted at 2020-12-18

皆さん、Dataiku使ってますか?
私も少し前までは抵抗を感じることもあったのですが、日々使っていくことで、Dataikuの良さを実感しています。
Dataikuの良さは色々ありますが、真っ先に思いつくのは「レシピ」でデータ加工が簡単にできることではないでしょうか?
今回は、そのなかでも「Prepare(準備)レシピ」の発展的な使い方を紹介している、Advanced Prepare Recipe Usageをやってみたので、その内容を紹介します。

対象の読者

明確な決まりはないですが、以下に挙げたレベル程度にDataikuに慣れ親しんでいると、内容がよくわかると思います。

  • Dataikuの基本的な操作がわかる
  • Dataikuでチュートリアルを実施したことがある

Advanced Prepare Recipe Usageの内容について

このコースは以下の7つで構成されています。
The Prepare Recipe - 導入
Handling Decimal Notations - Dataikuの10進数表記について
Enriching Web Logs - ログの解析について
Applying Prepare Steps to Multiple Columns - 複数列への同じ操作の適用について
Performing Joins in the Prepare Recipe - データの結合について
Become a Master of Dataiku DSS Formulas - 数式について
Custom Python functions in the Prepare Recipe - データセットに対しての行単位の演算について

今回は、このうち「Handling Decimal Notations」「Performing Joins in the Prepare Recipe」の内容を紹介します。残りの項目は後編で紹介します。

Handling Decimal Notations

一般的には、「1,234,567.89」 のような表記で、大数や小数の数値を表します。
しかし、国によってはこの表記とは限らないそうです。
(例えば、「1234567.89」「1 234 567,89」など。)
Dataikuでは、これらの数字をどのように扱うのでしょうか?
結論としては、Dataikuではコンピュータ記法の数字だけを、小数として扱います。
そのため、冒頭の「1,234,567.89」は、Dataikuでは数値ではなく、文字列として扱われます。

下記の例を見てみましょう。
image.png
左側のus_notationのカラムの意味は、「Decimal(10進数)」と予測されていますが、最初の2つの値が無効(背景色が赤)となっています。
一方、fr_notationのカラムについては、「Decimal (comma) 」の意味を予測しています。
Dataikuでは、このような国による標記の違いを統一する仕組みがあるようです。

実際に、Prepareレシピでそれを実現できました。
fr_notationのところでクリックすると、画像のようにタブが表示されます。
image.png
この中央付近に「Convert French format to regular decimal」という項目があるので、それをクリックします。
すると、下の画像のように、自動で表記が修正されました。
また、カラムの意味もDecimal(comma)から、Decimalに変更されています。
image.png

また、us_notationの列も、修正することができます。
「+ ADD A NEW STEP」>「Convert number formats」を選択します。
image.png

Convert number formatsで、下記のように設定を行います。
・Column 「us_notation」
・Output column 「us_notation_converted」
・Input format 「English」
・Output format 「Raw」
image.png

すると、下記のように新しいカラムが作成されます。
先ほどのfr_notationもfr_notation_convertedとして新しいカラムを作成しました。
これで、同じ数値で異なる表記が異なる場合でも、それを統一できることが確認できました。
image.png

以上の方法で、私たちとは異なる数値表現をするデータに出くわした際には、このようにボタン一つで解決ができそうです。

Performing Joins in the Prepare Recipe

Dataikuでデータセットの結合を行う場合、何を選択されているでしょうか?
結合を考えるとき、真っ先に思い浮かぶのがJoinレシピだと思います。しかし、比較的小さなデータセットの左結合の場合は、Prepareレシピを使用して実行することができます。
また、Prepareレシピでは、ファジー結合とジオ結合を実行することもできるようです。

image.png

「Haiku-Tshirts」チュートリアルのデータを参考に確認してみましょう。
「Orders」データセットを選択し、prepareレシピを選択します。Output datasetの名前「Orders_prepared」として、レシピを作成します。
image.png

画面左下の [+ ADD A NEW STEP] から、[Processors library] の [join] にチェックを入れると、joinレシピの選択肢が3つ出てきます。その中から、[Join with other dataset(memory-based)] を選択します。この機能は、その名の通り、同じプロジェクト内の別のデータセットとの結合を実現してくれます。
image.png

このステップでの各設定は以下のようにします。
・Join column 「customer_id」
・Dataset to Join with 「Customers」
・Join column(in other dataset) 「customerID」
・Columns to retrive 「gender」「ip_address」
・Prefix all copied column names with this 「join_」
image.png
以上のステップを加えると、「別データセットCustomersの列 customerIDと、このデータセットの列 customer_idを結合する」という指定ができました。

これを反映したデータセットを見てみると、
image.png
右側二列に、Customersデータセットから持ってきたデータに「join_」を付けたカラム「join_gender」「join_ip_address」が作成できました。

簡単なデータの結合の場合は、このようにPrepareレシピで実施することで、フローが大きくならずに済みそうです。

まとめ

今回行ったチュートリアルでは、Prepareレシピの便利な使い方が紹介されていました。Dataikuには、まだ知らない便利な機能がたくさんあるんだなと実感しています。後編では、このチュートリアルの残りの項目について紹介します。

10
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?