デジタル推進課

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

KNIME - CSV ファイルを書き出す ~CSV Writer~

f:id:makkynm:20201212143327p:plain

 

 

はじめに

今回はCSVファイルを書き出します。正直簡単なので、スキップしていいレベルです。

 

 今回のテーマ ~CSV Writer~

CSVで書き出す際のNodeは"CSV Writer"です。またオプションが多いので、オプションを詳しく解説します。

 

f:id:makkynm:20200526085958p:plain

CSV Writer

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

kni.me

 

やりたいこと

CSVファイルで書き出す

Excel では名前を付けて保存からできますよね。これをKNIMEで行います。

f:id:makkynm:20200525233740p:plain

Excel CSVファイルで書き出す

 

CSV Writer の使い方

Workflow

f:id:makkynm:20200526085958p:plain

Workflow - CSV Writer

Confirm

CSV WriterにはConfirmオプションがないので、出力されたファイルをテキストエディタで開いてみます。カンマ区切りで出力しました。

f:id:makkynm:20200526090422p:plain

Confirm - CSV Writer

Configure

CSV Writerも、感覚で設定できるレベルです。オプションがいくつかあるのでそれについて細かく解説したいと思います。最初のメインの設定以外は、興味がある人だけ見てください。(ほとんど使ったことないです笑)

Settings

CSV Writerのメインの設定です。

1.ファイルパス・ファイル名をBrowseから指定

2.Writer OptionでColumn Headerにチェックを入れる(コラム名も出力)

3.Overwriteにチェック(出力時にファイルがある場合は上書き保存)

通常使う場合は、これらの3点で終了です。

f:id:makkynm:20200526203247p:plain

Configure - CSV Writer Settings

 詳しい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のオプションは使用しませんが。。)

f:id:makkynm:20200526204836p:plain

Append オプション

 

Advanced

Advanced では、

  • コラムの区切り文字の設定
  • 空白セル(missing value)の設定
  • 改行コードの設定が可能です。

f:id:makkynm:20200526205219p:plain

Configure - CSV Writer Advanced

Data Separator

コラムの区切り文字の設定ができます。CSVファイルなのでデフォルトは、「,」ですね。タブ区切りで出力したいときは、「\t」に変えてみましょう。

 

Missing Value Pattern

空白セル(Missing Value)があった場合の設定をできます。デフォルトは空欄になっているので何もしませんが、例えば「-」を入力してみると、空白セルはすべて「-」で置換されて出力されます。

 

Line Endings

あまりなじみがないかもしれませんが、改行コードの指定ができます。実はWindowsLinuxMacなど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記号に囲まれていればきちんとデータとして認識されます。

f:id:makkynm:20200526211127p:plain

Configure - CSV Writer 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

ヘッダーにコメントを挿入できるオプションです。

基本使いませんが、今回は理解のために、お試しですべて入力してみました。

f:id:makkynm:20200526215130p:plain

Configure - CSV Writer Comment Header

そうすると、このようなOutputになります。

f:id:makkynm:20200526215824p:plain

Confirm - Comment Header Contents

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

数字のフォーマットを指定できます。

f:id:makkynm:20200526220249p:plain

Configure - CSV Writer Number Format

Decimal Separator

小数点の記号を指定できます。

Scientific Notation

これにチェックを入れると、どんなに大きい数字や、小さい数字でも、指数表記をせずに出力できます。

例えば、通常であれば「1.0E9」と出力されてしまうものを、「1,000,000,000」と出力できます。

 

Encoding

CSV Readerの会でやったので省略します。エンコーディングが指定できます。

 

おわりに

どうでしたか?あえてものすごく細かく解説してみましたが、もはや雑学レベルで使用頻度が少ないと思います笑

次の記事もきちんと書きたいと思いますー

ではまた!

  

 

参考リンク