<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article Splitting up GeoAnalytics connector operations in Official Support Articles</title>
    <link>https://community.qlik.com/t5/Official-Support-Articles/Splitting-up-GeoAnalytics-connector-operations/ta-p/1715346</link>
    <description>&lt;P&gt;Many of the GeoAnalytics can be executed with a split input of the indata table. This article explains which and how to modify the code that the connector produces. Operations that cannot be Splittable are mostly the aggregating and hence not Splittable. When loadable tables are used for input, inline tables are created in loops and can be used for a quick way to split. Of course it's possible to write custom code to do the splitting instead.&lt;/P&gt;
&lt;P&gt;Making calls with large indata tables often causes time outs on the server side, splitting is a way around that.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Environment:&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;LI-PRODUCT title="Qlik GeoAnalytics" id="qlikGeoAnalytics"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="width: 500px;" border="1"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH colspan="1" rowspan="1"&gt;Splittable ops&lt;/TH&gt;
&lt;TH colspan="1" rowspan="1"&gt;Non-Splittable ops&lt;/TH&gt;
&lt;TH colspan="1" rowspan="1"&gt;Special ops, splittable&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH colspan="1" rowspan="1"&gt;
&lt;UL&gt;
&lt;LI style="text-align: left;"&gt;AddressPointLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;Intersects&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;IpLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;NamedAreaLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;NamedPointLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;PointToAddressLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;Routes&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;TravelAreas&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;Within&lt;/LI&gt;
&lt;/UL&gt;
&lt;/TH&gt;
&lt;TD colspan="1" rowspan="1"&gt;
&lt;UL&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Closest&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Cluster&amp;nbsp;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Dissolve&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Load&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;IntersectsMost&amp;nbsp;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Simplify&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/TD&gt;
&lt;TD colspan="1" rowspan="1"&gt;
&lt;UL&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Binning&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;
&lt;P&gt;&lt;STRONG&gt;SpatialIndex&lt;/STRONG&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="SplittingupGeoAnalyticsconnectoroperations-BinningandSpatialIndex"&gt;Binning and SpatialIndex&lt;/H4&gt;
&lt;P&gt;Bining and SpatialIndex differs from other operations, they are not placing any call to the server if the indata are internal geometries, ie lat ,ong points. The operations als produce the same type of results so the resulting tables can be concatenated.&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="qlik-migrated-tkb-headings"&gt;Resolution:&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="SplittingupGeoAnalyticsconnectoroperations-Example,aWithinoperation"&gt;Example, a Within operation&lt;/H4&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Beforetheedit"&gt;Before the edit&lt;/H5&gt;
&lt;P&gt;The code as the connector produces it:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by Idevio GeoAnalytics for operation Within ---------------------- */
Let [EnclosedInlineTable] = 'POSTCODE' &amp;amp; Chr(9) &amp;amp; 'Postal.Latitude' &amp;amp; Chr(9) &amp;amp; 'Postal.Longitude';
Let numRows = NoOfRows('PostalData');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'POSTCODE', 'Postal.Latitude', 'Postal.Longitude'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'PostalData'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
   [EnclosedInlineTable] = [EnclosedInlineTable] &amp;amp; chunkText;
Next
chunkText=''


Let [EnclosingInlineTable] = 'ClubCode' &amp;amp; Chr(9) &amp;amp; 'Car5mins_TravelArea';
Let numRows = NoOfRows('TravelAreas5');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'ClubCode', 'Car5mins_TravelArea'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'TravelAreas5'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
[EnclosingInlineTable] = [EnclosingInlineTable] &amp;amp; chunkText;
Next
chunkText=''


[WithinAssociations]:
SQL SELECT [POSTCODE], [ClubCode] FROM Within(enclosed='Enclosed', enclosing='Enclosing')
DATASOURCE Enclosed INLINE tableName='PostalData', tableFields='POSTCODE,Postal.Latitude,Postal.Longitude', geometryType='POINTLATLON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosedInlineTable)}
DATASOURCE Enclosing INLINE tableName='TravelAreas5', tableFields='ClubCode,Car5mins_TravelArea', geometryType='POLYGON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosingInlineTable)}
SELECT [POSTCODE], [Enclosed_Geometry] FROM Enclosed
SELECT [ClubCode], [Car5mins_TravelArea] FROM Enclosing;
[EnclosedInlineTable] = '';
[EnclosingInlineTable] = '';

