デジタル推進課

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

KNIME - Row IDをいじり倒す ~Row ID~

f:id:makkynm:20201220093236p:plain

 

 

はじめに

前回はコラム名(Column Header)を扱いましたが、今回はRowIDを操作してみたいと思います。Row IDはInsert/Extractが分かれていません。1つのNodeでRow IDを取り出したり、RowIDを入れ替えたりできます。 

 

 今回のテーマ ~Row ID~

f:id:makkynm:20200616201442p:plain

今回のテーマ - Row ID

Wofkflowは下記からダウンロードできます。

kni.me

 

覚えてほしいこと

置き換えたいときは、Replace

抜き出したいときはAppend

 

やりたいこと

やりたいことは2つです。

1.Row IDを"new RowID"コラムの内容で置き換える

2.今のRow IDを新しいコラム "old RowID"として抜き出す

f:id:makkynm:20200616202824p:plain

やりたいこと - RowIDを入れ替える・抜き出す

 

RowIDの使い方

Row IDを置き換えたいときや、Row IDを抜き出したいときに使用します。

Transposeと組み合わせて処理することが多いです。

Workflow

f:id:makkynm:20200616201442p:plain

Workflow - RowID

Confirm - Before After

下図のように、Row IDを既存のコラムで置き換えることと、古いRow IDを抜き出すことを同時にできます。もちろん、片方だけでも可能です。

f:id:makkynm:20200616202104p:plain

Confirm - Row ID

 

Configure

上で説明した通り、2つの機能があります。1つはRow IDを置き換える機能、もう一つは既存のRow IDを抜き出す機能です。

f:id:makkynm:20200616202553p:plain

Configure - 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となった指定されたコラムを実行後取り除くことができます。チェックを入れてみたときの実行結果は下図の通りです。

f:id:makkynm:20200616203730p:plain

Confirm - Remove selected column
Ensure uniqueness - RowIDの重複を防止する

新しいRowIDが重複している場合、このチェックがないとダブってるよ!!というエラーが出ます。なので基本チェックはつけておいていいと思います。

実際にチェックを付けないでエラーが出た場合と、チェックを付けて実行した場合を実験してみましょう。

InputするTableは、こちらです。わざとColumn6というのを重複させています。

f:id:makkynm:20200616213442p:plain

Input table

チェックを付けていない場合、重複があるとこのようにエラーが出てきます。

f:id:makkynm:20200616213715p:plain

RowID - 重複エラー

チェックを入れると、実行するとコメント(excepption)付きの実行成功表示になって実行されます。コメントは、1つ重複があったよ!というものです。

f:id:makkynm:20200616221107p:plain

RowID - コメント付き実行成功

実行結果は、2回目のものから、(1)のように、重複ごとに数字が追加されていきます。

f:id:makkynm:20200616221232p:plain

RowID - 重複があった場合

 

Handling missing values - 欠損値処理を行う

欠損値がある場合に「?」としてRowIDを入力してエラーとならずに実行してくれる機能です。

実験してみましょう。まずは、欠損値のあるTableを作ってみます。

f:id:makkynm:20200616221713p:plain

実験 - 欠損値のあるInput Table

これをそのまま突っ込むと「欠損値があるよ!」というエラーが出てきます。

f:id:makkynm:20200616221749p:plain

エラー:欠損値

これをHandling missing valuesのオプションをONにして実行してみます。

f:id:makkynm:20200616221858p:plain

Configure - Handling missing values

すると、欠損値処理したぞ!というコメント付きの実行成功となったと思います。実行結果も、Missingになっている空白セルの部分は「?」になっていますね。

f:id:makkynm:20200616222020p:plain

欠損値処理ON

 

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を用意します。

f:id:makkynm:20200616222217p:plain

Input table - 欠損値を2つ以上含む

そこに、Handle mssing valuesのオプションをONにして実行してみたいと思います。

f:id:makkynm:20200616222301p:plain

欠損値をONにする

すると、下の通り重複エラーが出てしまいます。

f:id:makkynm:20200616222337p:plain

重複エラー

ということで、もし2つ以上欠損値がある場合は、必ず重複処理のオプションもチェックしておきましょう。

f:id:makkynm:20200616222433p:plain

重複処理・欠損値処理をONにする

すると、「2つ欠損値処理したよ!」というコメントともに実行完了します。欠損値は「?」で、2回目からは(1)のような重複回数の数字が入るようになります。

f:id:makkynm:20200616222504p:plain

コメント付き実行成功

 

 インデックスを振りなおしたいときは?

String Manipulation を覚えていますでしょうか。これを使えば簡単にRowIDを重複なしで作ることができます。

 今回はRow IDを手入力していましたが、行数が増えたときにそんなことやってられませんよね。そこで出てくるのが、String Manipulation です。

説明は省略しますが、ConfigurationとOutputだけお見せします。このように、ROWINDEXを使用すれば、0から始まる数字を追加することができます。

 

f:id:makkynm:20200616202258p:plain

Configure - String Manipulation

f:id:makkynm:20200616202418p:plain

Confirm - String ManipulationでRow IDを作る

 

おわりに

今回はRowIDを扱いました。使う場面は限定的ですが、Column Headerを操作するとき合わせ技で出てくることがたまにあります。Enable Hilitingを使う場面にまだ遭遇していないので、こんな時に使った!!というのがあれば知りたいです!

ではまた!

 

 

余談

余談を先に書いてしまいがちな今日この頃です。Nodeから決めているのか、おススメしたい映画から決めているのか分からなくなってきています。

IDというIT感満載のNodeの記事で、今回紹介するおススメ映画は、お馴染みワイルドスピードシリーズの、第8弾ワイルド・スピード ICE BREAKです!

個人的にワイルドスピード作品の中で、一番好きですね。ワイルドスピードの醍醐味は高級車を何台もぶち壊していくところかもしれませんが、この回はそれだけでなく、スーパーハッカーが仲間として登場します。ハッキングやったこともできる気もしないですが、操ってる感じがすごい観てて楽しいんですよね!

あとこの回、We are family感がものすごくあって好きです。見たことない人はぜひ!!

ワイルド・スピード ICE BREAK (字幕版)

ワイルド・スピード ICE BREAK (字幕版)

  • 発売日: 2017/07/20
  • メディア: Prime Video
 
ワイルド・スピード ICE BREAK(吹替版)

ワイルド・スピード ICE BREAK(吹替版)

  • 発売日: 2017/09/22
  • メディア: Prime Video
 

 

www.youtube.com

 

 

参考リンク