조건에 맞는 열 집계
| 항목 | 값 |
|---|---|
| 화면 이름 | Aggregate on condition |
| 식별자 | aggregateOnConditionV1 |
| 지원 실행 방식 | Batch, Faster |
| 범주 | 집계 (Aggregate), 자주 쓰는 변환 (Popular) |
열 조건에 따라 선택한 대상에 집계 표현식을 적용합니다.
입력 인자
| 이름 | 지정 여부 | 자료형 | 의미와 조건 |
|---|---|---|---|
Condition for columns to aggregate on | 필수 | ColumnPredicate | 입력 스키마의 각 열이 이 조건에 맞는지 검사하고 일치하는 열에 표현식들을 적용합니다. |
Dataset | 필수 | Table | 연산을 적용할 데이터셋입니다. |
Expressions to aggregate | 필수 | List<Expression<AnyType>> | 조건에 일치하는 각 열에 한 번씩 적용할 집계 표현식입니다. |
Group by columns | 선택 | List<Column<AnyType>> | 집계 시 그룹화할 열 목록입니다. 비어 있으면 그룹화를 적용하지 않습니다. |
입출력 예시
예시 1: 경계 조건
모든 열에서 null이 아닌 값의 개수를 셉니다.
인자 값:
Condition for columns to aggregate on:
allColumns(
)Dataset: ri.foundry.main.dataset.aExpressions to aggregate: [
dynamicAlias(
expression:
rowCount(
expression:column,
),
transformer:
columnNameConcat(
inputs: [column,_non_null],
),
)]Group by columns: null
입력:
| id | value | distance |
|---|---|---|
| 1 | 100 | 2000 |
| 2 | null | 100 |
| 3 | 500 | 300 |
출력:
| id_non_null | value_non_null | distance_non_null |
|---|---|---|
| 3 | 2 | 3 |
예시 2: 경계 조건
Integer로 선언된 열에서 null이 아닌 값의 개수와 평균을 계산합니다.
인자 값:
Condition for columns to aggregate on:
columnHasType(
type: Integer,
)Dataset: ri.foundry.main.dataset.aExpressions to aggregate: [
dynamicAlias(
expression:
rowCount(
expression:column,
),
transformer:
columnNameConcat(
inputs: [column,_non_null],
),
),
dynamicAlias(
expression:
mean(
expression:column,
),
transformer:
columnNameConcat(
inputs: [column,_mean],
),
)]Group by columns: null
입력:
| id | value | distance |
|---|---|---|
| 1 | 100 | 2000 |
| 2 | null | 100 |
| 3 | 500 | 300 |
출력:
| id_non_null | id_mean | value_non_null | value_mean |
|---|---|---|---|
| 3 | 2.0 | 2 | 300.0 |
예시 3: 경계 조건
인자 값:
Condition for columns to aggregate on:
columnHasType(
type: Integer,
)Dataset: ri.foundry.main.dataset.aExpressions to aggregate: [
dynamicAlias(
expression:
mean(
expression:column,
),
transformer:
columnNameConcat(
inputs: [column,_mean],
),
)]Group by columns: [id]
입력:
| id | value | distance | airline |
|---|---|---|---|
| 1 | 100 | 2000 | new air |
| 1 | 200 | 3000 | new air |
| 2 | 500 | 3000 | foundry air |
| 2 | 400 | 1000 | foundry air |
출력:
| id | id_mean | value_mean | distance_mean |
|---|---|---|---|
| 1 | 1.0 | 150.0 | 2500.0 |
| 2 | 2.0 | 450.0 | 2000.0 |
예시 4: 경계 조건
Integer로 선언된 모든 열의 평균을 계산합니다.
인자 값:
Condition for columns to aggregate on:
columnHasType(
type: Integer,
)Dataset: ri.foundry.main.dataset.aExpressions to aggregate: [
dynamicAlias(
expression:
mean(
expression:column,
),
transformer:
columnNameConcat(
inputs: [column,_mean],
),
)]Group by columns: null
입력:
| id | value | distance |
|---|---|---|
| 1 | 100 | 2000 |
| 3 | 500 | 300 |
출력:
| id_mean | value_mean |
|---|---|
| 2.0 | 300.0 |