빅데이터/Apache Nifi / / 2023. 12. 12. 10:16

Apache NiFi 표현 언어 가이드(2)

이번 장부터는 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) 식에 대한 설명과 개념을 다뤘습니다.

다음 장에서는 문자열부터 살펴보겠습니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유