跳到主要内容

Qlik Sense GeoOperations

Qlik Sense GeoOperations 允许您进行地理计算和函数功能,例如计算路线或出行区域。它还能够从各种数据源加载地理数据。Qlik Sense GeoOperations 让您能够用自己的数据解决地理问题,例如:

  • 确定有多少客户居住于距离门店位置在 15 分钟车程以内
  • 将 GPS 位置与地点、地区或道路网络链接
  • 从城市列表构建自定义销售区域
  • 针对患者名单查找最近的医院

GeoOperations 函数可在脚本撰写中用于数据加载脚本和可视化表达式。GeoOperations 函数可以各自隐式加载数据。GeoOperations 函数还可用于转换地理数据或进行计算。

信息注释若需有关如何使用 GeoOperations 的示例,请参阅 GeoOperations 示例

特性

  • 可在 Qlik Sense SaaS 中的脚本语言中使用。

  • 提取空间关系,以便由 Qlik 进行处理。
  • 位置的加载时间查找(作为地图图表中演示时间查找的替代项)
  • 集群或 bin 中点的聚合。
  • 将位置指定为:
    • 格式和 QlikGeoAnalyticsQlik Sense 相同的点、线或区域几何体
    • 纬度和经度字段
    • 命名的点或区域
  • 通过一系列输入格式加载地理数据。
  • Qlik 中已经加载的数据使用操作。

GeoOperations 的工作方式

Qlik Sense GeoOperations 的工作方式是向加载脚本中的 GeoOperations 扩展发送脚本以及表格(可选)。然后服务器端扩展返回数据。GeoOperations 使得名为 "GeoOperations" 的高级分析集成对象可用在脚本语言中,其提供 ScriptEval 函数,用于将脚本和表格发送至扩展。例如,以下加载脚本用于将 TravelAreas 操作应用至之前加载的表格 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 的参数。在每次操作中,可以指定要使用的数据源。默认情况下,操作会按照操作 (仅提供英文版本)中每个操作的说明拾取可用数据集。

在何处使用 GeoOperations

所有操作都可用在数据加载脚本中。特定操作可用在地图的图表脚本中的表达式中,也可用于启用动态计算。每次选择项更改时,就会运行操作。当在图表中使用了 GeoOperations 时,数据不会进入数据模型,防止进一步分析数据。

选择和重命名 GeoOperations 字段

GeoOperations 函数返回字段。默认设置下,会返回并包含所有字段。您可在 GeoOperations 函数前面放置 SELECT 语句,来选择以及可选地重命名感兴趣的特定字段。例如,该脚本使用 SELECT 来从位置服务仅加载两个邮政编码字段:

Load * Extension GeoOperations.ScriptEval('

SELECT Name as PostalCode, LocationArea FROM

Load() DATASOURCE PostalCodes LOCATIONSERVICE type="PostalCode", country="se"');

 

GeoOperations 脚本中使用 SELECT 语句比在 Qlik LOAD 语句中指定字段更为有效,因为如果没有在 GeoOperations 脚本中选择数据,则不会将其加载到 Qlik Sense 中。

可使用 SELECT 选择不在结果中返回某些字段,来避免计算这些字段。例如,可排除由 Intersects 返回的相对重叠字段。

信息注释

如果您在加载脚本中使用同一操作多次,可使用 SELECT 语句重命名字段。

限制

有以下限制适用于数据集的最大大小:

  • 最大行数:50,000
  • 内存中的最大数据集大小:150 MB
  • 路由的最大行数:400
  • 名称查找的最大行数:20,000

一些操作支持来自 Qlik 引擎的数据流数据。从 Qlik 引擎串流的数据可能更大,但是路由的大小限制仍然适用。

脚本语法

可发送至 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});

参数名称和字段名称要区分大小写,但是操作、参数选项(例如 metersminutes, 等)或诸如 SELECTFROM 的关键词则不区分。