# 从 GeoAnalytics 连接器 迁移到 Qlik GeoOperations

在 Qlik Cloud 中的 Qlik GeoOperations 提供和 GeoAnalytics 连接器 在 Qlik Sense Enterprise on Windows 中的相似的功能和操作。它们还支持许多相同的数据格式。它们有以下差异：

* Qlik GeoOperations 是一种高级分析集成 (AAI)，它比连接器更适合发送和处理数据。

* 高级分析集成的脚本语法与连接器的脚本语法不同。

* 一些 GeoOperations 也可用在图表表达式中。

* Qlik GeoOperations 返回单个表格。与 GeoAnalytics 连接器 返回的内容相比，表在 Qlik GeoOperations 中被联结。

* 在 Qlik GeoOperations 中，某些字段和参数已重命名，从而更加一致。

以下概述了如何将 GeoAnalytics 连接器 向导生成的脚本转换为 Qlik GeoOperations：

1. 在数据加载编辑器中于 GeoAnalytics 连接器 脚本代码内，将 `SQL` 之后直至第二个 SELECT 或 "`;`" 的所有内容复制，以先到者为准。

2. 将 `'` 脚本中的所有 GeoAnalytics 连接器 替换为 `"`。

3. 将 SELECT 脚本中次要 GeoAnalytics 连接器 语句中选定的字段名添加到 SELECT 脚本中的第一个 GeoOperations 语句中。省略已经存在的任何字段。将源表名添加到字段名中，并用句点分隔。例如，table.field。这将创建一个联结的表，而不是多个表。

