Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Contour 표현식의 배열 처리

Contour의 배열은 Expression 보드에서 처리합니다. 배열을 조작한 뒤 다른 보드에서 문자열로 사용하려면 array_join으로 변환합니다. 배열 자체와 쉼표로 연결한 문자열은 서로 다른 자료형입니다.

배열 길이

items_array가 배열 열일 때 다음 Filter 식은 원소가 있는 행을 남깁니다.

array_length("items_array") > 0

array_length는 입력이 null이면 -1을 반환합니다.

고객별 상품 목록

다음은 가상 구매 데이터입니다.

customer_iditem
123bread
123eggs
444milk
444bananas
444bread

Add new column에서 다음 식으로 items_text를 만듭니다.

array_join(array_agg("item") OVER (PARTITION BY "customer_id"), ', ')

array_agg가 고객별로 상품을 배열에 모으고 array_join이 쉼표와 공백으로 연결합니다. OVER를 사용하는 계산은 원래 행을 유지하므로 결과는 고객당 한 행으로 줄어들지 않습니다. 다음은 가능한 배열 순서 중 하나를 표시한 결과입니다.

customer_iditemitems_text
123breadbread, eggs
123eggsbread, eggs
444milkmilk, bananas, bread
444bananasmilk, bananas, bread
444breadmilk, bananas, bread

구성 요소의 역할은 다음과 같습니다.

식 또는 함수역할
array_agg("item")집계 범위의 값을 배열로 모음
array_agg("item") OVER (PARTITION BY "customer_id")고객별 배열을 만들되 각 구매 행은 유지
array_agg_distinct같은 값이 한 번씩만 들어가는 배열 집계
array_join("items_array", ', ')실제 배열 열의 원소를 문자열로 연결

집계한 배열의 순서를 고정하지 않으면 표시 순서는 달라질 수 있습니다. 값 순서가 필요하면 ARRAY_SORT로 정렬하거나 업무에 맞는 순서를 구성합니다.

고객당 한 배열로 집계

고객당 한 행이 필요하면 Aggregate 모드에서 customer_id를 그룹 열로 지정하고 array_agg("item")을 items_array라는 집계 열로 만듭니다. 해당 결과를 집계 데이터로 전환하여 다음 단계에 사용합니다.

customer_iditems_array
123["bread", "eggs"]
444["milk", "bananas", "bread"]

여기서 items_array는 문자열 원소를 가진 실제 배열입니다. 앞의 items_text처럼 문자열로 연결한 값은 explode에 직접 전달하지 않습니다.

배열을 행으로 펼치기

Expression Editor의 Replace column에서 items_array를 선택하고 다음 식을 적용합니다.

explode("items_array")

위의 두 배열 행을 펼치면 다음 다섯 원소 행을 얻습니다.

customer_iditems_array
123bread
123eggs
444milk
444bananas
444bread

다른 보드에서 펼친 값을 쓰려면 이후 Expression 보드에서 결과 열의 자료형을 명시합니다. 이 상품 예제는 문자열입니다.

CAST("items_array" AS STRING)

null 또는 빈 배열인 입력 행도 유지하려면 explode_outer를 사용합니다.

explode_outer("items_array")
입력 배열explode 결과explode_outer 결과
null출력 행 없음null 값 행 하나
[]출력 행 없음null 값 행 하나
["bread", null]bread 행과 null 원소 행bread 행과 null 원소 행

입력 배열 자체가 null인 경우와 배열 안의 원소가 null인 경우를 구분합니다. EXPLODE 계열은 행을 생성하는 함수이므로 OVER 절을 사용하지 않습니다.