# Window 스크립트 함수

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

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

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

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

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

Window 함수는 작업 중인 테이블의 LOAD 문에 포함되어야 하거나 상주 LOAD와 같이 테이블을 참조해야 합니다.예를 들어, [예 - 집계가 포함된 필드 추가](https://help.qlik.com/ko-KR/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm#Example2)를 참조하십시오.

이름은 생략할 수 있지만, 그렇게 하면 필드 이름이 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 (Window (main\_expr, [partition1, partition2, ...], [sort\_type, [sort\_expr],[filter\_expr], [start\_expr, end\_expr]]))

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

인수

| 인수 | 설명 |
| --- | --- |
| main\_expr | 함수에 의해 계산되고 반환되는 주요 입력 표현식입니다.Median(Salary)와 같은 집계 기반 표현식이어야 합니다.예:<br><br>Window(Median(Salary)) as MedianSalary<br><br>표현식은 집계가 적용되지 않은 필드 이름이 될 수도 있습니다.이 경우 Window는 해당 필드에 Only() 함수가 적용되는 것처럼 처리합니다.예:<br><br>Window(Salary) as WSalary<br><br>Window(Sum(Avg(Salary))) 또는 Window(Sum(Window(Salary)))와 같이 중첩된 집계나 중첩된 창 함수를 포함하는 표현식은 허용되지 않습니다. |
| partition1, partition2 | main\_expr 뒤에는 원하는 만큼의 파티션을 정의할 수 있습니다.파티션은 집계를 적용할 조합을 정의하는 필드입니다.예:<br><br>Window(Avg(Salary), Department) as AvgDepSalary<br><br>이는 각 부서의 평균 급여를 계산합니다.<br><br>여러 개의 파티션 매개 변수가 제공되는 경우, 집계는 고유한 파티션 필드 조합을 사용하여 각 행에 적용됩니다.예:<br><br>Window(Avg(Salary), Department, Country) as AvgDepSalaryPerCountry<br><br>이는 각 국가의 각 부서별 평균 급여를 계산합니다.스웨덴의 마케팅 부서와 캐나다의 마케팅 부서와 같이 서로 다른 국가에 중복된 부서가 있는 경우 서로 다른 파티션으로 처리됩니다.<br><br>파티셔닝은 group by 절에서 달성되는 그룹화와 유사합니다.하지만 파티셔닝은 입력 테이블에 비해 레코드 수를 줄이지 않습니다. |
| sort\_type, [sort\_expr] | 선택적으로 정렬 유형과 정렬 표현식을 지정합니다.이는 집계가 수행되는 순서를 정의합니다. sort\_type은 상수 문자열이며 다음 세 가지 값 중 하나가 있을 수 있습니다.<br><br><ul> <li> <p> <span>ASC</span>: 오름차순 정렬.</p> </li> <li> <p> <span>DESC</span>:&nbsp;내림차순 정렬.</p> </li> <li> <p>NONE</p> </li> </ul><br><br>sort\_type ASC 또는 DESC를 정의하는 경우 정렬 표현식을 정의해야 합니다.sort\_type NONE을 사용하면 정렬 표현식을 제공하면 안 됩니다.정렬 표현식은 파티션 내 행의 순서를 결정합니다.<br><br>예:<br><br>Window(RecNo(), Department, 'ASC', Year)<br><br>위의 예에서 파티션 내 집계는 Year 필드에 따라 오름차순으로 수행됩니다.<br><br>정렬 매개 변수는 슬라이딩 창이 테이블을 처리하는 순서에도 영향을 미칩니다.예를 보려면 [예 - 정렬된 슬라이딩 창이 있는 필드 추가](https://help.qlik.com/ko-KR/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm#Example3)를 참조하십시오. |
| filter\_expr | 선택적으로 필터 표현식을 추가합니다.이는 레코드를 계산에 포함할지 여부를 결정하는 부울 표현식입니다.<br><br><br>filter\_expr이 제공되면 정렬 유형을 포함해야 합니다.정렬 유형이 정의되지 않은 경우 인수는 필터 표현식이 아닌 파티션 매개 변수로 해석될 수 있습니다.filter\_expr 매개 변수는 완전히 생략할 수도 있고 사실적인 값을 포함할 수도 있습니다.두 경우 모두 필터가 사용되지 않으므로 행이 제외되지 않습니다.<br><br>예:<br><br>Window(avg(Salary), Department, 'ASC', Age, Country='US' Or Country='Canada') as AvgDepSalaryInUsOrCanada<br><br>위의 Window 문은 Country 필드가 미국 또는 캐나다가 아닌 모든 행을 필터링하여 집계에서 제외합니다.필터링된 행에 대한 출력 값은 여전히 존재하지만 다른 모든 출력 행과 마찬가지로 필터에서 제외되지 않은 행의 집계된 결과만 포함됩니다. |
| start\_expr,end\_expr | 선택적으로 슬라이딩 창 기능에 대한 인수를 설정합니다.이렇게 하면 집계할 행의 수가 더욱 제한됩니다.각 출력 행에는 현재 행의 앞과 뒤에 있는 여러 행의(집계된) 결과만 포함됩니다.슬라이딩 창에는 두 개의 인수(start\_expr,end\_expr)가 필요합니다.이러한 인수가 제공되면 정렬 유형을 건너뛰어서는 안 됩니다.그렇지 않으면 인수는 슬라이딩 창 대신 파티션 매개 변수로 해석될 수 있습니다.매개 변수 start\_expr,end\_expr은 다음으로 구성됩니다.<br><br><ul> <li> <p>표현식 시작:&nbsp;창에 포함할 현재 행 이전의 행 수입니다.</p> </li> <li> <p>표현식 끝:&nbsp;창에 포함할 현재 행 뒤의 행 수입니다.</p> </li> </ul><br><br>예를 들어, 앞의 3개 행, 현재 행, 다음 행을 포함하려면 다음과 같이 합니다.<br><br>Window(concat(Text(Salary),'-'), Department, 'NONE', 1, -3, 1) as WSlidingSalaryDepartment<br><br>모든 이전 행 또는 모든 후속 행을 표시하려면 Unbounded() 함수를 사용할 수 있습니다.예를 들어, 이전 행, 현재 행 및 다음 행을 모두 포함하려면 다음을 수행합니다.<br><br>Window(concat(Text(Salary),'-'), Department, 'NONE', 1, UNBOUNDED(), 1) as WSlidingSalaryDepartment<br><br>예를 들어, 현재 행의 세 번째 행과 모든 후속 행을 포함하려면 다음을 수행합니다.<br><br>Window(concat(Text(Salary),'-'), Department, 'NONE', 1, 3, UNBOUNDED()) as WSlidingSalaryDepartment<br><br>위의 예에서 정렬 유형 NONE은 스크립트가 파티션 인수와 정렬 유형 뒤에 오는 매개 변수를 구별할 수 있도록 제공됩니다. |

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

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm)

#### 예: 집계가 포함된 필드 추가

로드 스크립트

데이터 로드 편집기에서 새 탭을 만든 후 다음 데이터를 인라인 로드로 로드합니다. 결과를 보려면 Qlik Sense에서 아래 테이블을 만듭니다.

```
[Employees]:
Load 
	*,
	Window(avg(Salary), Department) as AvgDepSalary
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
]; 
```

결과

집계가 포함된 필드를 추가한 결과

| Name | Department | Salary | Age | Year | Country | AvgDepSalary |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 39 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 39 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 61 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 61 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 39 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 39 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 61 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 61 |

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

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm)

