# Constrain

Satsen Constrain kan användas i kombination med satserna Let eller Set för att definiera variabler i skriptet. Med hjälp av Constrain-satsen kan du definiera begränsningar för möjliga värden för dessa variabler. Om en definition av en variabel bryter mot begränsningarna misslyckas inläsningen. Med begränsningar kan du kräva att värden för variabler ska matcha specifika typer, ligga inom specifika numeriska intervall och matcha acceptabla värden som du definierar.

Constrain variablename = json

Där:

* variablename är en skriptvariabel.

* json är ett giltigt JSON-objekt som specificerar begränsningarna. Individuella begränsningar läggs till i detta objekt som nyckel-värde-par.

Begränsningstyper

| Begränsningstyp (nyckel) | Betydelse | Begränsande krav (värde) | Exempel |
| --- | --- | --- | --- |
| `"type"` | Begränsa variabelvärden till en specifik datatyp. | `"text"` anger en texttyp.<br><br>`"number"` anger en numerisk typ. | ```<br>CONSTRAIN vExampleText = {"type": "text"}<br>```<br><br>```<br>CONSTRAIN vExampleNumeric = {"type": "number"}<br>``` |
| `"maxnum"` | Ange ett maxvärde för en variabel. | Endast siffror (heltal eller flyttal). Vetenskaplig notation är tillåten. | ```<br>CONSTRAIN vExample = {"maxnum": 5000}<br>``` |
| `"minnum"` | Ange ett minvärde för en variabel. | Endast siffror (heltal eller flyttal). Vetenskaplig notation är tillåten. | ```<br>CONSTRAIN vExample = {"minnum": 250}<br>``` |
| `"valuesnum"` | Definiera en lista över acceptabla numeriska värden för variabeln. | Kommaseparerad lista med siffror inom hakparenteser. Till exempel: `[1,2,3]` | ```<br>CONSTRAIN vExample = {"valuesnum": [1,2,3]}<br>``` |
| `"valuestext"` | Definiera en lista över acceptabla textvärden för variabeln. | Kommaseparerad lista med strängar inom hakparenteser. Till exempel: `["a","b","c"]` | ```<br>CONSTRAIN vExample = {"valuestext": ["Department A", "Department B", "Department C"]}<br>``` |

## När du ska använda en Constrain sats

Använd Constrain-satsen för att förhindra att oönskade variabelvärden laddas in i analysapplikationer.

## Överväganden

* Definitionen Constrain för variabeln måste vara ett giltigt JSON-objekt.