/* End Idevio GeoAnalytics operation Within ----------------------------------- */&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Afteredit"&gt;After edit&lt;/H5&gt;
&lt;P&gt;The header and the call is moved inside of the loop. chunkSize decides how big each split is.&lt;/P&gt;
&lt;P&gt;Note that the first inline table now comes after the first one, this to get the call inside of the iteration.&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by Idevio GeoAnalytics for operation Within ---------------------- */

Let [EnclosingInlineTable] = 'ClubCode' &amp;amp; Chr(9) &amp;amp; 'Car5mins_TravelArea';
Let numRows = NoOfRows('TravelAreas5');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'ClubCode', 'Car5mins_TravelArea'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'TravelAreas5'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
   [EnclosingInlineTable] = [EnclosingInlineTable] &amp;amp; chunkText;
Next
chunkText=''

Let numRows = NoOfRows('PostalData');

Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks

   Let [EnclosedInlineTable] = 'POSTCODE' &amp;amp; Chr(9) &amp;amp; 'Postal.Latitude' &amp;amp; Chr(9) &amp;amp; 'Postal.Longitude';

   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'POSTCODE', 'Postal.Latitude', 'Postal.Longitude'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'PostalData'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
   [EnclosedInlineTable] = [EnclosedInlineTable] &amp;amp; chunkText;

   [WithinAssociations]:
   SQL SELECT [POSTCODE], [ClubCode] FROM Within(enclosed='Enclosed', enclosing='Enclosing')
   DATASOURCE Enclosed INLINE tableName='PostalData', tableFields='POSTCODE,Postal.Latitude,Postal.Longitude', geometryType='POINTLATLON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosedInlineTable)}
   DATASOURCE Enclosing INLINE tableName='TravelAreas5', tableFields='ClubCode,Car5mins_TravelArea', geometryType='POLYGON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosingInlineTable)}
   SELECT [POSTCODE], [Enclosed_Geometry] FROM Enclosed
   SELECT [ClubCode], [Car5mins_TravelArea] FROM Enclosing;
   [EnclosedInlineTable] = '';
   [EnclosingInlineTable] = '';

Next
chunkText=''
/* End Idevio GeoAnalytics operation Within ----------------------------------- */&lt;/LI-CODE&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 id="SplittingupGeoAnalyticsconnectoroperations-Example,aAddressPointLookupoperation"&gt;Example, a AddressPointLookup operation&lt;/H4&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Beforetheedit.1"&gt;Before the edit&lt;/H5&gt;
&lt;P&gt;The code as the connector produces it:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by GeoAnalytics for operation AddressPointLookup ---------------------- */
Let [DatasetInlineTable] = 'id' &amp;amp; Chr(9) &amp;amp; 'STREET_NAME' &amp;amp; Chr(9) &amp;amp; 'STREET_NUMBER';
Let numRows = NoOfRows('data');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'id', 'STREET_NAME', 'STREET_NUMBER'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'data'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next 
   [DatasetInlineTable] = [DatasetInlineTable] &amp;amp; chunkText; 
Next
chunkText=''
[AddressPointLookupResult]:
SQL SELECT [id], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1Code], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Match] 
FROM AddressPointLookup(searchTextField='', country='"Canada"', stateField='', cityField='"Toronto"', postalCodeField='', streetField='STREET_NAME', houseNumberField='STREET_NUMBER', matchThreshold='0.5', service='default', dataset='Dataset')
DATASOURCE Dataset INLINE tableName='data', tableFields='id,STREET_NAME,STREET_NUMBER', geometryType='NONE', loadDistinct='NO', suffix='', crs='Auto' {$(DatasetInlineTable)}
;
[DatasetInlineTable] = '';
/* End GeoAnalytics operation AddressPointLookup ----------------------------------- */&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Afteredit.1"&gt;After edit&lt;/H5&gt;
&lt;P&gt;The header and the call is moved inside of the loop. chunkSize decides how big each split is.&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by GeoAnalytics for operation AddressPointLookup ---------------------- */
Let numRows = NoOfRows('data');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks

   Let [DatasetInlineTable] = 'id' &amp;amp; Chr(9) &amp;amp; 'STREET_NAME' &amp;amp; Chr(9) &amp;amp; 'STREET_NUMBER';

   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'id', 'STREET_NAME', 'STREET_NUMBER'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'data'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
     chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);

   Next 
   [DatasetInlineTable] = [DatasetInlineTable] &amp;amp; chunkText;

   [AddressPointLookupResult]:
   SQL SELECT [id], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1Code], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Match] 
   FROM AddressPointLookup(searchTextField='', country='"Canada"', stateField='', cityField='"Toronto"', postalCodeField='', streetField='STREET_NAME', houseNumberField='STREET_NUMBER', matchThreshold='0.5', service='default', dataset='Dataset')
   DATASOURCE Dataset INLINE tableName='data', tableFields='id,STREET_NAME,STREET_NUMBER', geometryType='NONE', loadDistinct='NO', suffix='', crs='Auto' {$(DatasetInlineTable)}
   ;
   [DatasetInlineTable] = '';

