Qlik GeoOperations를 사용한 스크립팅
Qlik GeoOperations 커넥터는 GeoOperations 스크립트를 자동으로 만들고 포맷합니다. 데이터 로드 편집기에서 이러한 스크립트를 수정할 수 있습니다. Qlik GeoOperations 커넥터를 사용하는 대신 GeoOperations 함수를 사용하여 수동으로 스크립팅할 수도 있습니다.
Qlik GeoOperations 작동 방식
먼저 Qlik GeoOperations 커넥터를 데이터 소스로 추가합니다. 앱의 데이터 로드 편집기에서 커넥터에서 로드할 데이터를 선택할 때 수행할 작업과 적용할 매개 변수를 선택할 수 있습니다. 그런 다음 Qlik GeoOperations 커넥터는 해당 GeoOperations 스크립트를 로드 스크립트에 추가합니다. 이 스크립트를 수동으로 추가할 수도 있습니다.
각 작업 스크립트는 데이터 사용을 선택하는 LOAD 문과 작업으로 구성됩니다. 이들은 로드 스크립트의 GeoOperations 확장으로 전송됩니다. 그런 다음 서버 측 확장은 데이터를 반환합니다. Qlik GeoOperations는 스크립트 언어에서 사용할 수 있는 GeoOperations라는 고급 분석 통합 개체를 만듭니다. 이는 스크립트와 테이블을 확장에 보내기 위한 ScriptEval 함수를 제공합니다.
예를 들어 다음은 이전에 로드된 MyPoints 테이블에 이동 영역 작업을 적용하고 여행 지역의 크기/비용에 대한 매개 변수를 지정하는 로드 스크립트입니다.
스크립트는 ScriptEval에 첫 번째 매개 변수로 전송되고 테이블은 두 번째 매개변수로 전송됩니다.
GeoOperations는 데이터 집합에서 작동하는 함수입니다. 데이터 집합은 Qlik Sense에 로드된 데이터 또는 지리 파일 또는 위치 서비스와 같은 외부 소스에서 가져옵니다. 스크립트에서 보낸 데이터는 INTABLE이라는 데이터 집합으로 사용할 수 있습니다. 해당 데이터에 추가 매개 변수를 지정하려면 함수 호출 후에 DATASOURCE로 선언해야 합니다. 예:
다른 데이터 소스는 항상 선언해야 하며 URL과 같은 매개 변수를 지정해야 합니다. 각 작업에서 사용할 데이터 소스를 지정할 수 있습니다. 기본적으로 작업은 작업 (영어로만 제공)의 각 작업에 대해 설명된 대로 사용 가능한 데이터 집합을 선택합니다.
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과 같은 키워드는 구분하지 않습니다.