- はじめに
- 覚えてほしいこと
- KNIMEでのデータ型確認方法
- データ型に関するNode紹介
- 実践1:社員番号を文字列にする Number to String
- 実践2:日付に変更する String to Date&Time
- ちょっと一言
- おわりに - なぜデータ型が重要なのか?
はじめに
今回は超重要基礎概念、データ型変換について実際にどうKNIME上で行うかを触れていきます。データ型については下記の記事をまず読んでみてください。
今回のテーマ
Workflowは下記からダウンロードできます。
makkynm/Public – Input – KNIME Hub
覚えてほしいこと
- データ型変換のNode名 XX to YY
- データ型は基本String(文字列)に
下記の表が超重要なので再度張っておきます。*1下記の2点を抑えておいてください。
- データ型とは、パソコンがそのデータを(文字、数字、時間etc)として認識したことを示すものです。
- 計算に使用しないものはすべて文字列に変換する。
これらを抑えたうえで、
- データ型の確認方法
- Node紹介
- 使い方
をカバーしていきたいと思います。
KNIMEでのデータ型確認方法
KNIMEでデータ型を確認するには2つの方法があります。どちらもConfirm画面から参照可能です。
- Table View
- Spec View
方法1の方が早くて便利なので、私は方法1をお勧めしています。
元データ
方法1:Table View
下の図のように赤く囲った部分でKNIMEがその列のデータをどのデータ型で読み込んだのかが確認できます。
方法2:Spec View
Spec - Columnというタブを押すと現れる表です。読み込まれているテーブルの列と行を入れ替えたようなテーブルになっていて、Column Typeというところからデータ型が確認できます。
ちなみにこの画面を使用すれば、数値であれば最大値・最小値、文字列であれば重複のないデータの種類がサクッと確認できます。
データ型に関するNode紹介
Nodeの名前はその機能が容易に想像できるようにつけられています。なので、検索画面も非常に分かりやすいです。データ変換のNodeはすべて「変換元 to 変換後」という形になっています。
英語で"to"は、"~へ"という意味を持っているので、そこを抑えれば覚えやすいかと思います。
String to ... 「文字列 → (数字・日時 etc)」
文字列から...へを示します。代表的なものとして String to Number や、String to Date&Timeがあります。
検索するにはString toと打つと、文字列(String)から変換するNodeの候補が出てきます。
Number to ... 「数字 → (文字列 etc)」
数字を変換する場合は基本文字列(String)への変換です。
Double to int
この型変換は、DoubleからStringに変換したいときによく使用します。
Doubleとして読み込まれてしまった社員番号のようなものをStringに変換したいときに、使用します。DoubleからStringに変換してしまうと、カンマが混入してしまうからです。intと言いながらLong型にも変更可能です。
実践1:社員番号を文字列にする Number to String
実際にデータを使用して、変換していきましょう。データを取り込んだ後、社員ID・生年月日・入社日が数値(Integer型)になっていることに気付いたでしょうか。繰り返しになりますが、「計算に使用しないものはすべて文字列に変換する」が鉄則なので、文字列に変換してみましょう。
使用するNodeは「数値から文字へ」「Number to String」です。
Workflow
Confirm - Before After
4.Confirm の結果を先に見てみましょう。
Excel ReaderのConfirm画面とNumber to StringのConfirm画面を比べると分かる通り、Stringに変換されていることが分かります。
Configure
Number to String のConfigureを見ていきましょう。設定は非常に簡単で、数値から文字列に変換したいコラムをIncludeのBoxに入れるだけです。
実践2:日付に変更する String to Date&Time
次に日付型に文字列を変換してみましょう。日付や期間をKNIMEで計算したい場合に使います。
使用するNodeは「文字から日付へ」「String to Date&Time」です。
Workflow
Confirm - Before After
4.Confirm の結果を見てみましょう。
Number to StringのConfirm画面とString to Date&TimeのConfirm画面を比べると、Date型に変換されていることが分かります。
Configure
String to Date&Time のConfigureを見ていきましょう。こちらの設定は少しコツが必要です。
- Number to Stringと同様、まずはDate&Time型に変換したいものをIncludeのBoxに入れ込みます。
- 次にNew typeのドロップダウンから、Date型を選択します。
- 最後にDate Formatにこの列のデータの形式を入れ込みます。
最後のDate Format ですが、下記のように指定します。
変換元データ |
Date format |
20200418 |
yyyyMMdd |
2020-04-18 |
yyyy-MM-dd |
2020/04/18 |
yyyy/MM/dd |
今回のformat 指定は、"yyyyMMdd"ですので、最初の4文字はYearを、次の2文字はMonthを、最後の2文字はdateという指定をしていることになります。
ちょっと一言
Tips 1
Configure画面の緑色で囲ったボタン「Guess data type and format」を押すとKNIMEが勝手にフォーマットを推測してくれます。
Tips 2
元データが、例えば202004など、yyyyMMだけしかない場合は使用できません。その場合は、"String Manipulation" Nodeで、仮の日付"01"を足してあげてから変換します。
おわりに - なぜデータ型が重要なのか?
KNIMEをある程度触ってくると分かると思うのですが、エラーが起こる多くの原因がデータ型が正しくないことに起因していたりします。
なので、このデータ型変換をする癖を始めにつけとくと後々楽になります。
余談
変換といえば、、、おススメ映画「帰ってきたヒトラー」ですね。
ヒトラーが現代にそのままタイムスリップしたらどうなるかというテーマで描かれた映画です。コメディでものすごく笑えるのに、現代の状況をうまいこと風刺しているかのような、なんともメッセージ性のある内容です。
独裁者で有名なヒトラーですが、実は当時は圧倒的民主主義によって普通選挙で選ばれたリーダーだったということを事前に知っていると余計笑えないですね笑
これは本当にあるんじゃないか!ヒトラーがもう一度現れたらこうなりそう!と思ってしまう内容なので政治に興味がない人でもコメディとしても非常におススメです!