2017-03-15 18 views
0

私はフラットファイルを受け取るプロジェクトで作業していますが、最初と最後の行には固定幅パターンに合わない情報があります。この情報をすべて正確にデータウェイティングする方法はありますか?可能であれば、ヘッダーとフッターを変数に入れ、内容をペイロードに入れてください。Mule Dataweave固定幅ファイル(ヘッダーとフッター付き)

例私はあなたが一定の幅でそれを見ても、ヘッダーとフッターはので、多分、彼らがすることができ最初の2つの文字で毎回起動します両方のラインをスキップするが、いけないことができますCSVに知っ

HDMTFSBEUP00000220170209130400   MT              HD07 
DT01870977   FSFSS F3749261   CR00469002017020820170225      0000 
DT01870978   FSFSS F3749262   CR00062002017020820170125      0000 
TRMTFSBEUP00000220170209130400 000000020000002000000000000043330000000000000     0000 

ファイルデータウェイティングによってフィルタリングされますか?

答えて

1

DataWeave Flatfile Schemasのドキュメントを参照してください。いくつかの異なるタイプのデータを処理するいくつかの例があります。この場合

は、私はあなたの例のデータを簡素化し、次のようにカスタムスキーマを適用しようとしました:

例データ:

HDMTFSBEUP00000220170209130400   
DT01870977   
DT01870978   
TRMTFSBEUP00000220170209130400 

スキーマ/フラットファイルの定義:

form: FLATFILE 
structures: 
- id: 'test' 
    name: test 
    tagStart: 0 
    tagLength: 2 
    data: 
    - { idRef: 'header' } 
    - { idRef: 'data', count: '>1' } 
    - { idRef: 'footer' } 
segments: 
- id: 'header' 
    name: header 
    tag: 'HD' 
    values: 
    - { name: 'header', type: String, length: 39 } 
- id: 'data' 
    name: data 
    tag: 'DT' 
    values: 
    - { name: 'code', type: String, length: 17 } 
- id: 'footer' 
    name: footer 
    tag: 'TR' 
    values: 
    - { name: 'footer', type: String, length: 30 } 

スキーマはサンプルデータを検証し、タグ、最初の2文字に基づいて識別します。それに応じて出力がグループ化されます。

{ 
    "header": {}, 
    "data": [{}, {}], 
    "footer": {} 
} 

予想される結果はデー​​タだけなので、payload.dataを選択してください。

0

範囲セレクタを使用してヘッダーとフッターをスキップします。

payload[1..-2] map { 
    field1: $[0..15], 
    field2: $[16..31] 
    ..., 
    ... 
} 

[1..-2]ペイロードにおける第二の最後の行までの2行目から選択します。

$[0..15]は、第1列インデックスから第16インデックスを選択します。 $[16..31]は、17番目の列インデックスから32番目のインデックスを選択します。

0

私は同じ問題に直面していました。@ sulthonyが書いた答えは少し微調整が必​​要です。私は代わりにこれらの線を使用し、それは私のために働いた。

data: 
    - { idRef: 'header', count: 1 } 
    - { idRef: 'data', count: '>1' } 
    - { idRef: 'footer', count: 1 } 

"count"がヘッダーとフッターに表示されず、例外がスローされました。お役に立てれば。

関連する問題