SPSS Modeler ノードリファレンス 1-9 固定長ファイル（テキストファイル）

# 1-1 固定長ファイルノード[入力タブ]
<img width="200" alt="スクリーンショット 2022-01-12 10.02.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/5a736ef8-943c-8fdd-f5d5-bfb5105a8e5d.png">


## 1.ノードの目的
固定長のテキストファイル形式のデータを読み込みます。

## 2.解説動画（60秒）

TBD

## 3.クイックスタート

ファイルタブの[ファイル：]の[...]ボタンから読み込むファイルパスを指定します。
＊サンプルのtxtファイルは[5.参考情報]からダウンロードできます。

[レコード長]に1レコードの長さを設定します。
各フィールド名と開始位置、長さを指定します。
画面上のプレビューでデータが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b1bd7e8e-21d7-40b2-a432-b7a7548fe627.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/4428bf62-ed69-e6ec-1a8e-3dcc24572bc5.png)


## 4.Tips

#### データ型の上書き
IDは自動的に「整数型」で読み込まれましたが、「文字列型」で読みたい場合は、[データ]タブで[上書き]にチェックをつけて、[ストレージ]に[文字列]を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7a7cf468-3ff2-b798-c081-938ab8f0ff81.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/268575db-ca9c-244e-9da3-088420ae0445.png)


#### 改行なしデータ
固定長データは改行でレコードが区切られていなくても読むことができます。
[改行文字のスキップ]のチェックを外すと[レコード長]で指定した長さでレコードを区切ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1ee588d2-eaba-fb9c-f106-1b8a261a21e4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/711f0ae2-7706-172a-3878-b8852b227525.png)


#### 欠損値のあるデータ
以下の2行目のデータはのデータを持っていませんが、正しく読むことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/3e5e5c10-befc-6be3-6de6-9ea14c2cbfd4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/66aa692a-90f6-455b-123d-80145c55ed75.png)

#### 半角カナや全角の日本語データ
半角カナや全角の日本語データも読むことはできます。
ただし、バイト数ではなく、文字数で指定を行ないます。プレビューはずれて見えますが、正しく読めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/243f7cd1-3e0c-c395-2c33-6f8b358461f7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/c08df300-5a8c-dea3-aca1-dde53adcc98e.png)

「鈴木一郎　」もShiftJISでは10バイトですが、ここでは文字数の5文字で指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7883bf44-d540-fafb-f617-2fef6e2c23c6.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/13c1bfe2-34fc-c4b0-39fc-993007eb8146.png)


#### 半角と全角のデータの混在
上記の通り文字数で長さを指定しますので、一つの列内に半角文字2文字と全角文字1文字を同じ長さとして扱っているデータが混在している場合、長さで途中で切られてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/f99f8f0c-2cf8-3e54-7361-29474a047f98.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b0161efb-7c48-dda5-24e0-8857dc81d9e3.png)

こういうデータは文字数をそろえないと読み込むことができません。もしくはPythonなどで加工することになると思います。

#### 列定義のスクリプト化
列がたくさんある場合はスクリプトで定義したくなることがありませす。以下の記事で紹介しています。

SPSS固定長ファイルノードの定義をmodelerスクリプトで自動化 - Qiita 

https://qiita.com/kawada2017/items/da08a2e978d5c400391e

#### 固定長データ出力
固定長データ出力は専用のノードは用意されていませんが、以下のように[フラットファイル・エクスポート]をつかって出力することができます。

SPSS Modelerで固定長データ出力 - Qiita 

https://qiita.com/kawada2017/items/b5863cb10560a9bb21a3

## 5.参考情報

#### サンプルストリームとデータ

https://github.com/hkwd/spsssample/tree/7973567cfa5acf401a6bb3367510251bcfaf710c/230711%E5%9B%BA%E5%AE%9A%E9%95%B7%E3%83%8E%E3%83%BC%E3%83%89


#### ノードのヘルプ

https://www.ibm.com/docs/ja/spss-modeler/18.4.0?topic=node-setting-options-fixed-file

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/items/4bf813e6cba84b2a1008

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee