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]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, 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를 지원하지 않습니다.
-
다른 Window 함수 내에 Window 함수를 중첩할 수 없습니다.
-
Window는 집계 함수 내에서 사용할 수 없습니다.
-
Window는 전체 테이블을 검색할 수 있어야 합니다.
-
WRank(), RecNo() 및 RowNo()는 슬라이딩 창 기능을 사용할 때 Window와 함께 사용할 수 없습니다.