[]
        
(Showing Draft Content)

윈도우 함수

WINDOW 함수는 테이블 시트에서 데이터 분석을 위한 다양한 기능을 제공합니다. 이 함수들은 현재 행과 관련된 테이블 행 집합(윈도우)을 기준으로 계산을 수행하며, 결과를 표시하는 열을 생성합니다. 함수가 평가되는 대상이 되는 행을 현재 행(current row)이라고 합니다.

윈도우 함수는 집계 함수, 순위 함수, 분석 함수를 특정 윈도우에 대해 실행하며, 각 행에 대한 결과를 생성합니다.

참고:

  • 윈도우 함수의 결과는 테이블 시트의 행 순서에 영향을 줄 수 있습니다.

  • 테이블 시트가 정렬 또는 그룹화된 상태라면, 결과는 고정됩니다.

  • 테이블 시트의 계층적 데이터에 트리 구조가 포함되어 있는 경우, 윈도우 함수는 효과가 없습니다.

  • 윈도우 함수는 필터보다 먼저 평가되며, 필터는 이후 특정 행에만 적용됩니다.

WINDOW윈도우 함수 전용으로만 사용할 수 있으며, 기본적으로 전체 행을 윈도우로 간주합니다.

구문

WINDOW(window_function, [partitionby_function], [orderby_function], [frame_function])

인수 (Arguments)

함수의 인수는 아래와 같습니다:

인수명

설명

window_function

[필수] 윈도우 함수입니다.

[partitionby_function]

[선택] 행을 파티션으로 나눕니다.

[orderby_function]

[선택] 각 파티션 내 행의 논리적 순서를 정의합니다.

[frame_function]

[선택] 현재 행을 기준으로 윈도우 내에서 시작 및 종료 지점을 지정합니다.

WINDOW

WINDOW 함수는 윈도우 함수가 적용되기 전에 파티셔닝, 정렬, 윈도우 범위를 결정합니다.

PARTITIONBYORDERBY를 사용하면 전체 행 순서가 재정렬되며, 뷰(view) 내에 여러 WINDOW 함수가 있는 경우, 모든 WINDOW 함수는 동일한 PARTITIONBYORDERBY를 가져야 합니다.

그렇지 않으면 마지막으로 적용된 WINDOW 함수의 순서가 전체 뷰에 적용됩니다.

예시

WINDOW(ROWNUMBER(), PARTITIONBY([country]))

사용 가능한 모든 윈도우 함수에 대한 자세한 내용은 윈도우 함수 목록 섹션을 참조하기기 바랍니다.

PARTITIONBY

PARTITIONBY 함수는 행을 오름차순으로 나눈 뒤, 각 파티션에 대해 윈도우 함수를 별도로 적용합니다. 지정하지 않으면 전체 행이 하나의 윈도우로 간주됩니다.

하나 이상의 필드 이름 또는 수식을 인수로 사용할 수 있습니다.

구문

PARTITIONBY(field_function [, field_function [, ... ] ])

인수 (Arguments)

함수의 인수는 아래와 같습니다:

인수명

설명

field_function

[필수] 파티셔닝할 필드 이름 또는 수식입니다.

예시

WINDOW(SUM([Sales]), PARTITIONBY([Product], YEAR([@OrderDate])))

ORDERBY

ORDERBY는 각 파티션 내 행의 논리적 순서를 정의합니다. 지정된 순서는 윈도우 정의 및 윈도우 함수의 계산 방식에 영향을 줍니다.

하나 이상의 필드 이름 또는 수식을 인수로 사용할 수 있습니다.

구문

ORDERBY(field_function [, field_function [, ... ] ])

인수 (Arguments)

함수의 인수는 아래와 같습니다:

인수명

설명

field_function

[필수] 정렬할 필드 이름 또는 수식입니다.

ORDERASC 또는 ORDERDESC를 사용하여 오름차순 또는 내림차순 정렬을 지정할 수 있습니다. 기본 정렬 순서는 ORDERASC이며, NULL 값은 가장 낮은 값으로 처리됩니다.

참고:

  • ORDERBY가 지정되지 않으면, 윈도우 함수는 기본적으로 FRAMERANGE(-1, -1)을 사용합니다.

  • ORDERBY만 지정하고 FRAMEROWSFRAMERANGE가 지정되지 않은 경우, 기본 윈도우 범위는 FRAMERANGE(-1, [@])가 됩니다.

구문

ORDERASC(field function)

ORDERDESC(field function)

예시

WINDOW(SUM([Sales]), ORDERBY([Product], ORDERDESC(QUARTER([@OrderDate]))))

FRAME