Next
chunkText=''
/* End GeoAnalytics operation AddressPointLookup ----------------------------------- */&lt;/LI-CODE&gt;
&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 01 Jul 2021 10:07:34 GMT</pubDate>
    <dc:creator>Sonja_Bauernfeind</dc:creator>
    <dc:date>2021-07-01T10:07:34Z</dc:date>
    <item>
      <title>Splitting up GeoAnalytics connector operations</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Splitting-up-GeoAnalytics-connector-operations/ta-p/1715346</link>
      <description>&lt;P&gt;Many of the GeoAnalytics can be executed with a split input of the indata table. This article explains which and how to modify the code that the connector produces. Operations that cannot be Splittable are mostly the aggregating and hence not Splittable. When loadable tables are used for input, inline tables are created in loops and can be used for a quick way to split. Of course it's possible to write custom code to do the splitting instead.&lt;/P&gt;
&lt;P&gt;Making calls with large indata tables often causes time outs on the server side, splitting is a way around that.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Environment:&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;LI-PRODUCT title="Qlik GeoAnalytics" id="qlikGeoAnalytics"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="width: 500px;" border="1"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH colspan="1" rowspan="1"&gt;Splittable ops&lt;/TH&gt;
&lt;TH colspan="1" rowspan="1"&gt;Non-Splittable ops&lt;/TH&gt;
&lt;TH colspan="1" rowspan="1"&gt;Special ops, splittable&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH colspan="1" rowspan="1"&gt;
&lt;UL&gt;
&lt;LI style="text-align: left;"&gt;AddressPointLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;Intersects&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;IpLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;NamedAreaLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;NamedPointLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;PointToAddressLookup&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;Routes&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;TravelAreas&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;Within&lt;/LI&gt;
&lt;/UL&gt;
&lt;/TH&gt;
&lt;TD colspan="1" rowspan="1"&gt;
&lt;UL&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Closest&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Cluster&amp;nbsp;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Dissolve&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Load&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;IntersectsMost&amp;nbsp;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Simplify&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/TD&gt;
&lt;TD colspan="1" rowspan="1"&gt;
&lt;UL&gt;
&lt;LI style="text-align: left;"&gt;&lt;STRONG&gt;Binning&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI style="text-align: left;"&gt;
&lt;P&gt;&lt;STRONG&gt;SpatialIndex&lt;/STRONG&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="SplittingupGeoAnalyticsconnectoroperations-BinningandSpatialIndex"&gt;Binning and SpatialIndex&lt;/H4&gt;
&lt;P&gt;Bining and SpatialIndex differs from other operations, they are not placing any call to the server if the indata are internal geometries, ie lat ,ong points. The operations als produce the same type of results so the resulting tables can be concatenated.&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="qlik-migrated-tkb-headings"&gt;Resolution:&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 id="SplittingupGeoAnalyticsconnectoroperations-Example,aWithinoperation"&gt;Example, a Within operation&lt;/H4&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Beforetheedit"&gt;Before the edit&lt;/H5&gt;
&lt;P&gt;The code as the connector produces it:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by Idevio GeoAnalytics for operation Within ---------------------- */
Let [EnclosedInlineTable] = 'POSTCODE' &amp;amp; Chr(9) &amp;amp; 'Postal.Latitude' &amp;amp; Chr(9) &amp;amp; 'Postal.Longitude';
Let numRows = NoOfRows('PostalData');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'POSTCODE', 'Postal.Latitude', 'Postal.Longitude'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'PostalData'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
   [EnclosedInlineTable] = [EnclosedInlineTable] &amp;amp; chunkText;
