Gå till huvudinnehåll Gå till ytterligare innehåll

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.

Syntax:  

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.

"number" anger en numerisk typ.

CONSTRAIN vExampleText = {"type": "text"}
CONSTRAIN vExampleNumeric = {"type": "number"}
"maxnum" Ange ett maxvärde för en variabel. Endast siffror (heltal eller flyttal). Vetenskaplig notation är tillåten.
CONSTRAIN vExample = {"maxnum": 5000}
"minnum" Ange ett minvärde för en variabel. Endast siffror (heltal eller flyttal). Vetenskaplig notation är tillåten.
CONSTRAIN vExample = {"minnum": 250}
"valuesnum" Definiera en lista över acceptabla numeriska värden för variabeln. Kommaseparerad lista med siffror inom hakparenteser. Till exempel: [1,2,3]
CONSTRAIN vExample = {"valuesnum": [1,2,3]}
"valuestext" Definiera en lista över acceptabla textvärden för variabeln. Kommaseparerad lista med strängar inom hakparenteser. Till exempel: ["a","b","c"]
CONSTRAIN vExample = {"valuestext": ["Department A", "Department B", "Department C"]}

När man ska använda en Constrain-sats

Använd Constrain-satsen för att förhindra att oönskade variabelvärden laddas in i analysappar. I följande delavsnitt beskrivs specifika sätt på vilka du kan använda den.

Omladdningstid för variabeluppdatering

Constrain är särskilt användbart när det används i kombination med inläsningstid för variabeluppdatering. Med inläsningstid för variabeluppdateringkan du dynamiskt uppdatera variabler under inläsningar av appen med hjälp av egenskapen variables i API:t Reloads. Satsen Constrain förhindrar att skadliga eller felaktigt formaterade definitioner av variabler införlivas i analytiska inläsningar.

Inläsningstid för variabeluppdatering, tillsammans med Constrain-satsen, stöder följande användningsfall:

  • Appar med mallar som laddar data selektivt baserat på villkor som kund-ID eller namn (som kan skickas vid inläsningstid som variabler)

  • Central kontroll över appar som distribueras över flera Qlik Cloud-klientorganisationer

  • Migrering av variabelorienterade arbetsflöden och uppgifter från QlikView och För klienthanterat Qlik Sense till molnet

Säkerhet, tillförlitlighet och samarbete

Även när Constrain används utanför scenarier för uppdatering av variabler vid inläsning förbättrar det säkerhetskontrollerna för författande av laddningsskript - till exempel under gemensam utveckling av laddningsskript. En appägare kan t.ex. definiera begränsningar för värden på variabler och informera medarbetare om specifika villkor som måste uppfyllas för att appen ska kunna läsas in på ett tillförlitligt sätt.

Ö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 för exempel.

  • Om du redan har läst in en skriptvariabel med ett visst namn i appen 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 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.

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, i arkvyn eller via API:et Reloads – att omfattas av begränsningarna.

Om du vill definiera begränsningar för variabler via det offentliga API:et använder du objektet GenericVariableConstraints i API:et Qlik Sense Engine (qix): GenericVariableConstraints.

Exempel – type

Exempel – maxnum

Exempel – minnum

Exempel – valuesnum

Exempel – valuestext

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.

Exempel – Flera begränsningar

Exempel – lösning av konflikter vid definition av variabler

Var den här sidan till hjälp för dig?

Om du stöter på några problem med den här sidan eller innehållet på den, t.ex. ett stavfel, ett saknat steg eller ett tekniskt fel – meddela oss!