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

Window - 스크립트 함수

Window()는 여러 행에서 계산을 수행하여 각 행에 대한 값을 개별적으로 생성합니다.

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

  • 행의 개별 숫자 값을 열 내의 평균, 최댓값 또는 최솟값과 비교합니다.

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

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

Window 함수는 테이블에 추가하려면 작업 중인 테이블의 LOAD 문 내에 캐시가 있어야 합니다. 예:

[Transactions]: Load *, Window(avg(Expression1),[Num]); LOAD TransLineID, TransID, "Num", Dim1, Dim2, Dim3, Expression1, Expression2, Expression3 FROM [lib://DataFiles/transactions.qvd] (qvd);

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

Load *, Round(Window(Sum(Salary),Department)) as SumSalary
Load *, Window(Sum(Salary),Department) + 5 as SumSalary

Window 함수에 대한 슬라이딩 창을 정의할 수 있습니다. 현재 행에 Window 함수를 적용할 때 사용되는 행 수를 설정합니다. 예를 들어, 창을 이전 3개 행과 이후 3개 행으로 설정할 수 있습니다.

구문:  

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

반환 데이터 유형: LOAD 문으로 만들어진 결과 테이블에 추가된 새 필드입니다.

인수:  

인수
인수 설명
input_expr

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

Window(Median(Salary)) as MedianSalary

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

Window(Salary,Department) as WSalary

 

선택적으로 입력 표현식을 사용하여 분할을 정의할 수 있습니다. 분할은 결과가 입력 테이블에 새 열로 추가된다는 점을 제외하면 group by 절을 통해 수행되는 그룹화와 동일합니다. 파티셔닝은 입력 테이블의 레코드 수를 줄이지 않습니다. 여러 파티션 필드를 정의할 수 있습니다.

예: 

LOAD Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-6) as MAX_Sales_City_Last_6_Mos, Window(Avg(Sales), City, 'ASC', OrderDate, City = 'Portland')
+ AddMonths(OrderDate,-6) as Avg_Sales_Portland_Last_6_Mos, Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-12) as MAX_Sales_City_Last_12_Mos; LOAD City, Sales, OrderDate FROM [lib://:DataFiles/Sales Data.xlsx] (ooxml, embedded labels, table is [Sales Data]);

partition1, partition2

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

Window(Avg(Salary), Unit, Department, Country) as AvgSalary

위에서 파티션은 Unit, DepartmentCountry입니다.

파티션은 필수는 아니지만 필드를 적절하게 창 표시하는 데 필요합니다.

sort_type, [sort_expr]]

선택적으로 정렬 유형과 정렬 표현식을 지정합니다. sort_type은 두 값 중 하나를 가질 수 있습니다.

  • ASC: 오름차순 정렬.

  • DESC: 내림차순 정렬.

sort_type을 정의하는 경우 정렬 표현식을 정의해야 합니다. 파티션 내 행의 순서를 결정하는 표현식입니다.

예:

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

위 예에서 파티션 내의 결과는 Year 필드를 기준으로 오름차순으로 정렬됩니다.

정보 메모정렬 유형 및 정렬 표현식은 기본적으로 RecNoWRank 함수에만 필요합니다.
filter_expr

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

이 매개 변수는 완전히 생략할 수 있으며 결과적으로 필터가 없어야 합니다.

예:

Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)
as wAvgSalary) as wAvgSalaryIfEmpIs3or7
[start_expr,end_expr]

선택적으로 슬라이딩 윈도우 기능에 대한 인수를 설정합니다. 슬라이딩 윈도우에는 두 가지 인수가 필요합니다.

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

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

예를 들어, 앞의 3개 행, 현재 행, 다음 행을 포함하려는 경우:

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, -3, 1)
as WSalaryDepartment

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

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, UNBOUNDED(), 1)
as WSlidingSalaryDepartment

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

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, 3, UNBOUNDED())
as WSlidingSalaryDepartment

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

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

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

제한 사항

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

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

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

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

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

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

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

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

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

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