はじめに
今回はCSVファイルを書き出します。正直簡単なので、スキップしていいレベルです。
今回のテーマ ~CSV Writer~
CSVで書き出す際のNodeは"CSV Writer"です。またオプションが多いので、オプションを詳しく解説します。
Workflowは下記からダウンロードできます。
やりたいこと
CSVファイルで書き出す
Excel では名前を付けて保存からできますよね。これをKNIMEで行います。
CSV Writer の使い方
Workflow
Confirm
CSV WriterにはConfirmオプションがないので、出力されたファイルをテキストエディタで開いてみます。カンマ区切りで出力しました。
Configure
CSV Writerも、感覚で設定できるレベルです。オプションがいくつかあるのでそれについて細かく解説したいと思います。最初のメインの設定以外は、興味がある人だけ見てください。(ほとんど使ったことないです笑)
Settings
CSV Writerのメインの設定です。
1.ファイルパス・ファイル名をBrowseから指定
2.Writer OptionでColumn Headerにチェックを入れる(コラム名も出力)
3.Overwriteにチェック(出力時にファイルがある場合は上書き保存)
通常使う場合は、これらの3点で終了です。
詳しいWriter Optionsを見てみましょう。
Write row ID
チェックを入れるとRow IDも出力することができます。
Compress output file (gzip)
これにチェックを入れると、.gz ファイルに圧縮して出力できます。データ量が多い場合で圧縮したいときに便利ですね。
if file exists...
"If file exists..."から出力先にファイルが既に存在した場合のオプションを選択できます。
- Overwrite:上書き保存
- Append:元ファイルの下にデータを追加する
- Abort:エラーとして止める
Don't write column headers(Append オプション)
上でAppendオプションを選択すると、選択できるようになります。これにチェックを入れるとコラム名を書き出すことはしません。一つのファイルにデータをどんどん追加したいときに使用できます。
(KNIMEが何回も誤ってRun される可能性を考えるとあまりAppendのオプションは使用しませんが。。)
Advanced
Advanced では、
- コラムの区切り文字の設定
- 空白セル(missing value)の設定
- 改行コードの設定が可能です。
Data Separator
コラムの区切り文字の設定ができます。CSVファイルなのでデフォルトは、「,」ですね。タブ区切りで出力したいときは、「\t」に変えてみましょう。
Missing Value Pattern
空白セル(Missing Value)があった場合の設定をできます。デフォルトは空欄になっているので何もしませんが、例えば「-」を入力してみると、空白セルはすべて「-」で置換されて出力されます。
Line Endings
あまりなじみがないかもしれませんが、改行コードの指定ができます。実はWindows やLinux、MacなどOSによって改行コードが異なったりします。通常のDefaultでいいと思います。詳しく知りたい方はこちらのBlogを参照ください。
LF(Line Feed ラインフィード)
英語で、改行を意味する。カーソルを新しい行に移動すること。
CR(Carriage Return キャリッジリターン)
英語で、復帰を意味する。カーソルを左端の位置に戻すこと。
CR+LF
そのまま。CRとLFの融合。左端にカーソルを戻して改行すること。
また、OSによっても、改行コードが違うらしいです。
LF・・・UNIX系。Linuxとか。
CR・・・MacOS(バージョン9まで)とか。
CR+LF・・・Microsoft Windowsとか。
ちなみに、sakuraエディタを使うと改行コードがわかります。
CRLF : ↵
CR : ←
LF : ↓
Quotes
CSV Readerのときに出てきましたね!コメント記号や、区切り用記号がデータの中に含まれていたとしても、このQuotes記号に囲まれていればきちんとデータとして認識されます。
Quote Pattern
左右のQuote記号を指定できます。デフォルトは両方ダブルクオーテーション「”」なので、この記号に囲まれてデータは出力されることになります。
Quote Mode
ここで、どのデータにQuote記号を付けるかを選択できます。
always
空白セル(Missing value)以外はすべてQuote記号をつけて出力します。
if needed
データの中に、Missing Value Patternで指定した文字か、区切り記号で指定した文字と同じものが含まれていた場合にのみ、Quote記号をつけて出力します。
”replace right quote in data with”は、Quote記号と同じデータが含まれていた場合に、ここで指定した文字に置き換えます。
non-numerical only
数字以外はQuote記号をつけて出力します。小数点には注意が必要です。小数点が区切り記号と同じだと、CSVファイルが読めなくなってしまいます。
never
Quote記号をつけない設定です。ただし、データの中にデータ区切り記号があるとエラーとなってしまうため、”replace separator in data with”のオプションが起動します。
これは、データの中に区切り記号と同じデータが含まれていた場合に、ここで指定した文字に置き換えられます。
Comment Header
ヘッダーにコメントを挿入できるオプションです。
基本使いませんが、今回は理解のために、お試しですべて入力してみました。
そうすると、このようなOutputになります。
Comment Header Content
まずここで、ヘッダーに追加する内容を選択します。
- the current creation time: ファイル作成日
- the user account name: PCのユーザー名
- the input table name: CSV Writerの直前のNodeのConfirmで表示されるTableの名前
- this text: 入力された任意のテキスト
Comment Pattern
コメントの開始と終了の記号を選択できます。1行目と5行目にくっついていますね。
Comment Indentation
インデントを付けられます。デフォルトは「\t」タブですね。
各コメント行の前にタブの空白があるのが分かるかと思います。
Number Format
数字のフォーマットを指定できます。
Decimal Separator
小数点の記号を指定できます。
Scientific Notation
これにチェックを入れると、どんなに大きい数字や、小さい数字でも、指数表記をせずに出力できます。
例えば、通常であれば「1.0E9」と出力されてしまうものを、「1,000,000,000」と出力できます。
Encoding
CSV Readerの会でやったので省略します。エンコーディングが指定できます。
おわりに
どうでしたか?あえてものすごく細かく解説してみましたが、もはや雑学レベルで使用頻度が少ないと思います笑
次の記事もきちんと書きたいと思いますー
ではまた!
参考リンク
- marusunriseさんのブログ 改行コードとは:
- KNIME公式Node Pit(英語):
- KNIME E-Learning Course (英語):
- KNIME.DEV(英語):