* Du kan ange mer än en begränsning för en och samma variabel. Alla begränsningar för en variabel måste behållas inom ett enda objekt för begränsningar. Se [Exempel – Flera begränsningar](https://help.qlik.com/sv-SE/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#Examples) för exempel.

* Om du redan har läst in en skriptvariabel med ett visst namn i applikationen kan framtida försök att definiera begränsningar och värden för den variabeln misslyckas på grund av konflikter mellan de ursprungliga och de omdefinierade variablerna.

  För att lösa dessa konflikter, återställ begränsningarna och värdena för variablerna genom att infoga tomma definitioner. Exempel:

  ```
  CONSTRAIN x;
  LET x;
  ```

  ```
  CONSTRAIN x;
  SET x;
  ```

  Du kan sedan omdefiniera variabeln och dess begränsningar i efterföljande delavsnitt i laddningsskriptet. Se [Exempel – lösning av konflikter vid definition av variabler](https://help.qlik.com/sv-SE/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#ConflictResolve) för ett utförligt exempel.

* Ordningen på definitionen av variabeln och definitionen av begränsningen spelar ingen roll. Vid ett variabelrelaterat inläsningsfel kommer dock linjen vid vilken brytpunkten inträffar att vara annorlunda.

* Constrain-skriptet begränsar endast variabeldefinitioner för skriptvariabler. Du kan också tillämpa begränsningar på skript- och slutanvändarvariabler (de som skapas eller uppdateras i arkvyn eller som sessionsvariabler med hjälp av API:et) genom att använda det publika API:et. Mer information finns i [Alternativ för utvecklare för att definiera begränsningar för variabler](https://help.qlik.com/sv-SE/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#Developer).

* Begränsningar valideras för att undvika scenarier som inte kan matcha något värde för variabeln. Exempel på ogiltiga begränsningar:

  * {"minnum": 5000, "maxnum": 4}
  * {"type": "text", "maxnum": 4}

## Alternativ för utvecklare för att definiera begränsningar för variabler

Du kan också använda det publika API:et för att definiera variabelbegränsningar i stället för att använda Constrain-satsen i laddningsskriptet. När du definierar begränsningar via API, kommer alla försök att uppdatera variabelvärden – oavsett om det sker direkt i laddningsskriptet eller i arkvyn – att omfattas av begränsningarna.

Om du vill definiera begränsningar för variabler via det offentliga API:et, använder du GenericVariableConstraints egenskapen i API:et QlikEngine JSON: [GenericVariableProperties](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/EngineJSONAPI/Content/models-genericvariableproperties.htm) (endast på engelska).

## Exempel - type

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Kunde inte läsa in "typ"

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för a måste ha typen number.

* En LET-sats som definierar variabeln a.

Laddningsskript

```
CONSTRAIN a = {"type": "text"};
LET a = 1000;
```

Resultat

Ladda data.

Inläsningen misslyckas eftersom begränsningen kräver en texttyp för variabeln a. Definitionen av variabeln är ett tal.

Om man däremot anger en type av number i begränsningen kommer inläsningen att lyckas.

## Exempel - maxnum

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Kunde inte läsa in med "maxnum"

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för b kan ha ett maxvärde på 3000.

* En LET-sats som definierar variabeln b.

```
CONSTRAIN b = {"maxnum": "3000"};
LET b = 3001;
```

Resultat

Ladda data.

Inläsningen misslyckas eftersom begränsningen kräver ett maxvärde på 3000 för variabel b. Variabeldefinitionen utvärderas som 3001.

Om man däremot anger b som 2999 kommer inläsningen att lyckas.

## Exempel - minnum

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Kunde inte läsa in "minnum"

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att variabeldefinitionen för b kan ha ett minvärde på 3000.

* En LET-sats som definierar variabeln c.

```
CONSTRAIN c = {"minnum": "3000"};
LET c = 2999;
```

Resultat

Ladda data.

Inläsningen misslyckas eftersom begränsningen kräver ett minvärde på 3000 för variabel c. Variabeldefinitionen utvärderas som 2999.

Om man däremot anger c som 3000 kommer inläsningen att lyckas.

## Exempel - valuesnum

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Misslyckad omladdning med "valuesnum"

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att variabeldefinitionen för d måste vara numerisk och måste vara 2, 3 eller 4.

* En LET-sats som definierar variabeln d.

```
CONSTRAIN d = {"valuesnum": [2,3,4]};
LET d = 1;
```

Resultat

Ladda data.

Inläsningen misslyckas eftersom variabeln d utvärderas till 1, vilket inte finns med i listan över tre möjliga värden.

Om man däremot anger d som 2 kommer inläsningen att lyckas.

## Exempel - valuestext

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Kunde inte läsa in "värdetext"

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för e måste vara ett av följande textvärden:

  * Department A

  * Department B

  * Department C

* En SET-sats som definierar variabeln e.

```
CONSTRAIN e = {"valuestext": ["Department A", "Department B", "Department C"]};
SET e = Department D;
```

Resultat

Ladda data.

Inläsningen misslyckas eftersom variabeln e är Department D, vilket inte finns med i listan över tillåtna värden som definieras av begränsningen.

Om man däremot anger e som Department C kommer inläsningen att lyckas.

## Exempel – SET kontra LET

Dessa exempel visar skillnaderna mellan hur begränsningar tillämpas när SET eller LET används för att definiera variabler. I alla exempel används begränsningar som tillämpar ett type-krav, men dessa principer gäller generellt för alla typer av begränsningar.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Kunde inte läsa in med SET

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för f måste ha typen number.

* En SET-sats som definierar variabeln f.

Laddningsskript

```
CONSTRAIN f = {"type": "number"};
SET f = 500*2;
```

Resultat

Ladda data.

Inläsningen misslyckas eftersom begränsningen kräver en numerisk typ för variabeln f. Definitionen av variabeln innehåller ett numeriskt uttryck, men eftersom en SET-sats används utvärderas definitionen som text.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Kunde inte läsa in LET

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för g måste ha typen text.

* En LET-sats som definierar variabeln g.

Laddningsskript

```
CONSTRAIN g = {"type": "text"};
LET g = 500*2;
```

Ladda data.

Inläsningen misslyckas eftersom begränsningen kräver en texttyp för variabeln g. Definitionen av variabeln innehåller ett numeriskt uttryck och en LET-sats används vilket gör att definitionen utvärderas som text.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Lyckad inläsning med SET

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för h måste ha typen text.

* En SET-sats som definierar variabeln h.

Laddningsskript

```
CONSTRAIN h = {"type": "text"};
SET h = 500*2;
```

Ladda data.

Inläsningen lyckas. Inläsningen misslyckas eftersom begränsningen kräver en texttyp för variabeln h. Definitionen av variabeln innehåller ett numeriskt uttryck, men eftersom en SET-sats används utvärderas definitionen som text.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Lyckad inläsning med LET

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för i måste ha typen number.

* En LET-sats som definierar variabeln i.

Laddningsskript

```
CONSTRAIN i = {"type": "number"};
LET i = 500*2;
```

Ladda data.

Inläsningen lyckas. Begränsningen kräver en numerisk typ för variabeln i. Definitionen av variabeln innehåller ett numeriskt uttryck och en LET-sats används vilket gör att definitionen utvärderas som text.

## Exempel – Flera begränsningar

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Inställning av min- och maxvärden

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats för att ange att definitionen av variabeln för j måste vara mellan 1 och 5.

* En LET-sats som definierar variabeln j.

Laddningsskript

```
CONSTRAIN j = {"minnum": 1, "maxnum": 5};
LET j = 2;
```

Ladda data.

Inläsningen lyckas. Variabeln f utvärderas till 2, vilket ligger inom det acceptabla intervallet.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Accepterar både text och siffror från listor

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En Constrain-sats som gör att variabeln kan vara text eller numerisk, så länge det är ett av de acceptabla värdena.

* En LET-sats som definierar variabeln k.

Laddningsskript

```
CONSTRAIN k = {"valuestext": ["abc","def","ghi"], "valuesnum": [0,1,3,5]};
LET k = 'def';
```

Ladda data.

Inläsningen lyckas. Värdet för variabeln k finns i listan över godtagbara värden. På samma sätt skulle en angivelse av k som 3 resultera i en lyckad inläsning.

## Exempel – lösning av konflikter vid definition av variabler

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Laddningsskript och resultat

Översikt

Det här exemplet visar hur variabeldefinitionskonflikter kan uppstå när man lägger till begränsningar för en variabel som redan har definierats i applikationen från en tidigare inläsning.

Laddningsskript 1: ställa in en variabel för skriptet

Öppna Skriptredigeraren. Lägg till följande skript:

```
LET vConflictExample = 'Department C';
```

Ladda data. Inläsningen lyckades. Variabeln vConflictExample har skapats i applikationen som en skriptvariabel.

Laddningsskript 2: försöker definiera begränsning på variabel i tidigare laddningsskript

Ta bort laddningsskript 1. Lägg till följande skript:

```
CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;
```

Ladda data.

Inläsningen misslyckas med ett begränsningsfel, trots att den nya begränsningen och värdedefinitionen är kompatibla. Detta beror på att laddningsskript 1 redan har läst in variabeln i applikationen, med ett textvärde, och detta värde finns fortfarande kvar i applikationen. För att lösa det här problemet måste vi återställa variabelns begränsning och definition. Se laddningsskript 3.

Laddningsskript 3: återställning av definitioner av begränsningar och värden

Ta bort laddningsskript 2. Lägg till följande skript:

```
CONSTRAIN vConflictExample;
LET vConflictExample;

CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;

MockData:
LOAD 
* 
Inline [
id, date, amount
1, 05/30/2025, 23.56
];
```

Ladda data.

Inläsningen lyckas. Skriptet ovan kan delas upp i tre delar, var och en åtskild av tomma rader:

* Den första delen återställer begränsnings- och värdedefinitionen för vConflictExample. Detta tar bort definitionen som laddades in i applikationen med laddningsskript 1.

* Den andra delen återanvänder de nya begränsnings- och värdedefinitionerna som misslyckades i laddningsskript 2.

* Den tredje delen lägger till testdata så att vi kan öppna arkvyn och granska värdet på variabeln (se nedan).

Öppna arkvyn i redigeringsläge och öppna dialogrutan the Variabler icon. Vi kan se att variabeln vConflictExample har skapats.

Dialogrutan Variabler i arkvyn visar att konflikten med definitionen av variabeln för vConflictExample har lösts.

Dialogrutan Variabler i arkvyn visar att konflikten med definitionen av variabeln för vConflictExample har lösts.

Dialogrutan Variabler i arkvyn visar att konflikten med definitionen av variabeln för vConflictExamplevConflictExample har lösts. ![Variables dialog in sheet view showing that the script variable has successfully been created.](https://help.qlik.com/sv-SE/sense/May2026/Subsystems/Hub/Content/Resources/Images/ui_script-variable_constrain-conflict-resolved.png)

[Let](https://help.qlik.com/sv-SE/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Let.htm)

[Set](https://help.qlik.com/sv-SE/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Set.htm)

[Arbeta med variabler i Skriptredigeraren](https://help.qlik.com/sv-SE/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)