2017-03-15 2 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]은 첫 번째 열 인덱스에서 16 번째 인덱스까지를 선택합니다. $[16..31]은 17 번째 열 인덱스에서 32 번째 인덱스로 선택합니다.

0

나는 똑같은 문제에 직면했다. @ suulthony h가 쓴 글은 약간의 조정이 필요하다. 나는이 선들을 대신 사용했고 그것은 나를 위해 일했습니다.

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

"count"가 머리글과 바닥 글에서 누락되어 예외가 발생했습니다. 희망이 도움이됩니다.

관련 문제