#### 예제: 특정 값으로 필터링된 집계를 포함하는 필드 추가

로드 스크립트

데이터 로드 편집기에서 새 탭을 만든 후 다음 데이터를 인라인 로드로 로드합니다. 결과를 보려면 Qlik Sense에서 아래 테이블을 만듭니다.

```
[Employees]:
Load 
*,
Window(avg(Salary), Department, 'NONE', Country = 'Sweden') as AvgDepSalarySweden
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
];
```

결과

특정 값으로 필터링된 집계가 포함된 ad 필드를 추가한 결과

| Name | Department | Salary | Age | Year | Country | AvgDepSalarySweden |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 44 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 44 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 55 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 55 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 44 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 44 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 55 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 55 |

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

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm)

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

로드 스크립트

데이터 로드 편집기에서 새 탭을 만든 후 다음 데이터를 인라인 로드로 로드합니다. 결과를 보려면 Qlik Sense에서 아래 테이블을 만듭니다.

```
[Employees]:
Load 
	*,
	Window(concat(Text(Salary),'-'), Department, 'NONE', -1, 1) as SlidingWindow
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
];
```

결과

특정 값으로 필터링된 집계가 포함된 ad 필드를 추가한 결과

| Name | Department | Salary | Age | Year | Country | SlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 11-22 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 11-22-55 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 33-44 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 33-44-77 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 22-55-66 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 55-66 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 44-77-88 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 77-88 |

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

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm)

