Read from Variable Format File

Read from Variable Format File は、さまざまなレイアウトのレコードを含むファイルからデータを読み込みます。各レコードは、リスト フィールドとして読み込まれます。親レコード タイプを示すタグを指定でき、それ以外のすべてのレコード タイプが親の下のリスト フィールドになります。

可変フォーマット ファイルには、次の特性があります。

  • ファイル内のレコードは、異なるフィールド、および異なる数のフィールドを持つことができる。
  • 各レコードには、レコードのタイプを識別するタグ (通常は数字) を含める必要がある。
  • 階層的な関連性をサポートしている。

可変フォーマット ファイルの例

次の例は、2 人の顧客 Joe Smith と Anne Johnson の当座預金口座の取引に関する情報を含む、可変フォーマット ファイルを示しています。この例のファイルは、フィールド区切り文字としてカンマを使用する区切り記号付きファイルです。

001   Joe,Smith,M,100 Main St,555-234-1290
100   CHK12904567,12/2/2007,6/1/2012,CHK
200   1000567,1/5/2012,Fashion Shoes,323.12
001   Anne,Johnson,F,1202 Lake St,555-222-4932
100   CHK238193875,1/21/2001,4/12/2012,CHK
200   1000232,3/5/2012,Blue Goose Grocery,132.11
200   1000232,3/8/2012,Trailway Bikes,540.00

各レコードの先頭フィールドには、レコードのタイプ、およびレコードのフォーマットを識別するタグが含まれています。

  • 001: Customer レコード
  • 100: Account レコード
  • 200: Account transaction レコード

区切り記号付きファイルにおいて、上の例に示すように、タグ値 (001、100、200) をレコード先頭の固定長バイトに含めることは一般的です。

各レコードには独自のフォーマットがあります。

  • 001: FirstName,LastName,Gender,Address,PhoneNumber
  • 100: AccountID,DateOpened,ExpirationDate,TypeOfAccount
  • 200: TransactionID,DateOfTransaction,Vendor,Amount

レコード フォーマット 100 (アカウント レコード) は、前のレコード 001 の子で、レコード フォーマット 200 (アカウント トランザクション レコード) は、前のレコード 100 (アカウント レコード) の子です。したがって、例のファイルでは、Joe Smith のアカウント CHK12904567 に Fashion Shoes で 2012/1/5 に数量 323.12 のトランザクションが発生していました。同様に、Anne Johnson のアカウント CHK238193875 には、Blue Goose Grocery で 2012/3/5 に 1 つ、Trailway Bikes で 2012/3/8 に 1 つのトランザクションが発生していました。

[ファイル プロパティ] タブ

オプション名 説明

サーバ名

入力として選択したファイルが Enterprise Designer を実行しているコンピュータ上にあるか、Spectrum™ Technology Platform サーバー上にあるかを示します。ローカル コンピュータ上のファイルを選択した場合、サーバー名はマイ コンピュータになります。サーバー上のファイルを選択した場合、サーバー名は Spectrum™ Technology Platform になります。

ファイル名

ファイルへのパスを指定します。省略記号ボタン (...) をクリックし、目的のファイルを選択します。

ワイルド カード文字を使用して、ディレクトリ内の複数のファイルからデータを読み込むことができます。サポートされているワイルド カード文字は、* と ? です。例えば、*.csv と指定して、ディレクトリ内にある、拡張子が .csv のファイルをすべて読み込むことができます。複数のファイルを正常に読み込むには、各ファイルが同じレイアウト (同じ位置に同じフィールド) を持つ必要があります。[フィールド] タブで指定したレイアウトに一致しないレコードは、形式に誤りのあるレコードとして扱われます。

HDFS ファイル サーバーからのファイルの読み込みでサポートされる圧縮形式を次に示します。
  1. GZIP (.gz)
  2. BZIP2 (.bz2)
注: ファイルの拡張子は、そのファイルの解凍に使用される圧縮形式を示します。
重要: なお、Spectrum™ Technology Platform サーバーを実行しているプラットフォームが Unix または Linux の場合、これらのプラットフォームでファイル名およびパスの大文字と小文字が区別されることに注意してください。

レコード タイプ

ファイル内のレコードのフォーマット。次のいずれかを選択します。

