Gå till huvudinnehåll

Qlik Sense GeoOperations

Med Qlik Sense GeoOperations kan du använda geografiska beräkningar och funktioner som att beräkna rutter eller reseområden. Du kan även läsa in geografiska data från en mängd olika datakällor. Med Qlik Sense GeoOperations kan du lösa geografiska problem med dina data, som till exempel att:

  • avgöra hur många kunder som bor inom 15 minuters bilavstånd från en butik
  • länka GPS-positioner till platser, regioner eller vägnät
  • skapa anpassade säljområden från en lista med kommuner
  • hitta det närmaste sjukhuset för en lista med patienter.

GeoOperations-funktioner är tillgängliga som skriptkod både för dataladdningsskript och för visualiseringsuttryck. GeoOperations-funktioner kan var och en läsa in data implicit. GeoOperations-funktioner kan även användas för att omvandla geografiska data eller utföra beräkningar.

Anteckning om informationEtt exempel på hur du använder GeoOperations finns i artikeln GeoOperations-exempel.

Funktioner

  • Är tillgängliga i skriptspråket i Qlik Sense SaaS.

  • Extraherar rumsliga relationer så att de kan hanteras av Qlik.
  • Slår upp platser när data laddas (som ett alternativ till att slå upp dem i kartdiagrammet när det presenteras).
  • Aggregering av punkter i kluster eller bins.
  • Specificera platser som:
    • punkt-, linje- eller områdesgeometrier i samma format som QlikGeoAnalytics ochQlik Sense
    • Latitud- och longitudfält
    • Namngivna punkter eller områden.
  • Ladda geografiska data från ett urval format för indata.
  • Använda operationer på data som redan har laddats i Qlik.

Hur GeoOperations fungerar

Qlik Sense GeoOperations skickar skript och en tabell (valfritt) till GeoOperations-komplementet i laddningsskriptet. Sedan returnerar komplementet på serversidan data. GeoOperations gör ett avancerat analysintegreringsobjekt som heter GeoOperations tillgängligt i skriptspråket, som tillhandahåller funktionen ScriptEval som skickar skriptet och tabellen till komplementet. Så här ser till exempel laddningsskriptet som tillämpar operationen TravelAreas på den tidigare laddade tabellen MyPoints och specificerar parametrar för reseområdets storlek/kostnad ut:

Load * Extension GeoOperations.ScriptEval('TravelAreas(costValue="10", costUnit="Minutes")', MyPoints);

 

Skriptet skickas till ScriptEval som den första parametern, och tabellen som den andra.

GeoOperations är funktioner som används för datauppsättningar. Datauppsättningarna kommer antingen från data som har laddats i Qlik Sense eller från externa källor som geografiska filer eller platstjänsten. Data som skickas från skriptet är tillgängliga som en datauppsättning med namnet INTABLE. Om du vill specificera ytterligare parametrar för dessa data, måste du deklarera dem efter funktionsanropet som en DATASOURCE. Exempel:

Load * Extension GeoOperations.ScriptEval('TravelAreas(costValue="10", costUnit="Minutes")

DATASOURCE myPoints INTABLE pointField="Point"', MyPoints);

 

Andra datakällor måste alltid deklareras och parametrar som URL:er måste specificeras. I varje operation kan du specificera vilka datakällor som ska användas. Som standard plockar operationer upp de tillgängliga datauppsättningarna enligt beskrivningen för varje operation i Operation (endast på engelska).

Var GeoOperations kan användas

Alla operationer kan användas i dataladdningsskriptet. Vissa operationer kan användas i uttryck i diagramskript för kartor samt även för att möjliggöra dynamiska beräkningar. Operationen körs varje gång urvalet ändras. Data flyttas inte in i datamodellen när GeoOperations används i diagram, vilket förhindrar vidare analys av dessa data.

Välja GeoOperations-fält och ge dem nya namn

GeoOperations-funktioner returnerar fält. Som standard inkluderas och returneras alla delade fält. Du kan välja specifika fält du är intresserad av, och valfritt även byta namn på dem, genom att placera en SELECT-sats före GeoOperations-funktioner. Till exempel använder följande skript SELECT för att ladda endast två av postnummerfälten från platstjänsten:

Load * Extension GeoOperations.ScriptEval('

SELECT Name as PostalCode, LocationArea FROM

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

 

Att använda en SELECT-sats i GeoOperations-skriptet kan vara mer effektivt än att specificera fält i Qlik LOAD-satser, eftersom data inte laddas i Qlik Sense om de inte väljs i GeoOperations-skriptet.

Med SELECT kan du undvika att vissa fält beräknas, genom att välja att de inte ska returneras i resultaten. Du kan till exempel utesluta de relativa överlappningsfälten som returneras av Intersects.

Anteckning om information

Om du använder samma operation flera gånger i laddningsskriptet ger du fälten andra namn med en SELECT-sats.

Begränsningar

Följande begränsningar gäller för hur stora datauppsättningarna kan vara:

  • Maximalt antal rader: 50 000
  • Maximal storlek på datauppsättning i minnet: 150 MB
  • Maximalt antal rader med routing: 400
  • Maximalt antal rader med namnsökning: 20 000

Vissa operationer stöder strömning av data från Qlik Engine. Datamängden som strömmas från Qlik Engine kan vara större men gränsen för routing är oförändrad.

Skriptsyntax

Skriptkoden som kan skickas till GeoOperations har följande syntax:

1. Operation

Den enklaste formen av skript utför en operation.

Syntax:  

Operation(paramName="paramValue", ...)

Exempel:  

Cluster(distance="100000")

 

Mer information finns i listan över operationer och deras parametrar.

2. Datauppsättning

Det andra steget är att ladda en datauppsättning som den valda operationen eller operationerna ska tillämpas på.

Syntax:  

Operation(paramName="paramValue", ...)

DATASOURCE name TYPE paramName="paramvalue", ...

Exempel:  

Within()

DATASOURCE states LOCATIONSERVICE type="STATE", country="US"

 

Mer information finns i listan över datauppsättningar och deras parametrar.

3. Sätta ihop helheten

Så här skulle det slutförda skriptet se ut i Skriptredigeraren:

[MyPointsInStates]:

Load * Extension GeoOperations.ScriptEval(’

Within()

DATASOURCE states LOCATIONSERVICE type=”STATE”, country=”US”

’, MyTable);

 

I det här exemplet kan MyTable vara en annan inläst tabell som innehåller punkter, linjer, namngivna områden eller andra geografiska data.

4. Filtrera fält

Genom att använda följande tillägg kan du filtrera resultaten av operationen ytterligare.

[MyPointsInStates]:

Load * Extension GeoOperations.ScriptEval(’

SELECT Name, states.Name as State FROM

Within()

DATASOURCE states LOCATIONSERVICE type=”STATE”, country=”US”

’, MyTable{Name, Point});

Namn på parametrar och fält är skiftlägeskänsliga, men det är inte operationer, parameteralternativ (som meters, minutes, bil och så vidare) eller nyckelord som SELECT och FROM.