FlowVariableタブの中の【FilterOptions】が少し使えたので記事にする
使用Node:List Files/Folders Boolean Configuration Variable Creator
- WFの例と解説
- 【Variable Creator】使いたい値を変数にする
- 【Boolean Configuration】ブール値を格納した変数を作る
- 【List Files/Folders】準備した変数を使用してフィルタ
- 【結果】フィルタをかけた場合とそうでない場合を比較
WFの例と解説
Node【List Files/Folders】を使用し、任意の文字列パターンの(今回は、文字列「NAGATACHO」を含む)ファイル名の.txtファイルのみ
【FilterOptions】を使用して絞り込んだうえで読み込む(実際には読み込んだ後に絞ればいい話だが…)
Node【List Files/Folders】に限らず、FlowVariableタブの中に【FilterOptions】が存在する場合には同じように使えるので参考まで
▼配置例▼
▼参考:読み込むフォルダの中身▼
【Variable Creator】使いたい値を変数にする
ひとつ目は、フィルタに使用する文字列「StreetAddress」_変数A
※後述の【filter_options】設定にて、大文字小文字の区別をするしないを指定できることを示したいがため、今回Valueはあえて小文字にした
ふたつ目は、絞り込み対象とするファイルの拡張子「FileExtention」_変数B
▼Node設定例▼
【Boolean Configuration】ブール値を格納した変数を作る
boolean型の変数を作成(構成の設定を)するNodeと考えていいようにおもう、変数名は「Palameter/Variable Name」にて設定
今回はtrueとfalseの両方の値を作成して使用したいので、Nodeを2個配置
true_変数C、false_変数Dとする
※Default Valueにチェックを入れるかどうかでtrue / falseを切り替える
※int型で、1または0をoutputすることも可能(ほかの人にもわかりやすいよう、敢えてこのNodeを使用して明示的に作成するのもありか)
▼Node設定例▼
【List Files/Folders】準備した変数を使用してフィルタ
フォルダの指定
まずは内容物をリスト化したい対象のフォルダの指定を行う
ディレクトリを指定したらタブ「Flow Variables」に移動
▼Node設定例▼
今回、フォルダパスは直接指定したが…
▼変数で指定にする方法ついては以下の記事を参照▼
tama-shi.hatenadiary.com
★★今回の主題【filter_options】の設定★★
▼Node設定例▼
1.filter_files_extention_拡張子フィルタを使用するかしないか、今回true(変数C)を指定
2.files_extention_expression_絞りたいファイルの拡張子(変数B)を指定
3.files_extention_case_sensitive_拡張子フィルタで大文字小文字を区別するかしないか、今回はfalse(変数D)を指定
4.filter_files_name_ファイル名フィルタをするかしないか、今回true(変数C)を指定
5.files_name_expression_フィルタしたい文字列(変数A)を指定
6.files_name_case_sensitive_ファイル名フィルタで大文字小文字を区別するかしないか、今回はfalse(変数D)を指定する必要がある
※上記画像内「Flow Valiable」タブの下のほうにある「folders」から始まる設定部分を使用し、同じ要領でフォルダ名もフィルタすることができる
そうすればファイル名とフォルダ名の両方でフィルタをかけることができるので
「この文字が入ったフォルダ名のフォルダの中の、このファイル」をこのNodeひとつで指定し絞りこむことが可能、ぜひ試してほしい
※いろんな人がファイルを格納するフォルダで、拡張子が大文字になっているファイルが紛れる可能性がゼロでないのであれば
3の設定で読み込みの漏れを回避できそう、敢えてやっておくのもいいのやもしれない
【結果】フィルタをかけた場合とそうでない場合を比較
▼フィルタ前▼
▼フィルタ後▼
ファイル名に「nagatacho」が入ったテキストファイルのみをリスト化することができた
フィルタ条件の指定とフィルタの適用のオンオフがそれぞれ別になっているところは
AccessVBAでいう、Me.Filterでフィルタ条件を設定→Me.Filteronで適用 というように段階を踏むのと同じような感覚であった
今回Flow Variableタブの使用に対する免疫が少し、ついたような、つかないような...
また他も試してみて、発見があれば都度投稿する
▼KNIME Hub▼
tama-shiの以下WF
「Make List of Files Filter by arbitrary string pattern[Use regular expression]」
hub.knime.com
▼関連記事▼
tama-shi.hatenadiary.com