기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

Window - 스크립트 함수

Window()는 전체 표의 섹션(또는 "창")의 여러 행에서 계산을 수행하고 각 행에 대해 단일 값을 생성합니다.

Window 함수를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  • 테이블의 창에 있는 평균, 최댓값 또는 최솟값과 행에 있는 개별 숫자 값을 비교합니다.

  • 창 내 또는 전체 테이블 내에서 개별 값의 순위를 계산합니다.

Window 함수는 테이블의 레코드 수를 변경하지 않지만 집계, 관계 및 범위 함수와 유사한 작업을 수행할 수 있습니다.

Window 함수는 작업 중인 테이블의 LOAD 문에 포함되어야 하거나 상주 LOAD와 같이 테이블을 참조해야 합니다. 예를 들어, 예 - 집계가 포함된 필드 추가를 참조하십시오.

이름은 생략할 수 있지만, 그렇게 하면 필드 이름이 Window 함수 표현식 전체로 설정됩니다. 예를 들어, 아래 예의 AvgDepSalary는 다음과 같습니다.

[AvgSalary]: Load *, Window(avg(Salary), Department) as AvgDepSalary Resident Employees;
정보 메모

Window 함수에 필드 이름을 지정하는 것이 좋습니다.

Window은 반올림이나 기본 수치 연산과 같은 일반 함수를 지원합니다. 예:

Load *, Round(Window(Sum(Salary),Department)) as SumDepSalary
Load *, Window(Sum(Salary),Department) + 5 as SumDepSalary
정보 메모

Window 함수는 전체 테이블을 검색합니다. 메모리 소비 측면에서 이 스캐닝의 비용은 테이블의 필드 수에 비례합니다. Window 함수가 작동하는 필드 외에 몇 개의 필드가 있는 테이블은 항상 많은 필드가 있는 테이블보다 선호됩니다.

일반적으로 Window 함수는 동일한 집계, Where 절(필터), Group by 절(파티션) 및 Order by 절(정렬)을 포함하는 유사한 스크립트 작업과 비교했을 때 메모리를 2~4배 더 많이 사용하고 다시 로드하는 데 2~4배 더 오래 걸립니다.

구문:  

Window (main_expr, [partition1, partition2, ...], [sort_type, [sort_expr],[filter_expr], [start_expr, end_expr]])

반환 데이터 유형: 행당 하나의 값으로, 다른 표현식과 결합하거나 사용하거나 LOAD 문으로 만들어진 결과 테이블에 직접 추가할 수 있습니다.

인수:  

인수
인수설명
main_expr

함수에 의해 계산되고 반환되는 주요 입력 표현식입니다. Median(Salary)와 같은 집계 기반 표현식이어야 합니다. 예:

Window(Median(Salary)) as MedianSalary

표현식은 집계가 적용되지 않은 필드 이름이 될 수도 있습니다. 이 경우 Window는 해당 필드에 Only() 함수가 적용되는 것처럼 처리합니다. 예:

Window(Salary) as WSalary

Window(Sum(Avg(Salary))) 또는 Window(Sum(Window(Salary)))와 같이 중첩된 집계나 중첩된 창 함수를 포함하는 표현식은 허용되지 않습니다.

partition1, partition2

main_expr 뒤에는 원하는 만큼의 파티션을 정의할 수 있습니다. 파티션은 집계를 적용할 조합을 정의하는 필드입니다. 예:

Window(Avg(Salary), Department) as AvgDepSalary

이는 각 부서의 평균 급여를 계산합니다.

여러 개의 파티션 매개 변수가 제공되는 경우, 집계는 고유한 파티션 필드 조합을 사용하여 각 행에 적용됩니다. 예:

Window(Avg(Salary), Department, Country) as AvgDepSalaryPerCountry

이는 각 국가의 각 부서별 평균 급여를 계산합니다. 스웨덴마케팅 부서와 캐나다마케팅 부서와 같이 서로 다른 국가에 중복된 부서가 있는 경우 서로 다른 파티션으로 처리됩니다.

파티셔닝은 group by 절에서 달성되는 그룹화와 유사합니다. 하지만 파티셔닝은 입력 테이블에 비해 레코드 수를 줄이지 않습니다.

sort_type, [sort_expr]

선택적으로 정렬 유형과 정렬 표현식을 지정합니다. 이는 집계가 수행되는 순서를 정의합니다. sort_type은 상수 문자열이며 다음 세 가지 값 중 하나가 있을 수 있습니다.

  • ASC: 오름차순 정렬.

  • DESC: 내림차순 정렬.

  • NONE

