안녕하세요. 이번에는 Select 컴포넌트 이외의 변환 기능의 사용법을 소개합니다.
1. Sort
정렬 기능입니다.
2. Rank
랭크를 설정하는 기능입니다.
Rank 또는 Dense Rank(중복 무시 순위)를 지정할 수 있으며 각각에서 다음과 같이 결과가 다릅니다.
정렬된 필드 | Rank | Dense Rank |
'a' | 1 | 1 |
''a | 1 | 1 |
'b' | 3 | 2 |
3. Limit
취득하는 데이터 건수를 제한하는 기능입니다. SQL의 Top이나 Limit의 기능에 해당합니다.
Limit에는 파티션 설정이 가능하며, 이를 사용하여 주문 데이터에 대해 고객마다 가장 새로운 주문일 주문 데이터를 1건씩 취득할 수 있습니다.
4. Window
Window 함수를 이용한 집계 등에 사용할 수 있습니다.
독특한 사용방으로는, 고객마다 주문 전표를 주문 일순으로 낡은 것부터 순서대로 나란히 번호를 내릴 때 등에 사용합니다.
여기에 설정된 번호(Row Number)를 통해 고객별 첫 주문 또는 두 번째 주문 등의 데이터를 판별할 수 있습니다.
5. Sample
데이터에서 텍스트 상자로 설정된 백분율에 따라 랜덤한 순서대로 레코드를 반환합니다.
6. Join
SQL의 JOIN과 동일한 기능입니다.
7. Cross Join
SQL의 Cross Join과 동일한 기능입니다.
8. Clone
데이터를 둘 이상의 처리로 분기할 때 사용합니다.
9.Filter
SQL의 Where 절입니다.
10. Assert
데이터의 품질 관리를 위해 사용합니다.
데이터가 지정된 조건과 일치하면 작업을 에러 종료합니다. 레코드가 지정된 조건과 일치하면 작업이 오류가 나고 [Error message:] 텍스트 상자에 설정된 오류 메시지가 로그에 출력됩니다.
조건(Conditions) 설정 옵션:
- Match all of the following conditions (AND) - 지정된 모든 조건과 일치하는 값을 가진 레코드 선택(논리적 "AND")
- Match any of the following conditions (OR) - 지정된 조건(논리적 "OR") 중 적어도 하나를 만족하는 값을 가진 레코드 선택
- Match none of the following conditions (NOT) - 지정된 조건 중 어느 것에도 일치하지 않는 값을 가진 레코드를 선택합니다(NOT(OR))
11. Aggregate(집계)
SQL 집계 함수와 거의 같은 기능입니다.
하나 이상의 필드 이름을 지정하고 그에 따라 그룹화된 집계 결과를 반환합니다.
Aggregate에서 사용할 수 있는 집계 함수 정보:
집계 함수 | 설명 |
Count | Grouping Field에 따라 필드 열에 지정된 필드의 Null이 아닌 값의 수를 반환합니다. 반환값의 데이터형은 long형입니다. |
Count Distinct | Grouping Field에 따라 필드 열에 지정된 필드의 고유 값 수를 반환합니다. 반환값의 데이터형은 long형입니다. |
Count All | Grouping Field에 따라 레코드 수를 반환합니다. 반환값의 데이터형은 long형입니다. |
HLL | HyperLogLog++ 알고리즘을 사용하여 Grouping Field에 따라 지정된 필드의 카디널리티 추정값 또는 개별 값의 대략적인 수를 반환합니다. 반환값의 데이터형은 long형입니다. |
Average | Grouping Field에 따라 Field Argument에서 지정한 숫자 필드의 평균을 반환합니다. 반환값의 데이터형에 대해서는, 다음의 표를 참조해 주세요. |
Sum | Grouping Field에 따라 Field Argument에서 지정한 숫자 필드의 합계를 반환합니다. 반환값의 데이터형에 대해서는, 다음의 표를 참조해 주세요. |
Min | Grouping Field에 따라 Field Argument에 지정된 필드의 최소값을 반환합니다. 반환값의 데이터형은, 입력 인수의 데이터형과 같습니다. |
Min By | Field Argument에서 지정한 필드가 최소값인 경우 Grouping Field에 따라 Projected Field에 설정된 값을 반환합니다. 반환 값의 데이터 형식은 Projected Field의 데이터 형식과 동일합니다. |
Min By를 사용하는 방법
예를 들어, 각 과목에서 가장 낮은 점수를 가진 학생의 성명을 원하면 Field는 과목 이름, Field Argument에는 점수, Projected Field에는 학생의 성명을 설정합니다.
이 경우의 출력 결과에 포함되는 필드는 과목명과 학생의 성명이 됩니다.
- 다음과 같이 Min By로 여러 항목을 출력하는 것도 가능합니다.
집계 함수 | 설명 |
Max | Grouping Field에 따라 Field에 지정된 필드의 최대값을 계산합니다. 반환값의 데이터형은, 입력 인수의 데이터형과 같습니다. |
Max By | Field Argument에 지정된 필드가 최대값인 경우 Grouping Field에 따라 Projected Field에 정의된 값을 반환합니다. 반환 값의 데이터 형식은 Projected Field의 데이터 형식과 동일합니다. |
VAR | Field Argument에서 지정한 필드의 모든 값에 대해 Grouping Field에 따라 통계 분산을 반환합니다. 반환값의 데이터형은 double 형입니다. |
Collect | Collect 함수는 그룹화 항목에 따라 값을 집계하는 대신 각 값을 Bag 형식으로 한 줄로 집계하는 기능입니다. |
예를 들어, 다음과 같은 데이터가 있다고 가정합니다.
이를 Aggregate의 Collect을 사용하여 집계를 수행하도록 설정합니다.
결과 : 변환하면 지정된 그룹화 항목인 "Stage Name"별로 숫자나 문자열을 BAG형으로 변환합니다.
StageName | Amount | Probability |
Prospecting | [{"Amount":null},{"Amount":null}] | [{"Probability":"10"}, |
Qualification | [{"Amount":"15000"}] | [{"Probability":"10"}] |
Negotiation/Review | [{"Amount":"125000"}] | |
Closed Won | [{"Amount":"220000"},{"Amount":"85000"}] | [{"Probability":"100"},{"Probability":"100"}] |
Collect에서 정리한 문자열 필드에서 개별 값을 추출하는 경우의 작업 순서
1. 위 Amount 필드를 JSON 형식으로 명시적으로 변환하기
# 결과의 4번째행(Closed Won)을 JSON형식으로 변환한 경우
field1 = ToJson(Amount)
==> [{"Amount":220000}, {"Amount":85000}]
2. 1의 field1 데이터(JSON)에서 개별 값 가져오기
JsonExtractScalar(field1,'$.[0].Amount') ==> 220000
JsonExtractScalar(field1,'$.[1].Amount') ==> 85000