たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

KNIME_Flow Variableタブの活用その2【column-filter】配列変数でカラムをフィルタ

FlowVariableタブの中の【column-filter】が少し使えたので、配列変数の作成方法とともに記事にする
使用Node:Column Filter / GroupBy / Table Row to Variable

WFの例と解説

以下のような状況に対応するため、Flow Variableタブの【column-filter】を使用してカラムを絞る例を解説する
※ついでに配列変数の作り方、忘れそうになるので当記事にて備忘

・カラムを絞りたいが、そもそもカラム数が100も200もあるときに、Node【Column Filter】でマウスでぽちぽち選択していられない場合
・毎回、何らかの流れで作成したカラムのリストをもとに、カラムを絞りたい(絞るカラムの対象がいつも同じではない)場合 等

▼配置例▼


【Table Creator】絞りたいカラムのリストを作成

今回、絞りたいカラムのリストは冒頭の【Table Creator】にて作成
そのため固定値となっているが、毎回ワークフローの中で都度、絞りたいカラムのリストを作成するようであれば
そのリストを次の【GroupBy】につなげれば、最終的には可変の値を使用してフィルターすることが可能となる

▼Node設定例▼


【GroupBy】絞りたいカラムのリストを配列化

絞る対象となるカラムのリスト(カラム名「ColumnList」)を配列変数にすべく、まずは配列形式に変換する
※深い理由はないが、「keep original name(s)」を選択した、お好みや必要に応じて変更のこと

▼Node設定例▼


▼処理結果▼


【Table Row to Variable】配列を変数化

一番上(1行目)のレコードを変数にするNode【Table Row to Variable】で、作成した配列を変数にする
※Nodeの設定に関する説明は割愛する

今更だが…変数になったかどうかもNodeの中身も、以下のいずれかの方法で確認できる
方法1:Nodeを右クリックーVariables Outputをクリック
方法2:KNIME画面上の再生ボタンなどがある並びの中の虫眼鏡ボタンをクリックし「Flow Variable」タブを選択

▼変数の確認画面▼


【Column Filter】配列変数でカラムをフィルタ

作成した配列変数を、Node【Column Filter】の中のタブ「Flow Variable」にて設定する

▼Node設定例▼


実は、これだけではフィルターしてくれない…どうしたらよいかというと
「Column Filter」タブの設定画面で「Enforce inclusion」を選択しなければ有効にならない

▼Node設定例▼


今回は「含めたい」カラムのリストを設定したが、「含めたくない」カラムのリストがある場合には
今回と同じ要領で「excluded_names」に配列変数を設定すれば対応が可能かとおもう

ちなみに「Enforce exclusion 」「Enforce inclusion」の選択が必要なことは
視野の狭い自分では解決できなかったであろうと感じるので以下のページに感謝…
▼参考サイト▼
【KNIME】Flow VariableでColumn Filter - KNIMEとか倉庫
【W6】最大共通部分構造_04_Step2|ナイメスト

WFに入れて実行を試すリストは毎度以下のページから拝借している
▼郵便局のデータ▼
郵便番号データダウンロード 住所の郵便番号(ローマ字) zip形式 - 日本郵便


▼KNIME Hub▼
hub.knime.com

▼NodeのFlow Variable設定関連記事▼
tama-shi.hatenadiary.com