はじめに
前回はコラム名(Column Header)を扱いましたが、今回はRowIDを操作してみたいと思います。Row IDはInsert/Extractが分かれていません。1つのNodeでRow IDを取り出したり、RowIDを入れ替えたりできます。
今回のテーマ ~Row ID~
Wofkflowは下記からダウンロードできます。
覚えてほしいこと
置き換えたいときは、Replace
抜き出したいときはAppend
やりたいこと
やりたいことは2つです。
1.Row IDを"new RowID"コラムの内容で置き換える
2.今のRow IDを新しいコラム "old RowID"として抜き出す
RowIDの使い方
Row IDを置き換えたいときや、Row IDを抜き出したいときに使用します。
Transposeと組み合わせて処理することが多いです。
Workflow
Confirm - Before After
下図のように、Row IDを既存のコラムで置き換えることと、古いRow IDを抜き出すことを同時にできます。もちろん、片方だけでも可能です。
Configure
上で説明した通り、2つの機能があります。1つはRow IDを置き換える機能、もう一つは既存のRow IDを抜き出す機能です。
Step1 - Replace RowID - Row IDを置き換える機能
これにチェックを入れると、New RowID columnで指定したコラムの値でRow IDを置き換えることができます。
基本はNew RowID columnでコラム名を指定するだけなのですが、オプションがいくつかあるので見てみましょう。
- Remove selected column:実行後コラムを削除
- Ensure uniqueness:重複防止
- Handling missing values:欠損値処理
- Enable hiliting:hiliting機能
Remove selected column - 実行後コラムを削除
チェックを入れると、新しいRow IDとなった指定されたコラムを実行後取り除くことができます。チェックを入れてみたときの実行結果は下図の通りです。
Ensure uniqueness - RowIDの重複を防止する
新しいRowIDが重複している場合、このチェックがないとダブってるよ!!というエラーが出ます。なので基本チェックはつけておいていいと思います。
実際にチェックを付けないでエラーが出た場合と、チェックを付けて実行した場合を実験してみましょう。
InputするTableは、こちらです。わざとColumn6というのを重複させています。
チェックを付けていない場合、重複があるとこのようにエラーが出てきます。
チェックを入れると、実行するとコメント(excepption)付きの実行成功表示になって実行されます。コメントは、1つ重複があったよ!というものです。
実行結果は、2回目のものから、(1)のように、重複ごとに数字が追加されていきます。
Handling missing values - 欠損値処理を行う
欠損値がある場合に「?」としてRowIDを入力してエラーとならずに実行してくれる機能です。
実験してみましょう。まずは、欠損値のあるTableを作ってみます。
これをそのまま突っ込むと「欠損値があるよ!」というエラーが出てきます。
これをHandling missing valuesのオプションをONにして実行してみます。
すると、欠損値処理したぞ!というコメント付きの実行成功となったと思います。実行結果も、Missingになっている空白セルの部分は「?」になっていますね。
Enable hiliting - Hilting機能を有効にする
特に気にしなくていい機能です。Highlightingを別Nodeで設定して使用していた場合には、これにチェックをがついていないと、その設定が消えてしまいます。
まず、hiliting とは、「linking and brushing」を示すようです。
データベースでは、ブラッシングとリンクは同じデータの2つ以上のビューの接続を指し、1つのビューの表現に対する変更が他のビューの表現に影響するようにします。ブラッシングとリンクは、インタラクティブな視覚分析における重要な手法でもあります。これは、大規模な構造化データセットの視覚的な調査と分析を実行するための方法論です。
引用:Brushing and linking - Wikipedia
Step2 - Append RowID column - 既存のRow IDを抜き出す機能
これにチェックを入れると、今あるRow IDを新しいコラムとして抜き出すことができます。
新しいコラム名をnew column nameに入力すればOKです!
ちょっと一言
2つ欠損値がある場合は?
上で、1つ欠損値がある場合の実験をお見せしたのですが、2つ以上あった場合はどうでしょうか。実験してみます。
まずは2つの欠損値を含むInput tableを用意します。
そこに、Handle mssing valuesのオプションをONにして実行してみたいと思います。
すると、下の通り重複エラーが出てしまいます。
ということで、もし2つ以上欠損値がある場合は、必ず重複処理のオプションもチェックしておきましょう。
すると、「2つ欠損値処理したよ!」というコメントともに実行完了します。欠損値は「?」で、2回目からは(1)のような重複回数の数字が入るようになります。
インデックスを振りなおしたいときは?
String Manipulation を覚えていますでしょうか。これを使えば簡単にRowIDを重複なしで作ることができます。
今回はRow IDを手入力していましたが、行数が増えたときにそんなことやってられませんよね。そこで出てくるのが、String Manipulation です。
説明は省略しますが、ConfigurationとOutputだけお見せします。このように、ROWINDEXを使用すれば、0から始まる数字を追加することができます。
おわりに
今回はRowIDを扱いました。使う場面は限定的ですが、Column Headerを操作するとき合わせ技で出てくることがたまにあります。Enable Hilitingを使う場面にまだ遭遇していないので、こんな時に使った!!というのがあれば知りたいです!
ではまた!
余談
余談を先に書いてしまいがちな今日この頃です。Nodeから決めているのか、おススメしたい映画から決めているのか分からなくなってきています。
IDというIT感満載のNodeの記事で、今回紹介するおススメ映画は、お馴染みワイルドスピードシリーズの、第8弾「ワイルド・スピード ICE BREAK」です!
個人的にワイルドスピード作品の中で、一番好きですね。ワイルドスピードの醍醐味は高級車を何台もぶち壊していくところかもしれませんが、この回はそれだけでなく、スーパーハッカーが仲間として登場します。ハッキングやったこともできる気もしないですが、操ってる感じがすごい観てて楽しいんですよね!
あとこの回、We are family感がものすごくあって好きです。見たことない人はぜひ!!
参考リンク
-
すさんのBlog:
KNIMEで構造検索をしよう - 非プログラマーのためのインフォマティクス入門。(仮)
- KNIME公式Node Pit(英語):
- KNIME Example Workflow(英語):
- KNIME for developer (英語):