デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - データ型変換を覚える ~XX to YY~

 

 

 

はじめに

今回は超重要基礎概念、データ型変換について実際にどうKNIME上で行うかを触れていきます。データ型については下記の記事をまず読んでみてください。

degitalization.hatenablog.jp

 

今回のテーマ

f:id:makkynm:20200418122313p:plain

データ型を変換する

 

覚えてほしいこと

  1. データ型変換のNode名 XX to YY
  2. データ型は基本String(文字列)

下記の表が超重要なので再度張っておきます。*1下記の2点を抑えておいてください。

  1. データ型とは、パソコンがそのデータを(文字、数字、時間etc)として認識したことを示すものです。
  2. 計算に使用しないものはすべて文字列に変換する。

f:id:makkynm:20200209105502p:plain

データ型

 これらを抑えたうえで、

  1. データ型の確認方法
  2. Node紹介
  3. 使い方

 をカバーしていきたいと思います。

 

KNIMEでのデータ型確認方法

KNIMEでデータ型を確認するには2つの方法があります。どちらもConfirm画面から参照可能です。

  1. Table View
  2. Spec View

方法1の方が早くて便利なので、私は方法1をお勧めしています。

 

元データ

f:id:makkynm:20200304084304p:plain

Sample Data 社員表
方法1:Table View

下の図のように赤く囲った部分でKNIMEがその列のデータをどのデータ型で読み込んだのかが確認できます。

f:id:makkynm:20200304085844p:plain

データ型確認方法1
方法2:Spec View

Spec - Columnというタブを押すと現れる表です。読み込まれているテーブルの列と行を入れ替えたようなテーブルになっていて、Column Typeというところからデータ型が確認できます。

ちなみにこの画面を使用すれば、数値であれば最大値・最小値、文字列であれば重複のないデータの種類がサクッと確認できます。

f:id:makkynm:20200304085957p:plain

データ型確認方法2

データ型に関するNode紹介

Nodeの名前はその機能が容易に想像できるようにつけられています。なので、検索画面も非常に分かりやすいです。データ変換のNodeはすべて「変換元 to 変換後」という形になっています。

英語で"to"は、"~へ"という意味を持っているので、そこを抑えれば覚えやすいかと思います。

String to ... 「文字列 → (数字・日時 etc)」

文字列から...へを示します。代表的なものとして String to Number や、String to Date&Timeがあります。

検索するにはString toと打つと、文字列(String)から変換するNodeの候補が出てきます。

f:id:makkynm:20200418120756p:plain

String to

Number to ... 「数字 → (文字列 etc)」

数字を変換する場合は基本文字列(String)への変換です。

f:id:makkynm:20200418120847p:plain

Number to



Double to int

この型変換は、DoubleからStringに変換したいときによく使用します。

Doubleとして読み込まれてしまった社員番号のようなものをStringに変換したいときに、使用します。DoubleからStringに変換してしまうと、カンマが混入してしまうからです。intと言いながらLong型にも変更可能です。

 

f:id:makkynm:20200418121107p:plain

Double to Int

 

実践1:社員番号を文字列にする Number to String

実際にデータを使用して、変換していきましょう。データを取り込んだ後、社員ID・生年月日・入社日が数値(Integer型)になっていることに気付いたでしょうか。繰り返しになりますが、「計算に使用しないものはすべて文字列に変換する」が鉄則なので、文字列に変換してみましょう。

使用するNodeは「数値から文字へ」「Number to String」です。

Workflow 

f:id:makkynm:20200418124704p:plain

Number to String
Confirm - Before After 

4.Confirm の結果を先に見てみましょう。

Excel ReaderのConfirm画面とNumber to StringのConfirm画面を比べると分かる通り、Stringに変換されていることが分かります。

f:id:makkynm:20200418123521p:plain

Number to String
Configure

Number to String のConfigureを見ていきましょう。設定は非常に簡単で、数値から文字列に変換したいコラムをIncludeのBoxに入れるだけです。

f:id:makkynm:20200418124011p:plain

Number to string Configure

 

 

実践2:日付に変更する String to Date&Time

次に日付型に文字列を変換してみましょう。日付や期間をKNIMEで計算したい場合に使います。

使用するNodeは「文字から日付へ」「String to Date&Time」です。

Workflow 

f:id:makkynm:20200418124609p:plain

String to Date&Time

 

Confirm - Before After 

4.Confirm の結果を見てみましょう。

Number to StringのConfirm画面とString to Date&TimeのConfirm画面を比べると、Date型に変換されていることが分かります。

f:id:makkynm:20200418125439p:plain

String to Date&Time
Configure

String to Date&Time のConfigureを見ていきましょう。こちらの設定は少しコツが必要です。

f:id:makkynm:20200418130103p:plain

String to Date&Time Configure
  1. Number to Stringと同様、まずはDate&Time型に変換したいものをIncludeのBoxに入れ込みます。
  2. 次にNew typeのドロップダウンから、Date型を選択します。
  3. 最後に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をある程度触ってくると分かると思うのですが、エラーが起こる多くの原因がデータ型が正しくないことに起因していたりします。

なので、このデータ型変換をする癖を始めにつけとくと後々楽になります。

 

 

余談

変換といえば、、、おススメ映画「帰ってきたヒトラー」ですね。

ヒトラーが現代にそのままタイムスリップしたらどうなるかというテーマで描かれた映画です。コメディでものすごく笑えるのに、現代の状況をうまいこと風刺しているかのような、なんともメッセージ性のある内容です。

独裁者で有名なヒトラーですが、実は当時は圧倒的民主主義によって普通選挙で選ばれたリーダーだったということを事前に知っていると余計笑えないですね笑

これは本当にあるんじゃないか!ヒトラーがもう一度現れたらこうなりそう!と思ってしまう内容なので政治に興味がない人でもコメディとしても非常におススメです!

帰ってきたヒトラー(字幕版)

帰ってきたヒトラー(字幕版)

  • 発売日: 2016/12/23
  • メディア: Prime Video
 
帰ってきたヒトラー(吹替版)

帰ってきたヒトラー(吹替版)

  • 発売日: 2016/12/23
  • メディア: Prime Video
 

 

 

www.youtube.com

 

 

 

*1:なお、今回は上記の基本的なデータ型のみ扱い、URI等は扱いません。