はじめに
今回もReader系のNodeを扱います。ファイルの読み込みで一番Basicかつ多機能なFile Readerです。
今回のテーマ ~File Reader~
覚えてほしいこと
読み込み時にデータ型を指定したいときはFile Reader
やりたいこと
読み込み時にデータ型を指定して、すべてStringで読み込みます
File Readerの使い方
File Readerは、最もBasicなReader Nodeですが、様々な設定ができます。特にコラムごとに設定ができる点が魅力です。
Workflow
Workflowは下記からダウンロードできます。
Confirm - Before After
ある設定をすれば、取り込みのデータ型を指定することができます。
Configure
では早速使い方に行きましょう。全然関係ない部分まで説明します。重要なところはStep4なので、Step1 ~ Step3までは知ってるよ!で飛ばしていただいて構いません。
Step 1 - File Location ファイルパスの指定
まずはBrowseからファイルの場所を指定しましょう。その他のOptionは下記の通りです。
Preserve user settings for new location ファイルパスが変わったときの設定
ファイルパスが変わるとき、例えば人に共有するとき、デフォルトではStep4に設定がすべてリセットされてしまいます。ここにチェックを入れれば設定を保持してくれます。
Rescan
もう一度読み込んで、Previewの結果を更新します。
データが多い時は、Previewの画面にScan Limitを指定するオプションが現れます。CSV Readerにもあった通り、データ型の自動判別のためですので、処理速度を上げたかったら、ここで変えてみましょう。
Step 2 - Basic Settings 基本読み込み設定
ここではReader系Node全般共通の設定を行います。
read row IDs:1列目をRow IDとして読み込む
read column headers:1行目をColumn Header として読み込む
Column delimiter:コラムの区切り位置設定、タブ区切り・カンマ区切り等
ignore spaces and tabs :Quote記号の中にない、余分なスペースやタブがあったときに弾いてくれます
Java-style comments :Javaのコメント表現を適用します。Javaでは、'/*' と '*/'に囲まれているものはコメントと認識します。また、 '//' のあとは改行があるまでコメントとみなします。
Single line comment:Javaでは、 '//'のあとはコメントになりますが、ここで指定すれば任意の記号や文字の組み合わせをコメントとして認識させることができます。
Step 3 - Advanced... 詳細読み込み設定
CSV ReaderやCSV Writerにも出てきた、色々な詳細設定が可能です。
Quote support:
Quote記号の設定
Decimal Separator:
CSV WriterのNumber Formatと同じですね。小数点の指定や、3桁ごとに区切る記号の指定ができます。
Ignore spaces:
各行の最後にある空白を除く設定です。変にコラムとして認識されてエラーになることを防ぎます。
Short Lines:
すべての行で同じ数のコラムがなくてもOKにする設定です。
unique RowIDs :
もしRead Row IDを指定していた場合、少しでも重複があるとエラーになってしまいます。これをチェックすると、重複のあるRow IDを見つけたら、重ならないように文字を追加してくれます。
Limit Rows:
最初の数行はスキップしたい!読み込むのは50行まで!というような制限を付けられます
Character decoding:
エンコーディングが指定できます。
Missing Vlaue Pattern:
もし空白セルがあった場合にここに指定されている文字で置き換えます。
ここで入力したパターンに当てはまる場合、セルを欠損値として扱います。
Step 4 - column properties 各コラム読み込み設定
さて、やっと本題です。Previewにあるコラムをクリックすると、各コラムごとに読み込み設定が指定できます。
部署IDは始め、Integerで読み込まれていますが、ここで指定することでStringとして読み込むように指定できます。
さて他の部分のOptionも解説します。
DON'T include column in output table
これにチェックを入れると、コラム自体読み込まないようにできます。Column FilterでExcludeにした状態と同じですね、
Type
読み込むデータ型を指定できます。
miss.value pattern
コラムごとの欠損値(空白)に対する処理を指定できます。
Domain
データベースの用語で定義域と言ったりします。ここで、取りうる値を定義できます。
ちょっと一言
Domainの使い方
Domainについて、どういうときに使うのか、もう少し解説します。
Domain(定義域)とは?
Domainは定義域と訳され、取りうる値を定義できます。「開発している今は、サンプルデータだから含まれていないけれど、今後データを差し替えると出てくる値を先にKNIMEに認識させておきたい!」というようなときに使います。
なぜ先にKNIMEに認識させる必要があるのか?
例えばRow FilterやSplitterで値をプルダウンできたの覚えていますか?ここでプルダウンで選択できたのは、今テーブルにある値だけでしたよね。
このDomainを使えば、わざわざサンプルデータを編集してデータを入れ込まなくても、今データに入っていない値を各NodeのConfigureに指定することができます。
例えば、、
人事部に対して違う処理をしたいとします。しかし、現在の社員表には「人事」に所属している人はいません。こんな時にDomainを使います。
まずはDomainを設定しないと、Row Splitterのプルダウンで選択できる値はこのように3種類しかありません。
さて、Domainで「人事」という部署を追加してみようと思います。
Domainの設定を開いたら、値を入力してAddを押すと追加されます。
これでConfirmを見てみましょう。普通のTableのOutputは何も変わっていません。
しかし、Specという部分を見ると、値が増えていることが分かります。
これにより、Row SplitterもTableには値がないにもかかわらず、プルダウンで表示されるようになります。
おわりに
今回はBasicなのにいろいろできるFile Readerについて解説しました。
そして、詳しく書きすぎると他の記事を書く時間が無くなることに気づきました。でも上級者の方々はここまで知りたいのでは!?(自己満足)
Reader系のNodeはこれにて終了して、次回からはFilter系を触ろうと思いますー
参考リンク
-
すさんのBlog:
KNIMEでChemdrawファイルを読みたい 〜 Chemical Structures File Reader〜 - 非プログラマーのためのインフォマティクス入門。(仮)
- インフォコム 導入ガイド:
-
KNIME公式Node Pit(英語):
- KNIME E-Learning Course(英語):
- KNIME Dev(英語):
- KNIME Example Workflow(英語):