Qlik GeoOperations を使用したスクリプト作成
Qlik GeoOperations コネクタは、GeoOperations スクリプトを作成してフォーマットします。これらのスクリプトは データ ロード エディター で変更できます。Qlik GeoOperations コネクタを使用する代わりに、GeoOperations 関数を使用して手動でスクリプトを作成することもできます。
Qlik GeoOperations の動作
最初に、Qlik GeoOperations コネクタをデータ ソースとして追加します。アプリの データ ロード エディター では、コネクタからロードするデータを選択するときに、実行する演算子と適用するパラメーターを選択できます。次に、Qlik GeoOperations コネクタは、対応する GeoOperations スクリプトをロード スクリプトに追加します。このスクリプトを手動で追加することもできます。
各演算子スクリプトは、使用するデータを選択する Load ステートメントと、演算子で構成されます。これらは、ロード スクリプトで GeoOperations 拡張に送信されます。次に、サーバー側の拡張機能はデータを返します。Qlik GeoOperations は、GeoOperations と呼ばれる Advanced Analytics Integration オブジェクトをスクリプト言語で使用できるようにします。これにより、スクリプトとテーブルを拡張に送信するための関数 ScriptEval が提供されます。
例えば、以下は、Travel areas 演算子を以前にロードされたテーブル MyPoints に適用し、移動領域のサイズ/コストのパラメーターを指定するためのロード スクリプトです。
スクリプトは最初のパラメーターとして ScriptEval に送信され、テーブルは 2 番目のパラメーターとして送信されます。
GeoOperations はデータセットを操作する関数です。データセットは、Qlik Sense にロードされたデータ、または地理ファイルやロケーション サービスなどの外部ソースから取得されます。スクリプトから送信されたデータは、INTABLE という名前のデータセットとして利用できます。そのデータに追加のパラメーターを指定する場合は、関数呼び出しの後に DATASOURCE として宣言する必要があります。例:
他のデータ ソースは常に宣言する必要があり、URL などのパラメーターを指定する必要があります。各演算子で、使用するデータ ソースを指定できます。演算 (英語のみ)で各演算について説明のとおり、既定では、演算は利用可能なデータセットを取得します。
GeoOperations 項目の選択と名前の変更
GeoOperations 関数は項目を返します。既定では、すべての項目が返され、含まれます。GeoOperations 関数の前に SELECT ステートメントを付けて、関心のある特定の項目を選択し、オプションで名前を変更することができます。例えば、このスクリプトは SELECT を使用して、ロケーション サービスから 2 つの郵便番号項目のみをロードします。
Load * Extension GeoOperations.ScriptEval('
SELECT Name as PostalCode, LocationArea FROM
Load() DATASOURCE PostalCodes LOCATIONSERVICE type="PostalCode", country="se"');
GeoOperations スクリプトでデータが選択されていない場合、データは Qlik Sense にロードされないため、GeoOperations スクリプトで SELECT ステートメントを使用すると、Qlik LOAD ステートメントで項目を指定するよりも効率的です。
SELECT を使用すると、結果に項目を返さないことを選択することで、一部の項目の計算を回避できます。例えば、Intersects によって返される相対的な重複項目を除外できます。
ロード スクリプトで同じ演算子を複数回使用している場合は、SELECT ステートメントを使用して項目の名前を変更します。
スクリプト構文
GeoOperations に送信されたスクリプトの構文は次のとおりです。
1. 演算
最も単純な形式のスクリプトは演算を実行します。
構文:
Operation(paramName="paramValue", ...)
Cluster(distance="100000")
詳細については、演算とそのパラメーターのリストを参照してください。
2. データセット
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 などのキーワードでは区別されません。