Arbeta med variabler i Skriptredigeraren

En variabel i Qlik Sense är en behållare som lagrar ett statiskt värde eller en beräkning, till exempel ett numeriskt eller ett alfanumeriskt värde. När du använder variabeln i appen kan alla förändringar som görs för variabeln tillämpas överallt där variabeln används. Du kan definiera variabler med hjälp av variabelöversikten eller i skript med hjälp av Skriptredigeraren. Du ställer in värdet för en variabel med Let eller Set uttalanden i dataladdningsskriptet.

Tips: Du kan även arbeta med Qlik Sense-variablerna från variabelöversikten när du redigerar ett ark. Använda variabler i uttryck

Översikt

Om det första tecknet i ett variabelvärde är ett likhetstecken ”=” kommer Qlik Sense att försöka utvärdera värdet som en formel (Qlik Sense-uttryck) och därefter visa eller returnera resultatet snarare än visa den faktiska formeln.

När variabeln används ersätts den av sitt värde. Variabler kan användas för dollarteckenexpansion eller i olika kontrollsatser i skriptet. Det är väldigt praktiskt om samma sträng förekommer flera gånger i skriptet, t.ex. en sökväg.

Vissa speciella systemvariabler ställs dock in av Qlik Sense i början av skriptexekveringen oavsett vilket värde de tidigare hade i layouten.

Definiera en variabel

När en variabel definieras används följande syntax:

set variablename = string

eller

let variable = expression

används. Kommandot Set tilldelar texten till höger om lika med-tecknet till variabeln, medan kommandot Let utvärderar uttrycket.

Variabler är skiftlägeskänsliga.

Observera: Det rekommenderas inte att du ger en variabel samma namn som ett fält eller en funktion i Qlik Sense.

Examples:  

set HidePrefix = $ ; // variabeln får tecknet "$" som värde.

let vToday = Num(Today()); // returnerar serienumret för dagens datum.

Ta bort en variabel

Om du tar bort en variabel från skriptet och laddar data igen stannar variabeln kvar i appen. Om du vill ta bort variabeln helt från appen måste du även ta bort variabeln från variabelöversikten.

Mer information finns i Ta bort en variabel.

Ladda ett variabelvärde som ett fältvärde

Om du vill ladda ett variabelvärde som ett fältvärde i en LOAD -sats och resultatet av dollarexpansionen är text i stället för tal eller ett uttryck måste du bifoga den utvidgade variabeln inom enkla citattecken.

Example:  

Detta exempel laddar systemvariablen som innehåller listan över skriptfel till en tabell. Lägg märke till att expansionen av ScriptErrorCount i If-satsen inte kräver citattecken, men att expansionen av ScriptErrorList kräver citattecken.

IF $(ScriptErrorCount) >= 1 THEN
LOAD '$(ScriptErrorList)' AS Error AutoGenerate 1; END IF

Beräkning med variabler

Det finns flera sätt att använda variabler med beräknade värden i Qlik Sense. Resultatet beror på hur du definierar den och hur du anropar den i ett uttryck.

I detta exempel läser vi in data inline:

LOAD * INLINE [ Dim, Sales A, 150 A, 200 B, 240 B, 230 C, 410 C, 330 ];

Nu ska vi definiera två variabler:

Let vSales = 'Sum(Sales)' ;
Let vSales2 = '=Sum(Sales)' ;

I den andra variabeln lägger vi till ett likhetstecken framför uttrycket. Nu beräknas variabeln innan den expanderas och innan uttrycket utvärderas.

Om du använder variabeln vSales som den är, exempelvis i ett mått, blir resultatet strängen Sum(Sales). Med andra ord görs ingen beräkning.

Om du lägger till en dollarteckenexpansion och anropar $(vSales) i uttrycket, expanderas variabeln, och summan av Sales visas.

Om du i stället anropar $(vSales2) beräknas variabeln innan den expanderas. Detta innebär att resultatet som visas är totalsumman för Sales. Skillnaden mellan att använda =$(vSales) och =$(vSales2) som måttuttryck visas i diagrammet nedan. Resultat:

Resultat
Dim $(vSales) $(vSales2)
A 350 1560
B 470 1560
C 740 1560

Som du ser resulterar $(vSales) i delsumman för ett dimensionsvärde, medan $(vSales2) resulterar i totalsumman.

Hjälpte den här informationen?

Tack för att du berättar det här. Är det något du vill säga om det här avsnittet?

Varför var informationen inte till hjälp och hur kan vi förbättra den?