はじめに
今回の頻出Nodeは、Concatenateです。同じ形式の複数ファイルを上下にくっつけて1つにすることができます。めちゃめちゃ簡単です。
今回のテーマ ~Concatenate~
今回は勤怠表のデータが月ごとにファイルが分かれていたとしたときに、ひとまとめにするということをやりたいと思います。
Excelでいちいちコピペするの面倒ですよね。
覚えてほしいこと
コラム名、データ型はConcatenate前で必ずそろえる
やりたいこと
Excelでコピペして一つでまとめる作業を自動化します
Concatenateの使い方
Workflow
Confirm - Before After
Confirmの結果を先に見てみましょう。勤務表の3月、4月のデータがConcatenateで上下にくっついていることが分かりますせ
Configure
今回は簡単すぎてStepがありません笑 デフォルト設定で勝手にくっつきます。くっつける際に、KNIMEはコラム名が同じもの同士をくっつけてくれます。コラム数が違って、片方にない場合は欠損値として空白セル(KNIMEでは"?" / "missing value")として入力されます。
このとき、くっつける2テーブルは、「コラム名だけでなくデータ型までそろえる」ことを鉄則としてください。
Validation - 検証
Concatenateをした後は検証を必ず行いましょう。
検証1 - データ数
まずはデータ数を確認します。
前のテーブルのコラム数と行数は、それぞれ
3月分 Columns: 3 , Rows: 3
4月分 Columns: 3, Rows: 9
でした。Concatenate後は、
Columns: 3, Rows: 12
でしたから、エラーなくくっついていることが予想できます。
もし想定していた結果と違う場合は、「コラム名が正しく一致しているか」を確認してみてください。
検証2 - データ型
また、Concatenate実行後のテーブルのデータ型はきちんと定まっているか(?がないか)も確認しておきましょう。
Concatenate直前のInputテーブルのデータ型がそろっていなかったらどうなるかをお見せします。例えば上のテーブルだけ、Date&TImeの方を、Modify Timeで時間情報を消去し、Date型に変換したとします。
出勤日のデータ型にご注目ください。くっつくにはくっつくのですが、データ型定まらず、"?"という表示になっていることが分かります。データ型は必ずConcatenate実行前に揃えましょう。
ちょっと一言
コラム数と行数の確認方法
コラム数と行数は、カーソルを置くだけで確認することもできます。Outputの矢印にカーソルを置くと、下記のような行数の情報がPop upで出てきます。
Duplicate ID handlingについて
あまり気にしなくてもいいですが、Duplicate ID handlingのデフォルト設定はAppend Suffix: " _dup"という設定になっています。この意味は、「RowIDが被った場合は下からのInputのテーブルの方のRowIDに”_dup”を指定する」という意味です。
今回もRowIDが被っていたので、Outputには、2つめのテーブルのRowIDにRow0_dupというようにRowIDが変更されています。
もう一つのNode "Concatenate(Optional in)"
バージョン(もしくはInstallしているExtension)によっては、下記のようなNodeもあります。これは2つだけでなく、最大4つまで一気にくっつけてしまいたい!という場合に使います。
白い矢印はOptionalなので必ずInputがないと動かないというものではありません。使い方は同じなのでどちらの方法をとっても良いと思います。
ただし、私はあまりお勧めしません。なぜなら、バージョン依存がある可能性があるためです。基本的に普通のConcatenateであれば、超基礎Nodeなのでどのバージョンにも入っており、Workflowを人にシェアした時にバージョン依存で動かない!というような事態を避けられます。
開発する人にとっては何個もつなぎ合わせるのは非常に面倒ですが、人とWorkflowを共有することが想定される場合は、そこまで考えられるといいですね。
おわりに
今回はデータを上下にくっつける頻出Nodeを扱いました。正直簡単すぎてみるまでもなかったわ、という感じですかね。
GW入りました、皆さんコロナには細心の注意を!
余談
さて、2つをくっつけている感じということで、今回はご存知「シャーロック・ホームズ」を挙げたいと思います。推理あり、アクションあり、そして2人の絆ありですね。一般教養としてぜひ一度!
参考リンク
- すさんのBlog:
【KNIME】ノード紹介:concatenate 〜複数のテーブルをとにかく纏める〜 - 非プログラマーのためのインフォマティクス入門。(仮)
- KNIME公式Node Pit(英語):Concatenate — NodePit
- KNIME Example Workflow(英語):Concatenate – KNIME Hub