Next
chunkText=''


Let [EnclosingInlineTable] = 'ClubCode' &amp;amp; Chr(9) &amp;amp; 'Car5mins_TravelArea';
Let numRows = NoOfRows('TravelAreas5');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'ClubCode', 'Car5mins_TravelArea'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'TravelAreas5'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
[EnclosingInlineTable] = [EnclosingInlineTable] &amp;amp; chunkText;
Next
chunkText=''


[WithinAssociations]:
SQL SELECT [POSTCODE], [ClubCode] FROM Within(enclosed='Enclosed', enclosing='Enclosing')
DATASOURCE Enclosed INLINE tableName='PostalData', tableFields='POSTCODE,Postal.Latitude,Postal.Longitude', geometryType='POINTLATLON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosedInlineTable)}
DATASOURCE Enclosing INLINE tableName='TravelAreas5', tableFields='ClubCode,Car5mins_TravelArea', geometryType='POLYGON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosingInlineTable)}
SELECT [POSTCODE], [Enclosed_Geometry] FROM Enclosed
SELECT [ClubCode], [Car5mins_TravelArea] FROM Enclosing;
[EnclosedInlineTable] = '';
[EnclosingInlineTable] = '';

/* End Idevio GeoAnalytics operation Within ----------------------------------- */&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Afteredit"&gt;After edit&lt;/H5&gt;
&lt;P&gt;The header and the call is moved inside of the loop. chunkSize decides how big each split is.&lt;/P&gt;
&lt;P&gt;Note that the first inline table now comes after the first one, this to get the call inside of the iteration.&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by Idevio GeoAnalytics for operation Within ---------------------- */

Let [EnclosingInlineTable] = 'ClubCode' &amp;amp; Chr(9) &amp;amp; 'Car5mins_TravelArea';
Let numRows = NoOfRows('TravelAreas5');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'ClubCode', 'Car5mins_TravelArea'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'TravelAreas5'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
   [EnclosingInlineTable] = [EnclosingInlineTable] &amp;amp; chunkText;
Next
chunkText=''

Let numRows = NoOfRows('PostalData');

Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks

   Let [EnclosedInlineTable] = 'POSTCODE' &amp;amp; Chr(9) &amp;amp; 'Postal.Latitude' &amp;amp; Chr(9) &amp;amp; 'Postal.Longitude';

   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'POSTCODE', 'Postal.Latitude', 'Postal.Longitude'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'PostalData'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next
   [EnclosedInlineTable] = [EnclosedInlineTable] &amp;amp; chunkText;

   [WithinAssociations]:
   SQL SELECT [POSTCODE], [ClubCode] FROM Within(enclosed='Enclosed', enclosing='Enclosing')
   DATASOURCE Enclosed INLINE tableName='PostalData', tableFields='POSTCODE,Postal.Latitude,Postal.Longitude', geometryType='POINTLATLON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosedInlineTable)}
   DATASOURCE Enclosing INLINE tableName='TravelAreas5', tableFields='ClubCode,Car5mins_TravelArea', geometryType='POLYGON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosingInlineTable)}
   SELECT [POSTCODE], [Enclosed_Geometry] FROM Enclosed
   SELECT [ClubCode], [Car5mins_TravelArea] FROM Enclosing;
   [EnclosedInlineTable] = '';
   [EnclosingInlineTable] = '';

Next
chunkText=''
/* End Idevio GeoAnalytics operation Within ----------------------------------- */&lt;/LI-CODE&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4 id="SplittingupGeoAnalyticsconnectoroperations-Example,aAddressPointLookupoperation"&gt;Example, a AddressPointLookup operation&lt;/H4&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Beforetheedit.1"&gt;Before the edit&lt;/H5&gt;
&lt;P&gt;The code as the connector produces it:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by GeoAnalytics for operation AddressPointLookup ---------------------- */
Let [DatasetInlineTable] = 'id' &amp;amp; Chr(9) &amp;amp; 'STREET_NAME' &amp;amp; Chr(9) &amp;amp; 'STREET_NUMBER';
Let numRows = NoOfRows('data');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'id', 'STREET_NAME', 'STREET_NUMBER'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'data'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
      chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);
   Next 
   [DatasetInlineTable] = [DatasetInlineTable] &amp;amp; chunkText; 
