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

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);FROM [lib://AttachedFiles/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]FROM [lib://AttachedFiles/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는 특히 메모리 소비 측면에서 리소스를 많이 소비하는 함수입니다.

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

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

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

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

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

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

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

분석 현대화 프로그램에 참여

Remove banner from view

분석 현대화 프로그램으로 귀중한 QlikView 앱을 손상시키지 않고 현대화하십시오. 여기를 클릭 하여 자세한 내용을 참조하거나 다음에 연결하십시오. ampquestions@qlik.com