4. 查看操作和数据集的参考文档，并根据需要调整任何参数或字段名称。

   [运算](https://help.qlik.com/zh-CN/cloud-services/Content/Ref-GeoOperationsService/connector-geoanalytics_reference-Operation.htm)

   [数据集](https://help.qlik.com/zh-CN/cloud-services/Content/Ref-GeoOperationsService/connector-geoanalytics_reference-Dataset.htm)

   有关主要差异的摘要，请参阅 [GeoOperations 和 GeoAnalytics 字段差异](https://help.qlik.com/zh-CN/migration/Content/Migration/migrate-geo-analytics.htm#GeoOperationsAndGeoAnalyticsFieldDifferences)

5. 将以下内容添加至 GeoOperations 脚本的开头：

   `Load * Extension GeoOperations.ScriptEval('`

6. 将以下内容添加至 GeoOperations 脚本的末尾：

   `');`

如果将加载的表与 GeoAnalytics 连接器 一起使用，请改为将其作为第二个参数发送给 `GeoOperations.ScriptEval`。

当 Qlik GeoOperations 返回联接表时，次要表只返回在主表中具有相应值的字段值。例如，如果要为某些点查找德国最近的机场，则只返回与这些点最近的机场相关的数据。如果您需要德国的所有机场，则需要使用 LOAD 操作单独加载机场。

如果使用连接器从 SQL 数据库加载数据，则应使用一个数据库连接器（如 ODBC 连接器）加载数据。确保将几何图形作为 WKT 加载（应用通常在 `st_asText()` 查询中名为 SQL 的函数）。然后通过将表发送到 WKT 来转换 Qlik GeoOperations 字段。然后，它将返回一个带有 Qlik Sense 格式几何体的字段。

## 示例脚本转换

此脚本转换示例将使用以下 GeoAnalytics 连接器 脚本：

```
/* Generated by GeoAnalytics for operation Cluster ---------------------- */
[ClusterAssociations]:
SQL SELECT [LocationDbId], [Clusters_ClusterID] FROM Cluster(distance='10000', points='Points')
DATASOURCE Points LOCATIONSERVICE geometry='POINT', type='XIATA', country='de', serviceName='default'
SELECT [Clusters_ClusterID], [Clusters_ClusterCenter] FROM Clusters;
[Clusters]:
SQL LOAD * FROM Clusters;
tag field [LocationDbId] with '$primarykey';
tag field [Clusters_ClusterID] with '$primarykey';
tag field [Clusters_ClusterCenter] with '$geopoint';
tag field [Clusters_ClusterID] with '$geoname';
tag field [Clusters_ClusterCenter] with '$relates_Clusters_ClusterID';
tag field [Clusters_ClusterID] with '$relates_Clusters_ClusterCenter';
/* End GeoAnalytics operation Cluster ----------------------------------- */
```

执行以下操作：

1. 取用 SQL 和第二个 SELECT 语句之间的脚本。

   ```
   SELECT [LocationDbId], [Clusters_ClusterID] FROM Cluster(distance='10000', points='Points')
   DATASOURCE Points LOCATIONSERVICE geometry='POINT', type='XIATA', country='de', serviceName='default'
   ```

2. 替换引号：

   ```
   SELECT [LocationDbId], [Clusters_ClusterID] FROM Cluster(distance="10000", points="Points")
   DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default"
   ```

3. 添加来自次要表的字段：

   ```
   SELECT [LocationDbId], [Clusters_ClusterID], [Clusters.Clusters_ClusterCenter] FROM Cluster(distance="10000", points="Points")
   DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default"
   ```

4. 调整参数和字段名称：

   SELECT [LocationDbId], [ClusterID], [Clusters.ClusterPoint] as [Clusters\_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default"

5. 在样板代码中附上：

   Load \* Extension GeoOperations.ScriptEval(' SELECT [LocationDbId], [ClusterID], [Clusters.ClusterPoint] as [Clusters\_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" ');

该脚本代码现在可结合 Qlik GeoOperations 使用。

## GeoOperations 和 GeoAnalytics 字段差异

GeoOperations 和 GeoAnalytics 脚本之间的默认字段存在差异，通常带有前缀。将 GeoAnalytics 脚本迁移到 GeoOperations 时，可能需要调整一些字段名。

AddressToPoint

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、Address、AddressPoint、CountryIso2、Adm1、城市、PostalCode、Street、HouseNumber、Match

* GeoAnalytics: [&lt;id&gt;]、[Dataset\_Address]、[Dataset\_Geometry]、[CountryIso2]、[Dataset\_Adm1]、[Dataset\_City]、[Dataset\_PostalCode]、[Dataset\_Street]、[Dataset\_HouseNumber]、[Dataset\_Match]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoAnalytics 字段具有数据集中的前缀。

* Dataset\_Geometry 称为 中的 AddressPoint GeoOperations。

分级

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、BinId、BinTable.BinPolygon、BinTable.CenterPoint

* GeoAnalytics: [&lt;id&gt;]、[RH2W3]、[RH2W3\_CenterPoint]

GeoAnalytics 和 GeoOperations 有以下差异：

* 在 GeoAnalytics 中，RH2W3 是多边形字段，其名称是基于网格大小/比例生成的。在 GeoOperations 中，字段为 BinTable.BinPolygon。

* GeoAnalytics 没有 BinId 字段。

最接近

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations：dataset\_dataset2\_RelationId、dataset.&lt;ds1 id&gt;、dataset2.&lt;ds2 id&gt;、Distance

* GeoAnalytics： [Dataset1\_Dataset2\_RelationId]， [Dataset1.&lt;ds1 id&gt;]， [Dataset2.&lt;ds2 id&gt;]， [Dataset1\_Dataset2\_Distance]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoOperations 没有 Distance 字段的前缀。

群集

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、ClusterID、Clusters.ClusterPoint、Clusters.PointCount

* GeoAnalytics: [&lt;id&gt;]、[Clusters\_ClusterID]、[Clusters\_ClusterCenter]、[Clusters\_PointCount]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoOperations 和 GeoAnalytics 之间的前缀不同。

解除

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、DissolvedPolygon

* GeoAnalytics: [&lt;id&gt;]、[&lt;id&gt;\_Geometry]

GeoAnalytics 和 GeoOperations 有以下差异：

* 几何列的名称

相交

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations：dataset\_dataset2\_RelationId、dataset.&lt;dataset1 id&gt;、dataset2.&lt;dataset2 id&gt;、dataset.RelativeOverlap、 dataset2.RelativeOverlap

* GeoAnalytics：[Dataset1\_Dataset2\_RelationKey]、[Dataset1.&lt;ds1 id&gt;]、[Dataset2.&lt;ds1 id&gt;]、[Dataset1\_RelativeOverlap]、[Dataset2\_RelativeOverlap]

GeoAnalytics 和 GeoOperations 有以下关键差异：

* GeoOperations 和 GeoAnalytics 之间的前缀不同。

IpLookup

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、 IpPoint、CountryIso2、Adm1Code、City

* GeoAnalytics: [&lt;id&gt;]、[IpTable\_Geometry]、[CountryIso2]、[IpTable\_Adm1Code]、[IpTable\_City]

GeoAnalytics 和 GeoOperations 有以下差异：

* 在 GeoAnalytics 中的 IpTable\_Geometry 为 GeoOperations 中的 IpPoint。

* GeoOperations 和 GeoAnalytics 之间的前缀不同。

加载（位置数据集）

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations（面积）：LocationDbId、LocationPolygon、Name、CountryIso2、Adm1Code、Adm2Code、LocationDbType

* GeoOperations（点）：LocationDbId、LocationPoint、Name、CountryIso2、Adm1Code、Adm2Code、LocationDbType

* GeoAnalytics：[LocationDbId]、[Dataset\_Geometry]、[Dataset\_Name]、[CountryIso2]、[Dataset\_Adm1Code]、[Dataset\_Adm2Code]、[LocationDbType]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoAnalytics 中的几何图形字段 (LocationPolygon 和 LocationPoint 为 GeoOperations 中的 Dataset\_Geometry。

* GeoOperations 和 GeoAnalytics 之间的前缀不同。

PointToAddress

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations：&lt;id&gt;、Address、AddressPoint、CountryIso2、Adm1、City、PostalCode、Street、HouseNumber、Distance

* GeoAnalytics: [&lt;id&gt;]、[Dataset\_Address]、[Dataset\_Geometry]、[CountryIso2]、[Dataset\_Adm1]、[Dataset\_City]、[Dataset\_PostalCode]、[Dataset\_Street]、[Dataset\_HouseNumber]、[Dataset\_Distance]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoOperations 和 GeoAnalytics 之间的前缀不同。

路线

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、Distance、Duration、Status、LowResLine

* GeoAnalytics: [&lt;id&gt;]、[Dataset\_Distance]、 [Dataset\_Duration]、[Dataset\_Status]、[Dataset\_PathLowRes]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoAnalytics 中的几何图形字段 Dataset\_PathLowRes 为 GeoOperations 中的 LowResLine。

* GeoOperations 和 GeoAnalytics 之间的前缀不同。

简化

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、Simplified\_&lt;geo field name&gt;

* GeoAnalytics: [&lt;id&gt;]、[Dataset\_Simplified\_Geometry]

.GeoAnalytics 和 GeoOperations 有以下区别：

* 几何图形字段的名称在 GeoOperations 和 GeoAnalytics 之间不同。

TravelAreas

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations: &lt;id&gt;、TravelArea、Cost、CostUnit、Status

* GeoAnalytics: [&lt;id&gt;]、[Dataset\_TravelArea]、[Dataset\_Origin]、[Dataset\_Cost]、[Dataset\_CostUnit]、[Dataset\_Status]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoOperations 不包括原点字段。

* GeoOperations 和 GeoAnalytics 之间的前缀不同。

之内

GeoOperations 和 GeoAnalytics 返回以下字段：

* GeoOperations：dataset\_dataset2\_RelationId、dataset.&lt;dataset1 id&gt;、dataset2.&lt;dataset2 id&gt;

* GeoAnalytics: [Enclosed\_Enclosing\_RelationId], [被包含方.&lt;dataset 1/2 id&gt;], [包含方.&lt;datasets 1/2 id&gt;]

GeoAnalytics 和 GeoOperations 有以下差异：

* GeoOperations 前缀包括数据集名称，同时 GeoAnalytics 还包括前缀 Enclosed。