이번 장부터는 Apache nifi 표현 언어 가이드 1장에 이어 docs 내용의 함수부터 번역하여 기술하겠습니다.
함수
함수는 속성 값들을 조작하고 비교하는 편리한 방법을 제공합니다.
표현 언어는 자동화된 데이터 흐름의 요구를 충족하기 위해 다양한 함수를 제공합니다.
각 함수는 0개 이상의 인자를 받고 하나의 값을 반환합니다. 이러한 함수들은 연결되어 강력한 표현식을 만들어 조건을 평가하고 값들을 조작하는 데 사용될 수 있습니다.
데이터 유형
함수의 인자와 반환되는 값은 특정한 데이터 유형을 가지고 있습니다.
표현 언어는 여러가지 다른 데이터 유형을 지원합니다.
- 문자열(String) : 문자열은 숫자, 문자, 공백 및 특수문자로 구성된 문자의 연속입니다.
- 숫자(Number) : Number는 하나 이상의 숫자(0부터 9)로 구성된 정수입니다
- 십진수(Decimal) : 십진수는 소수점을 지원하며, 소수점 이하의 값과 정밀도 손실을 최소화한 큰 값도 처리할 수 있는 숫자값입니다.
- 날짜(Date) : Date는 날짜와 시간을 저장하는 객체입니다.
- 부울(Bloolean) : 부울은 true 아니면 false로 이루어진 참과 거짓입니다.
표현언어는 보통 값을 함수에 적절한 데이터 유형으로 자동으로 강제변환할 수있습니다.
그러나 특정 데이터 유형으로 값을 수동으로 강제 변환할 수 있는 함수도 존재합니다.
부울(Bloolean) 식
표현 언어의 강력한 기능 중 하나는 속성값과 다른 값과의 비교를 할 수 있는 능력입니다.
이 기능은 자주 사용되며, 예를 들어 프로세서가 데이터를 어떻게라우팅해야 하는지 구성하는 데 사용됩니다.
입력 유형 | 반환 유형 | 설명 | 예 | |
isNull |
Any | Boolean | isNull 함수는 주로 속성이 존재하는지 여부를 판단하는데 사용 | ${filename:isNull()}는 속성이 존재하지 않으면 true 아니면 false |
notNull |
Any | Boolean | notNull 함수는 isNull 함수의 반대 값을 반환 | ${filename:notNull()}는 속성이 존재하면 true 아니면 false |
isEmpty |
String | Boolean | isEmpty 함수는 null이거나 문자가 없거나 공백만 있으면 true | ${literal(" "):isEmpty()}와 ${literal(""):isEmpty()} 모두 true를 반환 |
equals |
Any | Boolean | 다른 두 문자열의 값이 같은지 여부를 확인 | ${hello:equals( ${filename} )} |
equalsIgnoreCase |
String | Boolean | 다른 두 문자열의 대소문자만 다른 경우를 비교 | "hello.txt", "HELLO.TXT", "HeLLo.TxT"와 같은 경우 true를 반환 |
gt |
Number | Boolean | gt 함수는 숫자 비교에 사용되며 대상 인수 보다 큰 경우 true | |
ge |
Number | Boolean | ge 함수는 숫자 비교에 사용되며 대상 인수 보다 크거나 같은경우 ture | |
lt |
Number | Boolean | lt 함수는 숫자 비교에 사용되며, 대상 인수보다 작은 경우 true | |
le |
Number | Boolean | le 함수는 숫자 비교에 사용되며, 대상 인수보다 작거나 같은 경우 true | |
and |
Boolean | Boolean | and 함수는 하나의 불리언 값으로 인수를 받아 모두 true이면 true를 반환 | |
or |
Boolean | Boolean | or 함수는 하나의 불리언 값으로 인수를 받아 하나라도 true이면 true | |
not |
Boolean | Boolean | not 함수는 부정된 불리언 값을 반환 | |
ifElse |
Boolean | String | ifElse는 true로 평가되면 첫번째 인수를 평가하고 아니면 두번째 인수를 평가 | 별도 작성 |
isJson | Any | Boolean | 별도 작성 |
ifElse Examples
표현식 | 값 |
${bool:ifElse('a','b')} | a |
${literal(true):ifElse('a','b')} | a |
${nullFilename:isNull():ifElse('file does not exist', 'located file')} | file does not exist |
${nullFilename:ifElse('found', 'not_found')} | not_found |
${filename:ifElse('found', 'not_found')} | not_found |
${filename:isNull():not():ifElse('found', 'not_found')} | found |
ifJson Examples
표현식 | 값 |
${jsonObj:isJson()} | true |
${jsonObjMissingStartingBrace:isJson()} | false |
${jsonObjMissingEndingBrace:isJson()} | false |
${jsonArray:isJson()} | true |
${jsonArrayMissingStartingBracket:isJson()} | false |
${jsonArrayMissingEndingBracket:isJson()} | false |
${someAttribute:isJson()} | false |
${emptyQuotedString:isJson()) | false |
${quotedString:isJson()} | false |
${integer:isJson()} | false |
${decimal:isJson()} | false |
${trueAttr:isJson()} | false |
${falseAttr:isJson()} | false |
${nullAttr:isJson()} | false |
여기까지 표현 언어에 대한 함수와 부울(Bloolean) 식에 대한 설명과 개념을 다뤘습니다.
다음 장에서는 문자열부터 살펴보겠습니다.
'빅데이터 > Apache Nifi' 카테고리의 다른 글
Nifi Database 02. Connection Pool 설정 (1) | 2023.12.18 |
---|---|
Apache NiFi 표현 언어 가이드(3) (0) | 2023.12.14 |
Apache NiFi 표현 언어 가이드(1) (1) | 2023.12.11 |
Apache nifi 사용 안내서(2) (0) | 2023.12.07 |
Apache nifi 사용 안내서(1) (1) | 2023.12.07 |