[S/W] [NiFi] NiFi를 활용하여 파일명에서 폴더명 추출하기
[S/W][NiFi] NiFi활용, 파일명에서 폴더명 추출해서 넣기
<배경설명>
- 파일명에 '날짜' 정보가 포함되어 있고, 날짜별(yyyyMMdd) 폴더에 해당 파일을 넣으려 함.
- 파일명 세부형식 : 'abcd'로 시작하며, 확장자는 'png', 마지막 '_'이후 날짜 정보가 포함되어 있음.
* 파일명 예시 : abcd<정보>_<날짜정보(예시.20221024060000)>.png
- NiFi를 활용해서 한번에 특정 디렉터리에서 파일을 수신해서, 한번에 각각 파일명에 있는 날짜를 활용해서 디렉터리로 정리하려 함.
<세부 NiFi Processor>
- GetFile
File Filter : abcd\w.png [의미 : abcd로 시작하고, 확장자가 png인 파일]
* (참고) 확장자 전의 '.'은 특수문자이므로 \ 를 사용해서 escape 처리가 필요함.
- PutFile
Directory : /OUT/${filename:substringAfterLast('_'):substringBeforeLast('.'):substring(0,8)
}
[의미 : filename에서 마지막으로 나오는 '_' 이후의 문자열에서 '.'(확장자) 전의 문자열을 자르고, 해당 문자열의 8글자(연,월,일)를 자른다]
Create Missing Directories : true
[의미 : Directory가 없을 경우, NiFi의 권한으로 신규 디렉터리를 생성함]
<수행결과>
기존 C언어를 통해 Parsing할 때는 filename을 string형태로 읽고 Array와 같은 형태로 수행하였는데, NiFi를 통하니 'substringAfterLast' 등을 사용할 수 있어서 파일 이름 중간에 무엇이 추가되든 마지막에 날짜 정보가 있기만 하면 정상적으로 수행될 수 있어 유연성이 확대되었다.