FRAME은 현재 행을 기준으로 파티션 내 윈도우 범위를 제한합니다. 시작 및 종료, 현재 행 등을 기반으로 윈도우를 구성하며, FRAMEROWS 또는 FRAMERANGE로 정의할 수 있습니다.

FRAMEROWS

FRAMEROWS는 현재 행을 기준으로 앞뒤 고정된 행 수를 지정하여 윈도우 범위를 설정합니다. 범위를 벗어난 값은 파티션의 처음 또는 끝 행을 사용하며, 앞뒤 모두 범위를 벗어난 경우에는 빈 윈도우가 반환됩니다.

매개변수

허용 값

설명

첫 번째 매개변수

현재 행 이전의 행 수.

-1, [@-n] or [@]

-1: 현재 파티션의 경계를 나타냅니다.

n: 행 수를 나타내는 0 이상의 정수를 허용합니다.

[@]: 현재 행의 위치를 나타냅니다.

두 번째 매개변수

현재 행 이수의 행 수.

-1, [@+n] or [@

참고: FRAMEROWS 함수에서 두 번째 매개변수가 생략되면 기본값은 [@]입니다.

구문

FRAMEROWS(preceding_function [, following_function ])

인수 (Arguments)

함수의 인수는 아래와 같습니다:

인수명

설명

preceding_function

[필수] 현재 행 이전의 행 수입니다.

[following_function]

[선택] 현재 행 이후의 행 수입니다.

예시

WINDOW(SUM([Sales]), PARTITIONBY([Product], YEAR([@OrderDate])), ORDERBY(QUARTER([@OrderDate])), FRAMEROWS([@-1], [@]))

FRAMERANGE

FRAMERANGE는 현재 행과 ORDERBY 열에서 동일한 값을 가진 피어(peer) 행들을 기준으로 거리(비교 범위)를 지정하여 윈도우 범위를 제한합니다.

FRAMERANGE 함수는 두 개의 주요 매개변수를 가지며, 각각 현재 행의 피어 행 이전과 이후 거리를 나타냅니다.

Parameter

Accepted Value

Description

첫 번째 매개변수

현재 행과 동일한 값을 가진 피어(peer) 행들 이전의 거리를 나타냄

-1, [@-n] (정렬이 내림차순이면 [@+n], 또는 [@])

- -1: 현재 파티션의 경계를 의미

- n: 0 이상의 정수로, 거리(범위)를 지정

- [@]: 현재 행과 같은 값을 가진 피어 행을 의미

두 번째 매개변수

현재 행과 동일한 값을 가진 피어(peer) 행들 이후의 거리를 나타냄

-1, [@+n] (정렬이 내림차순이면 [@-n], 또는 [@])

프레임 범위는 양쪽이 포함된 닫힌 구간입니다. ORDERBY에는 첫 번째 열이 숫자형 데이터 타입이어야 합니다. 하지만 정렬 기준 열이 2개 이상일 경우, FRAMERANGE에서는 -1[@]만 사용 가능합니다.

FRAMERANGE 와 ORDERBY

  • FRAMERANGE현재 행의 값을 기준으로 피어 행을 찾기 위해, ORDERBY숫자형 열 하나만 지정되어야 합니다.

  • ORDERBY가 없으면, FRAMERANGE가 지정되었더라도 기본 프레임 식은 FRAMERANGE(-1, -1)입니다.

  • ORDERBY2개 이상의 열이 포함된 경우, FRAMERANGE에서는 -1[@]만 사용할 수 있으며 [@-n] 또는 [@+n]은 자동으로 -1로 처리됩니다. 이 경우 피어 행은 결합된 열 값으로 정의될 수 있습니다.

FRAMERANGE 와 NULL

  • 정렬된 열에 NULL 값이 포함된 경우, NULL 값을 가진 행들은 파티션 내 맨 위 또는 맨 아래에 나란히 배치됩니다.

  • 현재 피어 행의 값이 NULL인 경우, [@+/-n][@+/-0]과 동일하게 처리되어 [@]와 같습니다.

  • 현재 피어 행의 값이 NULL이 아닌 경우, [@+/-n] 검색은 NULL 값을 가진 행 이전까지로 제한됩니다.

구문

FRAMERANGE(preceding_function [, following_function ])

인수 (Arguments)

함수의 인수는 아래와 같습니다:

인수명

설명

preceding_function

[필수] 현재 행 이전의 거리입니다.

[following_function]

[선택] 현재 행 이후의 거리입니다.

예시

WINDOW(SUM([Sales]), PARTITIONBY([Product], YEAR([@OrderDate])), ORDERBY(QUARTER([@OrderDate])), FRAMERANGE([@-1], [@]))

아래 이미지는 집계 윈도우 함수를 사용하여 각 제품의 이동 평균 매출매출 추세를 구하는 방법을 보여줍니다.

WindowFunctions