초급 Part04: 데이터 변환 기능의 사용법(2)

안녕하세요. 이번에는 Select 컴포넌트 이외의 변환 기능의 사용법을 소개합니다.

thumbnail image

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건씩 취득할 수 있습니다.

thumbnail image

4. Window

Window 함수를 이용한 집계 등에 사용할 수 있습니다.
독특한 사용방으로는, 고객마다 주문 전표를 주문 일순으로 낡은 것부터 순서대로 나란히 번호를 내릴 때 등에 사용합니다.
여기에 설정된 번호(Row Number)를 통해 고객별 첫 주문 또는 두 번째 주문 등의 데이터를 판별할 수 있습니다.

thumbnail image

5. Sample

데이터에서 텍스트 상자로 설정된 백분율에 따라 랜덤한 순서대로 레코드를 반환합니다.

6. Join

SQL의 JOIN과 동일한 기능입니다.

7. Cross Join

SQL의 Cross Join과 동일한 기능입니다.

8. Clone

데이터를 둘 이상의 처리로 분기할 때 사용합니다.

thumbnail image

9.Filter

SQL의 Where 절입니다.

10. Assert

데이터의 품질 관리를 위해 사용합니다.
데이터가 지정된 조건과 일치하면 작업을 에러 종료합니다. 레코드가 지정된 조건과 일치하면 작업이 오류가 나고 [Error message:] 텍스트 상자에 설정된 오류 메시지가 로그에 출력됩니다.

thumbnail image

조건(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 집계 함수와 거의 같은 기능입니다.
하나 이상의 필드 이름을 지정하고 그에 따라 그룹화된 집계 결과를 반환합니다.

thumbnail image

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로 여러 항목을 출력하는 것도 가능합니다.

thumbnail image

집계 함수 설명
Max Grouping Field에 따라 Field에 지정된 필드의 최대값을 계산합니다. 반환값의 데이터형은, 입력 인수의 데이터형과 같습니다.
Max By Field Argument에 지정된 필드가 최대값인 경우 Grouping Field에 따라 Projected Field에 정의된 값을 반환합니다. 반환 값의 데이터 형식은 Projected Field의 데이터 형식과 동일합니다.
VAR Field Argument에서 지정한 필드의 모든 값에 대해 Grouping Field에 따라 통계 분산을 반환합니다. 반환값의 데이터형은 double 형입니다.
Collect Collect 함수는 그룹화 항목에 따라 값을 집계하는 대신 각 값을 Bag 형식으로 한 줄로 집계하는 기능입니다.

예를 들어, 다음과 같은 데이터가 있다고 가정합니다.

thumbnail image

이를 Aggregate의 Collect을 사용하여 집계를 수행하도록 설정합니다.

thumbnail image

결과 : 변환하면 지정된 그룹화 항목인 "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