以 Qlik GeoOperations 撰寫指令碼
Qlik GeoOperations 連接器為您建立並格式化 GeoOperations 指令碼。您可以在 資料載入編輯器 中修改這些指令碼。您也可以使用 GeoOperations 函數手動撰寫指令碼,而非使用 Qlik 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"');
相較於在 Qlik LOAD 陳述式中指定欄位,在 GeoOperations 指令碼中使用 SELECT 陳述式可以更有效率,因為若沒有在 GeoOperations 指令碼中選取,資料不會載入到 Qlik Sense 中。
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, 等) 或 SELECT 和 FROM 等關鍵字不區分大小寫。