Next
chunkText=''
[AddressPointLookupResult]:
SQL SELECT [id], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1Code], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Match] 
FROM AddressPointLookup(searchTextField='', country='"Canada"', stateField='', cityField='"Toronto"', postalCodeField='', streetField='STREET_NAME', houseNumberField='STREET_NUMBER', matchThreshold='0.5', service='default', dataset='Dataset')
DATASOURCE Dataset INLINE tableName='data', tableFields='id,STREET_NAME,STREET_NUMBER', geometryType='NONE', loadDistinct='NO', suffix='', crs='Auto' {$(DatasetInlineTable)}
;
[DatasetInlineTable] = '';
/* End GeoAnalytics operation AddressPointLookup ----------------------------------- */&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5 id="SplittingupGeoAnalyticsconnectoroperations-Afteredit.1"&gt;After edit&lt;/H5&gt;
&lt;P&gt;The header and the call is moved inside of the loop. chunkSize decides how big each split is.&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;/* Generated by GeoAnalytics for operation AddressPointLookup ---------------------- */
Let numRows = NoOfRows('data');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks

   Let [DatasetInlineTable] = 'id' &amp;amp; Chr(9) &amp;amp; 'STREET_NAME' &amp;amp; Chr(9) &amp;amp; 'STREET_NUMBER';

   Let chunkText = '';
   Let chunk = n*chunkSize;
   For i = 0 To chunkSize-1
      Let row = '';
      Let rowNr = chunk+i;
      Exit for when rowNr &amp;gt;= numRows;
      For Each f In 'id', 'STREET_NAME', 'STREET_NUMBER'
         row = row &amp;amp; Chr(9) &amp;amp; Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'data'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
      Next
     chunkText = chunkText &amp;amp; Chr(10) &amp;amp; Mid('$(row)', 2);

   Next 
   [DatasetInlineTable] = [DatasetInlineTable] &amp;amp; chunkText;

   [AddressPointLookupResult]:
   SQL SELECT [id], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1Code], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Match] 
   FROM AddressPointLookup(searchTextField='', country='"Canada"', stateField='', cityField='"Toronto"', postalCodeField='', streetField='STREET_NAME', houseNumberField='STREET_NUMBER', matchThreshold='0.5', service='default', dataset='Dataset')
   DATASOURCE Dataset INLINE tableName='data', tableFields='id,STREET_NAME,STREET_NUMBER', geometryType='NONE', loadDistinct='NO', suffix='', crs='Auto' {$(DatasetInlineTable)}
   ;
   [DatasetInlineTable] = '';

Next
chunkText=''
/* End GeoAnalytics operation AddressPointLookup ----------------------------------- */&lt;/LI-CODE&gt;
&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 01 Jul 2021 10:07:34 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Splitting-up-GeoAnalytics-connector-operations/ta-p/1715346</guid>
      <dc:creator>Sonja_Bauernfeind</dc:creator>
      <dc:date>2021-07-01T10:07:34Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting up GeoAnalytics connector operations</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Splitting-up-GeoAnalytics-connector-operations/tac-p/2438216#M13689</link>
      <description>&lt;P&gt;It would be very helpful if you could provide an example for operation Routes&lt;/P&gt;</description>
      <pubDate>Fri, 05 Apr 2024 07:36:03 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Splitting-up-GeoAnalytics-connector-operations/tac-p/2438216#M13689</guid>
      <dc:creator>Emir_Dz</dc:creator>
      <dc:date>2024-04-05T07:36:03Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting up GeoAnalytics connector operations</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Splitting-up-GeoAnalytics-connector-operations/tac-p/2450914#M13903</link>
      <description>&lt;P&gt;It would be helpful to have an example for every option that is splittable, especially seeing as official documentation is so poor.&lt;/P&gt;</description>
      <pubDate>Thu, 09 May 2024 18:24:54 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Splitting-up-GeoAnalytics-connector-operations/tac-p/2450914#M13903</guid>
      <dc:creator>Danica-Cortez</dc:creator>
      <dc:date>2024-05-09T18:24:54Z</dc:date>
    </item>
  </channel>
</rss>

