Window - 스크립트 함수
Window()는 여러 행에서 계산을 수행하여 각 행에 대한 값을 개별적으로 생성합니다.
Window 함수를 사용하여 다음과 같은 작업을 수행할 수 있습니다.
행의 개별 숫자 값을 열 내의 평균, 최댓값 또는 최솟값과 비교합니다.
열 내에서 또는 전체 테이블 내에서 개별 값의 순위를 계산합니다.
Window 함수는 테이블의 레코드 수를 변경하지 않지만 집계, 관계 및 범위 함수와 유사한 작업을 수행할 수 있습니다.
Window 함수는 테이블에 추가하려면 작업 중인 테이블의 LOAD 문 내에 캐시가 있어야 합니다. 예:
Window은 반올림이나 기본 수치 연산과 같은 일반 함수를 지원합니다. 예:
Window 함수에 대한 슬라이딩 창을 정의할 수 있습니다. 현재 행에 Window 함수를 적용할 때 사용되는 행 수를 설정합니다. 예를 들어, 창을 이전 3개 행과 이후 3개 행으로 설정할 수 있습니다.
구문:
반환 데이터 유형: 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, Department 및 Country입니다. 파티션은 필수는 아니지만 필드를 적절하게 창 표시하는 데 필요합니다. |
sort_type, [sort_expr]] | 선택적으로 정렬 유형과 정렬 표현식을 지정합니다. sort_type은 두 값 중 하나를 가질 수 있습니다.
sort_type을 정의하는 경우 정렬 표현식을 정의해야 합니다. 파티션 내 행의 순서를 결정하는 표현식입니다. 예: Window(RecNo(), Department, 'ASC', Year) 위 예에서 파티션 내의 결과는 Year 필드를 기준으로 오름차순으로 정렬됩니다. 정보 메모정렬 유형 및 정렬 표현식은 기본적으로 RecNo 및 WRank 함수에만 필요합니다. |
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) 모든 이전 행 또는 모든 후속 행을 표시하려면 Unbounded() 함수를 사용할 수 있습니다. 예를 들어, 이전 행, 현재 행 및 다음 행을 모두 포함하려면 다음을 수행합니다. Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, UNBOUNDED(), 1) 예를 들어, 현재 행의 세 번째 행과 이후의 모든 행을 포함하려면 다음을 수행합니다. Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, 3, UNBOUNDED()) |
예 - 집계가 포함된 필드 추가
예 - 특정 값으로 필터링된 집계가 포함된 필드 추가
예 - 슬라이딩 윈도우를 사용하여 필드 추가
제한 사항
Window 다음과 같은 제한 사항이 있습니다.
Window는 특히 메모리 소비 측면에서 리소스를 많이 사용하는 함수입니다.
Window은 Qlik Sense Mobile에서 지원하지 않습니다.
차트 표현식은 Window을 지원하지 않습니다.
다른 Window 함수 내에 Window 함수를 중첩할 수 없습니다.
Window는 집계 함수 내에서 사용할 수 없습니다.
Window는 전체 테이블을 검색할 수 있어야 합니다.
WRank(), RecNo() 및 RowNo()는 슬라이딩 창 기능을 사용할 때 Window와 함께 사용할 수 없습니다.