#### 예제: 슬라이딩 윈도우를 사용한 필드 추가

로드 스크립트

데이터 로드 편집기에서 새 탭을 만든 후 다음 데이터를 인라인 로드로 로드합니다. 결과를 보려면 Qlik Sense에서 아래 테이블을 만듭니다.

```
[Employees]:
Load 
	*,
	Window(concat(Text(Salary),'-'), Department, 'ASC', Age, -1, 1) as SortedSlidingWindow
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
];
```

결과

특정 값으로 필터링된 집계가 포함된 ad 필드를 추가한 결과

| Name | Department | Salary | Age | Year | Country | SortedSlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 11-55-66 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 22-66 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 33-77-88 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 44-77 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 11-55 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 11-22-66 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 33-44-77 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 33-88 |

슬라이딩 창에서 파티션과 정렬 순서가 집계에 어떤 영향을 미치는지 더 잘 이해하려면 테이블을 이름별로 오름차순으로 정렬합니다.

특정 값으로 필터링된 집계가 포함된 광고 필드를 추가한 결과

| Name | Department | Salary | Age | Year | Country | SortedSlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| Anna | Sales | 55 | 33 | 2023 | Canada | 11-55 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 33-88 |
| David | Sales | 11 | 32 | 2019 | Canada | 11-55-66 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 11-22-66 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 33-77-88 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 33-44-77 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 44-77 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 22-66 |

Johan 행에서 집계에는 David와 Sara의 급여 값이 포함되었습니다.이는 이름별로 정렬했을 때 Sales 부서 파티션 내의 이전 행과 다음 행입니다.

어떤 행이 포함되는지 보여 주는 또 다른 예로, Windows 표현식을 Window(concat(Text(Salary),'-'), Department, 'ASC', Age, -1, 1)에서 Window(concat(Text(Name),'-'), Department, 'ASC', Age, -1, 1)로 변경하고 다시 로드합니다.아래 표의 SortedSlidingWindow 값은 Sales 파티션 내의 이전 행과 다음 행의 이름을 나타냅니다.

특정 값으로 필터링된 집계가 포함된 ad 필드를 추가한 결과

| Name | Department | Salary | Age | Year | Country | SortedSlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| Anna | Sales | 55 | 33 | 2023 | Canada | Anna-David |
| Bonnie | Marketing | 88 | 44 | 2023 | US | Bonnie-Nils |
| David | Sales | 11 | 32 | 2019 | Canada | Anna-David-Johan |
| Johan | Sales | 66 | 26 | 2025 | Sweden | David-Johan-Sara |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | Bonnie-Nils-Olle |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | Nils-Olle-Patrick |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | Olle-Patrick |
| Sara | Sales | 22 | 25 | 2022 | Sweden | Johan-Sara |

## 제한 사항

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

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

* Window은 Qlik Sense Mobile에서 지원하지 않습니다.

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

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

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

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

* Window은(는) where 절이 있는 load 문에서 사용할 수 없습니다.

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

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

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