行順次
ファイル内の各レコードが復帰または改行 (CR または LF) などの行末 (EOL) 文字で区切られ、レコード内の各フィールドの開始文字位置と終了文字位置が固定しているテキスト ファイル。
固定長
ファイル内の各レコードの長さ (文字数) が一定で、レコード内の各フィールドの開始文字位置と終了文字位置が固定しているテキスト ファイル。
区切り記号付き
ファイル内の各レコードが復帰または改行 (CR または LF) などの行末 (EOL) 文字で区切られ、レコード内の各フィールドがカンマ (,) などの特定の文字で区切られているテキスト ファイル。

文字エンコーディング

テキスト ファイルのエンコーディング。次のいずれかを選択します。

UTF-8
すべての Unicode 文字をサポートし、かつ ASCII との下位互換性があります。UTF の詳細については、unicode.org/faq/utf_bom.html を参照してください。
UTF-16
すべての Unicode 文字をサポートします。しかし、ASCII との下位互換性はありません。UTF の詳細については、unicode.org/faq/utf_bom.html を参照してください。
US-ASCII
英語のアルファベット順に従う文字エンコーディング。
UTF-16BE
ビッグエンディアン UTF-16 エンコーディング (下位アドレスが上位バイトとなるようにシリアル化)。
UTF-16LE
リトルエンディアン UTF-16 エンコーディング (下位アドレスが下位バイトとなるようにシリアル化)。
ISO-8859-1
主として西ヨーロッパの言語で使われる ASCII 文字エンコーディング。Latin-1 とも呼ばれます。
ISO-8859-3
主として南ヨーロッパの言語で使われる ASCII 文字エンコーディング。Latin-3 とも呼ばれます。
ISO-8859-9
主としてトルコ語で使われる ASCII 文字エンコーディング。Latin-5 とも呼ばれます。
CP850
西ヨーロッパの言語を書くための ASCII コード ページ。
CP500
西ヨーロッパの言語を書くための EBCDIC コード ページ。
Shift_JIS
日本語のための文字エンコーディング。
MS932
NEC 特殊文字、NEC 選定 IBM 拡張文字、IBM 拡張文字を含めた Microsoft の拡張版 Shift_JIS 文字コード。
CP1047
Latin-1 文字セット全体を含む EBCDIC コード ページ。

レコード長

固定長ファイルでは、個々のレコードの文字数を指定します。

フィールド区切り文字

区切り記号付きファイル内のフィールドを区切るのに使用する文字を指定します。

例えば、次のレコードでは (|) 記号がフィールド区切り文字として使われています。

7200 13TH ST|MIAMI|FL|33144

フィールド区切り文字として定義できるのは次の文字です。

  • スペース
  • タブ
  • カンマ
  • ピリオド (.)
  • セミコロン
  • パイプ (|)

これ以外の文字がフィールド区切り文字として使われているファイルについては、省略記号ボタン (...) をクリックし、別の文字を区切り文字として選択してください。

タグ区切り文字 区切り記号付きファイル内の各レコードの識別フィールドを区切るために、タグ フィールドの後ろに配置する文字を指定します。タグ区切り文字は 1 文字でなければなりません。

デフォルトでは、以下の文字がタグ区切り文字として選択できます。

  • スペース
  • タブ
  • カンマ
  • ピリオド (.)
  • セミコロン
  • パイプ (|)

これ以外の文字がタグ区切り文字として使われているファイルについては、省略記号ボタン (...) をクリックして、カスタムなタグ区切り文字を追加して選択します。

注: デフォルトで、[レコード区切り文字][フィールド区切り文字] として選択された文字と同じです。このフィールドを有効にして別の文字を選択するには、[フィールド区切り文字と同じ] チェックボックスをオフにします。
[フィールド区切り文字と同じ] タグ区切り文字がフィールド区切り文字と同じかどうかを示します。別の文字をタグ区切り文字として選択するには、このチェックボックスをオフにします。
注: デフォルトで、このチェックボックスはオフで、[タグ区切り文字] フィールドは無効になっています。

Text qualifier

区切り記号付きファイル内のテキスト値を囲むのに使用する文字。

