# Qlik GeoOperations를 사용한 스크립팅

Qlik GeoOperations 커넥터는 GeoOperations 스크립트를 자동으로 만들고 포맷합니다. 데이터 로드 편집기에서 이러한 스크립트를 수정할 수 있습니다. Qlik GeoOperations 커넥터를 사용하는 대신 GeoOperations 함수를 사용하여 수동으로 스크립팅할 수도 있습니다.

## Qlik GeoOperations 작동 방식

먼저 Qlik GeoOperations 커넥터를 데이터 소스로 추가합니다. 응용 프로그램의 데이터 로드 편집기에서 커넥터에서 로드할 데이터를 선택할 때 수행할 작업과 적용할 매개 변수를 선택할 수 있습니다. 그런 다음 Qlik GeoOperations 커넥터는 해당 GeoOperations 스크립트를 로드 스크립트에 추가합니다. 이 스크립트를 수동으로 추가할 수도 있습니다.

각 작업 스크립트는 데이터 사용을 선택하는 LOAD 문과 작업으로 구성됩니다. 이들은 로드 스크립트의 GeoOperations 확장으로 전송됩니다. 그런 다음 서버 측 확장은 데이터를 반환합니다. Qlik GeoOperations는 스크립트 언어에서 사용할 수 있는 GeoOperations라는 고급 분석 통합 개체를 만듭니다. 이는 스크립트와 테이블을 확장에 보내기 위한 ScriptEval 함수를 제공합니다.

예를 들어 다음은 이전에 로드된 MyPoints 테이블에 이동 영역 작업을 적용하고 여행 지역의 크기/비용에 대한 매개 변수를 지정하는 로드 스크립트입니다.

```
Load * Extension GeoOperations.ScriptEval('TravelAreas(costValue="10", costUnit="Minutes")', MyPoints);
```

스크립트는 ScriptEval에 첫 번째 매개 변수로 전송되고 테이블은 두 번째 매개변수로 전송됩니다.

GeoOperations는 데이터 집합에서 작동하는 함수입니다. 데이터 집합은 Qlik Sense에 로드된 데이터 또는 지리 파일 또는 위치 서비스와 같은 외부 소스에서 가져옵니다. 스크립트에서 보낸 데이터는 INTABLE이라는 데이터 집합으로 사용할 수 있습니다. 해당 데이터에 추가 매개 변수를 지정하려면 함수 호출 후에 DATASOURCE로 선언해야 합니다. 예:

```
Load * Extension GeoOperations.ScriptEval('TravelAreas(costValue="10", costUnit="Minutes")
DATASOURCE myPoints INTABLE pointField="Point"', MyPoints);
```

다른 데이터 소스는 항상 선언해야 하며 URL과 같은 매개 변수를 지정해야 합니다. 각 작업에서 사용할 데이터 소스를 지정할 수 있습니다. 기본적으로 작업은 [작업](https://help.qlik.com/en-US/geoanalytics/Content/Ref-GeoOperationsService/connector-geoanalytics_reference-Operation.htm) (영어로만 제공)의 각 작업에 대해 설명된 대로 사용 가능한 데이터 집합을 선택합니다.

## GeoOperations 필드 선택 및 이름 바꾸기

GeoOperations 함수는 필드를 반환합니다. 기본적으로 모든 필드가 반환되고 포함됩니다. 관심 있는 특정 필드를 선택하고 선택적으로 이름을 바꾸는 SELECT 문을 GeoOperations 함수 앞에 놓을 수 있습니다. 예를 들어, 이 스크립트는 SELECT를 사용하여 위치 서비스에서 우편 번호 필드 중 두 개만 로드합니다.

`Load * Extension GeoOperations.ScriptEval('` `SELECT Name as PostalCode, LocationArea FROM` `Load() DATASOURCE PostalCodes LOCATIONSERVICE type="PostalCode", country="se"');`` `

GeoOperations 스크립트에서 SELECT 문을 사용하는 것은 데이터가 GeoOperations 스크립트에서 선택되지 않은 경우 Qlik Sense에 로드되지 않으므로 Qlik LOAD 문에 필드를 지정하는 것보다 더 효율적일 수 있습니다.

SELECT는 결과에 반환하지 않도록 선택하여 일부 필드 계산을 방지하는 데 사용할 수 있습니다. 예를 들어, Intersects가 반환하는 상대 중첩 필드는 제외할 수 있습니다.

정보 메모

로드 스크립트에서 동일한 작업을 여러 번 사용하는 경우 SELECT 문을 사용하여 필드 이름을 바꿉니다.

## 스크립트 구문

GeoOperations로 보내는 스크립트의 구문은 다음과 같습니다.

### 1. 작업

가장 간단한 형태의 스크립트는 작업을 수행합니다.

구문:

`Operation(paramName="paramValue", ...)`

`Cluster(distance="100000")`` `

자세한 내용은 작업 및 해당 매개 변수 목록을 참조하십시오.

### 2. 데이터 집합

두 번째 단계는 적용할 선택한 작업에 대한 데이터 집합을 로드하는 것입니다.

구문:

`Operation(paramName="paramValue", ...)``DATASOURCE name TYPE paramName="paramvalue", ...`

`Within()``DATASOURCE states LOCATIONSERVICE type="STATE", country="US"`` `

자세한 내용은 데이터 집합 및 해당 매개 변수 목록을 참조하십시오.

### 3. 조립

완료된 스크립트는 데이터 로드 편집기에 다음과 같이 표시됩니다.

`[MyPointsInStates]:``Load * Extension GeoOperations.ScriptEval(’``Within()``DATASOURCE states LOCATIONSERVICE type=”STATE”, country=”US”``’, MyTable);`` `

이 예에서 MyTable은 점, 선, 명명된 영역 또는 기타 지리적 데이터를 포함하는 다른 로드된 테이블이 될 수 있습니다.

### 4. 필터 필드

다음 추가 사항을 통해 작업 결과를 추가로 필터링할 수 있습니다.

`[MyPointsInStates]:``Load * Extension GeoOperations.ScriptEval(’``SELECT Name, states.Name as State FROM``Within()``DATASOURCE states LOCATIONSERVICE type=”STATE”, country=”US”``’, MyTable{Name, Point});`

매개 변수 이름과 필드 이름은 대소문자를 구분하지만 작업, 매개 변수 옵션(예: `meters`, ` minutes,  `car 등) 또는 SELECT 및 FROM과 같은 키워드는 구분하지 않습니다.

## AddressPointLookup 및 PointToAddressLookup 스크립팅 문제 해결