Nifi Text
1. ExtractText
Regex를 이용해 검색된 문자를 추출한다.
[사용자 Attribute] + . + [Regex의 Capturing Group 순번] 형태의 Dynamic Attribute를 생성해서 찾아진 값에 매핑한다. 사용자 Attribute가 “regex”이고 그 값이 “abc (def)? (g)”인 경우, 그리고 1) Flowfile이 “abcdef”인 경우 “def”와 매칭되기 때문에 Dynamic Attribute “regex.1”이 자동으로 추가됩니다. 2) “abcg”인 경우 “def”와 일치하지 않으므로 “regex.1”이라는 속성은 추가되지 않으며, 값이 “g”가 존재하므로 “regex.2”라는 Dynamic Attribute가 자동으로 추가됩니다.
- Ref : templates - Csv2Json
- Property
- regex : abc(def)?(g) <– 직접 등록
- csv : (.+),(.+),(.+),(.+) <– 직접 등록 (4개의 Capturing Group 생성 됨)
2. ReplaceText
Search value를 Replacement value로 변경한다
- Ref : https://github.com/kalphageek/apache-nifi-templates/tree/master/Movie%20Extract
- Property
- Search value : ;;
- Replacement value : ;
이전 ExtractText Processor에 설정한 “csv” Dynamic Attribute에서 추출된 값을 이용해 Replacement value를 설정한다. csv포맷을 json포맷으로 변경.
- Ref : templates - Csv2Json
- Property
- Search value : (?s:^.*$) –> 무슨 글자든 Single Line 단위로 처리하겠다는 의미
- Replacement value : { “field1” : “${csv.1}”, “field2” : “${csv.2}”, “field3” : “${csv.3}”, “field4” : “${csv.4}” }
- Replacement Strategy : Regex Replace
- Evaluation Mode : Entire Text
- Line-by-line Evaluation Mode = entire
3. SplitText
CSV 파일을 읽어서 1줄단위로 분리한다
- Ref : https://github.com/kalphageek/apache-nifi-templates/tree/master/Movie%20Extract
- Property
- Line split count : 1