例えば、次のレコードでは二重引用符 (") がテキスト修飾子として使われています。

"7200 13TH ST"|"MIAMI"|"FL"|"33144"

テキスト修飾子として定義できるのは次の文字です。

  • 一重引用符 (')
  • 二重引用符 (")

これ以外の文字がテキスト修飾子として使われているファイルについては、省略記号ボタン (...) をクリックし、別の文字をテキスト修飾子として選択してください。

レコード区切り文字

順次ファイルまたは区切り記号付きファイル内のレコードを区切るのに使用する文字を指定します。[デフォルトの EOL を使用] チェック ボックスをオンにすると、このフィールドは使用できません。

使用できるレコード区切り文字の設定は次のとおりです。

Unix (U+000A)
改行 (LF) 文字でレコードを区切ります。これは Unix システムの標準のレコード区切り文字です。
Macintosh (U+000D)
復帰 (CR) 文字でレコードを区切ります。これは Macintosh システムの標準のレコード区切り文字です。
Windows (U+000D U+000A)
復帰改行 (CR+LF) でレコードを区切ります。これは Windows システムの標準のレコード区切り文字です。

これ以外の文字がレコード区切り文字として使われているファイルについては、省略記号ボタン (...) をクリックし、別の文字をレコード区切り文字として選択してください。

ルート タグ名

他のレコード タイプの親であるレコードに対して使用するタグ。例えば、3 つのレコード タイプ 001、100、200 があり、レコード タイプ 100 および 200 がレコード タイプ 001 の子である場合、001 はルート タグです。

固定長タグを使用

レコード タグを配置する各レコードの先頭に固定長スペースを割り当てるかどうかを指定します。例えば、以下は、固定長フィールドにタグ 001、100、200 を持つファイルを示しています。

001   Joe,Smith,M,100 Main St,555-234-1290
100   CHK12904567,12/2/2007,6/1/2012,CHK
200   1000567,1/5/2012,Mike's Shoes,323.12

タグ開始位置

[固定長タグを使用] ボックスをオンにした場合、各レコード内のタグの開始位置を指定します。例えば、タグがレコードの 4 文字目で始まる場合は 4 と指定します。

タグ長

[固定長タグを使用] ボックスをオンにした場合、[タグの開始位置] フィールドで指定した位置から始まるタグに割り当てるスペースの数を指定します。例えば、[タグの開始位置] フィールドで 3 と指定し、[タグ長] フィールドで 7 と指定した場合、4 ~ 10 の位置がレコード タグと見なされます。指定する値は、最も長いタグ名のすべての文字を含められるだけの大きさである必要があります。

[ルート タグ名] フィールドのタグ名を長くした場合、[タグ長] フィールドの値は自動的に増えます。

最大タグ長は 1024 です。

デフォルトの EOL を使用

Spectrum™ Technology Platform サーバーが実行されているオペレーティング システムのデフォルトの行末 (EOL) 文字をファイルのレコード区切り文字として使用します。

ファイルの EOL 文字がサーバーのオペレーティング システムで使われているデフォルトの EOL 文字と異なる場合は、このオプションをオンにしないでください。例えば、ファイルで Windows の EOL が使われていて、サーバーの動作プラットフォームが Linux の場合は、このオプションをオンにしないでください。代わりに、[レコード区切り文字] フィールドで [Windows] オプションを選択します。

フィールド数が定義よりも少ないレコードを、形式誤りとみなす

このオプションを有効にすると、完全なレコードより少ない数のフィールドを含む子レコードは形式誤りと見なされます。形式誤りレコードが発生すると、処理は次のルート タグまで進み、その間にあるすべての子タグが無視されます。例外は、行番号とともに、形式誤りの子レコードについての情報を格納するログに書き出されます。

注: このオプションが有効かどうかにかかわらず、次の場合にはレコードは常に形式誤りと見なされます。
  • タグが不明である
  • 行が空である
  • データを持たないタグがある
  • 別のタグの子であるタグを持つレコードがルート タグを持つレコードの直後に表示される

[フィールド] タブ

[フィールド] タブでは、ファイルから読み込む各フィールドの特性を指定します。

[実行時] タブ

フィールド名 説明

ファイル名

最初のタブで選択したファイル名が表示されます。

開始レコード

レコードをデータフローに読み込むときファイルの先頭部分にあるレコードをスキップしたければ、読み込みたい最初のレコードを指定します。例えば、最初の 50 個のレコードをスキップする場合は 51 と指定します。これで 51 番目のレコードがデータフローに読み込まれる最初のレコードとなります。

すべてのレコード

[開始レコード] フィールドで指定したレコードからファイルの最後までのレコードをすべて読み込む場合は、このオプションをオンにします。

最大レコード数

[開始レコード] フィールドで指定したレコードを起点にそこから一定の数のレコードを読み込む場合は、このオプションをオンにします。例えば、最初の 100 個のレコードを読み込みたい場合は、このオプションをオンにして 100 と入力します。