デジタル推進課

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

KNIME - テーブルを上下でくっつける ~Concatenate~

f:id:makkynm:20201219193944p:plain

 

 

はじめに

今回の頻出Nodeは、Concatenateです。同じ形式の複数ファイルを上下にくっつけて1つにすることができます。めちゃめちゃ簡単です。

 

今回のテーマ ~Concatenate~

今回は勤怠表のデータが月ごとにファイルが分かれていたとしたときに、ひとまとめにするということをやりたいと思います。

Excelでいちいちコピペするの面倒ですよね。

f:id:makkynm:20200502133910p:plain

Concatenate

 

覚えてほしいこと

コラム名、データ型はConcatenate前で必ずそろえる

 

やりたいこと

Excelでコピペして一つでまとめる作業を自動化します

f:id:makkynm:20200502134400p:plain

やりたいこと

 

 

Concatenateの使い方

Workflow

f:id:makkynm:20200502133910p:plain

Concatenate

hub.knime.com

Confirm - Before After

Confirmの結果を先に見てみましょう。勤務表の3月、4月のデータがConcatenateで上下にくっついていることが分かりますせ

f:id:makkynm:20200502135110p:plain

Concatenate

Configure

 今回は簡単すぎてStepがありません笑 デフォルト設定で勝手にくっつきます。くっつける際に、KNIMEはコラム名が同じもの同士をくっつけてくれます。コラム数が違って、片方にない場合は欠損値として空白セル(KNIMEでは"?" / "missing value")として入力されます。

このとき、くっつける2テーブルは、「コラム名だけでなくデータ型までそろえる」ことを鉄則としてください。

f:id:makkynm:20200502135707p:plain

Concatenate Configure

Validation - 検証

 

Concatenateをした後は検証を必ず行いましょう。

検証1 - データ数

まずはデータ数を確認します。

前のテーブルのコラム数と行数は、それぞれ

3月分 Columns: 3 , Rows: 3

4月分 Columns: 3, Rows: 9

でした。Concatenate後は、

Columns: 3, Rows: 12

でしたから、エラーなくくっついていることが予想できます。

もし想定していた結果と違う場合は、「コラム名が正しく一致しているか」を確認してみてください。

 

f:id:makkynm:20200502141033p:plain

Concatenate - Validation
検証2 - データ型

また、Concatenate実行後のテーブルのデータ型はきちんと定まっているか(?がないか)も確認しておきましょう。

Concatenate直前のInputテーブルのデータ型がそろっていなかったらどうなるかをお見せします。例えば上のテーブルだけ、Date&TImeの方を、Modify Timeで時間情報を消去し、Date型に変換したとします。

出勤日のデータ型にご注目ください。くっつくにはくっつくのですが、データ型定まらず、"?"という表示になっていることが分かります。データ型は必ずConcatenate実行前に揃えましょう。

f:id:makkynm:20200502142431p:plain

Inputテーブルのデータ型が異なるとどうなるか

f:id:makkynm:20200502142815p:plain

Inputテーブルのデータ型が異なるとどうなるか

 

 ちょっと一言

コラム数と行数の確認方法

コラム数と行数は、カーソルを置くだけで確認することもできます。Outputの矢印にカーソルを置くと、下記のような行数の情報がPop upで出てきます。

 

f:id:makkynm:20200502141649p:plain

Validation - コラム数と行数

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がないと動かないというものではありません。使い方は同じなのでどちらの方法をとっても良いと思います。

f:id:makkynm:20200502143716p:plain

Concatenate (Optional in)

 ただし、私はあまりお勧めしません。なぜなら、バージョン依存がある可能性があるためです。基本的に普通のConcatenateであれば、超基礎Nodeなのでどのバージョンにも入っており、Workflowを人にシェアした時にバージョン依存で動かない!というような事態を避けられます。

開発する人にとっては何個もつなぎ合わせるのは非常に面倒ですが、人とWorkflowを共有することが想定される場合は、そこまで考えられるといいですね。

 

おわりに

 今回はデータを上下にくっつける頻出Nodeを扱いました。正直簡単すぎてみるまでもなかったわ、という感じですかね。

GW入りました、皆さんコロナには細心の注意を!

 

 

 

余談

さて、2つをくっつけている感じということで、今回はご存知「シャーロック・ホームズ」を挙げたいと思います。推理あり、アクションあり、そして2人の絆ありですね。一般教養としてぜひ一度! 

シャーロック・ホームズ (字幕版)

シャーロック・ホームズ (字幕版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
 
シャーロック・ホームズ(吹替版)

シャーロック・ホームズ(吹替版)

  • 発売日: 2015/03/15
  • メディア: Prime Video
 

 

www.youtube.com

参考リンク