# Переход с Коннектор GeoAnalytics на Qlik GeoOperations

Qlik GeoOperations в Qlik Cloud предлагает функции и операции, аналогичные функциям Коннектор GeoAnalytics в Qlik Sense Enterprise on Windows. Они также поддерживают много одинаковых форматов данных. У них есть следующие различия.

* Qlik GeoOperations — это решение Advanced Analytics Integration (AAI), которое больше подходит для отправки и обработки данных, чем коннектор.

* Синтаксис скриптов для решения Advanced Analytics Integrations отличается от синтаксиса скриптов для коннекторов.

* Некоторые операции 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/ru-RU/cloud-services/Content/Ref-GeoOperationsService/connector-geoanalytics_reference-Operation.htm)

   [Набор данных](https://help.qlik.com/ru-RU/cloud-services/Content/Ref-GeoOperationsService/connector-geoanalytics_reference-Dataset.htm)

   Общие сведения о ключевых различиях см. в разделе [Различия полей GeoOperations и GeoAnalytics](https://help.qlik.com/ru-RU/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, City, 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.

Closest

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 имеют следующие различия:

* IpTable\_Geometry в GeoAnalytics соответствует IpPoint в GeoOperations.

* В GeoOperations и GeoAnalytics используются разные префиксы.

Load (набор данных локации)

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 имеют следующие различия:

* Поля геометрии LocationPolygon и LocationPoint в GeoAnalytics соответствуют Dataset\_Geometry в GeoOperations.

* В 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 используются разные префиксы.

Routes

GeoOperations и GeoAnalytics возвращают следующие поля:

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

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

GeoAnalytics и GeoOperations имеют следующие различия:

* Поле геометрии Dataset\_PathLowRes в GeoAnalytics соответствует LowResLine в GeoOperations.

* В GeoOperations и GeoAnalytics используются разные префиксы.

Simplify

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 используются разные префиксы.

Within

GeoOperations и GeoAnalytics возвращают следующие поля:

* GeoOperations: dataset\_dataset2\_RelationId, dataset.&lt;dataset1 id&gt;, dataset2.&lt;dataset2 id&gt;

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

GeoAnalytics и GeoOperations имеют следующие различия:

* Префиксы GeoOperations включают имена наборов данных, а в GeoAnalytics также используется префикс Enclosed.