sort_type ASC 또는 DESC를 정의하는 경우 정렬 표현식을 정의해야 합니다. sort_type NONE을 사용하면 정렬 표현식을 제공하면 안 됩니다. 정렬 표현식은 파티션 내 행의 순서를 결정합니다.

예:

Window(RecNo(), Department, 'ASC', Year)

위의 예에서 파티션 내 집계는 Year 필드에 따라 오름차순으로 수행됩니다.

정렬 매개 변수는 슬라이딩 창이 테이블을 처리하는 순서에도 영향을 미칩니다. 예 - 정렬된 슬라이딩 창이 있는 필드 추가

filter_expr

선택적으로 필터 표현식을 추가합니다. 이는 레코드를 계산에 포함할지 여부를 결정하는 부울 표현식입니다.

filter_expr이 제공되면 정렬 유형을 포함해야 합니다. 정렬 유형이 정의되지 않은 경우 인수는 필터 표현식이 아닌 파티션 매개 변수로 해석될 수 있습니다. filter_expr 매개 변수는 완전히 생략할 수도 있고 사실적인 값을 포함할 수도 있습니다. 두 경우 모두 필터가 사용되지 않으므로 행이 제외되지 않습니다.

예:

Window(avg(Salary), Department, 'ASC', Age, Country='US' Or Country='Canada') as AvgDepSalaryInUsOrCanada

위의 Window 문은 Country 필드가 미국 또는 캐나다가 아닌 모든 행을 필터링하여 집계에서 제외합니다. 필터링된 행에 대한 출력 값은 여전히 존재하지만 다른 모든 출력 행과 마찬가지로 필터에서 제외되지 않은 행의 집계된 결과만 포함됩니다.

start_expr,end_expr

선택적으로 슬라이딩 창 기능에 대한 인수를 설정합니다. 이렇게 하면 집계할 행의 수가 더욱 제한됩니다. 각 출력 행에는 현재 행의 앞과 뒤에 있는 여러 행의(집계된) 결과만 포함됩니다. 슬라이딩 창에는 두 개의 인수(start_expr,end_expr)가 필요합니다. 이러한 인수가 제공되면 정렬 유형을 건너뛰어서는 안 됩니다. 그렇지 않으면 인수는 슬라이딩 창 대신 파티션 매개 변수로 해석될 수 있습니다. 매개 변수 start_expr,end_expr은 다음으로 구성됩니다.

  • 표현식 시작: 창에 포함할 현재 행 이전의 행 수입니다.

  • 표현식 끝: 창에 포함할 현재 행 뒤의 행 수입니다.

예를 들어, 앞의 3개 행, 현재 행, 다음 행을 포함하려면 다음과 같이 합니다.

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, -3, 1) as WSlidingSalaryDepartment

모든 이전 행 또는 모든 후속 행을 표시하려면 Unbounded() 함수를 사용할 수 있습니다. 예를 들어, 이전 행, 현재 행 및 다음 행을 모두 포함하려면 다음을 수행합니다.

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, UNBOUNDED(), 1) as WSlidingSalaryDepartment

예를 들어, 현재 행의 세 번째 행과 이후의 모든 행을 포함하려면 다음을 수행합니다.

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, 3, UNBOUNDED()) as WSlidingSalaryDepartment

위의 예에서 정렬 유형 NONE은 스크립트가 파티션 인수와 정렬 유형 뒤에 오는 매개 변수를 구별할 수 있도록 제공됩니다.

예 - 집계가 포함된 필드 추가

예 - 특정 값으로 필터링된 집계가 포함된 필드 추가

예 - 슬라이딩 윈도우를 사용하여 필드 추가

예 - 정렬된 슬라이딩 창이 있는 필드 추가

제한 사항

Window 다음과 같은 제한 사항이 있습니다.

  • Window는 특히 메모리 소비 측면에서 리소스를 많이 사용하는 함수입니다.

  • WindowQlik Sense Mobile에서 지원하지 않습니다.

  • 차트 표현식은 Window을 지원하지 않습니다.

  • 다른 Window 함수 내에 Window 함수를 중첩할 수 없습니다.

  • Window는 집계 함수 내에서 사용할 수 없습니다.

  • Window은 group by 절이 있는 LOAD 문에서 사용할 수 없습니다.

  • Window는 전체 테이블을 검색할 수 있어야 합니다.

  • WRank(), RecNo()RowNo()는 슬라이딩 창 기능을 사용할 때 Window와 함께 사용할 수 없습니다.

  • 슬라이딩 창 기능을 사용하면 윈도우 크기에 따라 계산 시간이 증가합니다. 일반적으로 큰 창과 결합된 큰 테이블은 피하는 것이 좋습니다.

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 알려 주십시오!