I laddningsskriptet eller ett diagramuttryck använder du en variabel i en dollarteckenexpansion till att:
Referera till text
Referera till ett numeriskt värde
Textvariabel
När en skriptvariabel används för att ersätta text inom skriptet eller inom en sats, används syntaxen
$(variablename)
$(variablename) expanderar till värdet i variabeln. Om variablename inte är angivet blir resultatet en tom sträng.
Exempel: Laddningsskript för textvariabel
Laddningsskript
Ladda följande data som en inline-laddning i Skriptredigeraren:
Set x = 'red'; // Assign the value "red" to variable x
Set y = 'blue'; // Assign the value "blue" to variable y
Set z = '$(x) $(y)'; // Expands x and y, returns "red blue" in variable z
// Expand x and y, return "red green blue" in variable MyString
Let MyString='$(x)'&' green '&'$(y)';
// Create table MyTable, load variable values for x, y, z into fields X, Y, Z
// Concatenate with variable MyString into field NewString
MyTable:
Load '$(x)' as X, '$(y)' as Y, '$(z)' as Z, '$(MyString)' as NewString autogenerate 1;
Mer information om hur du använder inline-laddningar finns i Inline-laddningar.
Förklaring
Det här exemplet visar:
Hur det går till att expandera en variabel i variabeltilldelningar.
Hur det går till att expandera variabler i kombination med textuella åtgärder.
Det här är en användbar konfiguration för att skapa dynamiska etiketter och generella textsträngar som kombinerar ett variabelt innehåll med statiska strängar.
Utdata
Skapa följande tabell i Qlik Sense:
Tabell – utdata från laddningsskriptet
X
Y
Z
NewString
röd
blue
röd blå
röd blå grön
Laddningsskript
Ladda följande data som en inline-laddning i Skriptredigeraren:
Set vFunction = 'upper'; // Assign the string “upper” to variable vFunction
Set vField = 'String'; // Assign the string "String" to variable vField
Let vEvaluate = '$(vFunction)'&'('&'$(vField)'&')';
// The variable vEvaluate returns the value "upper(string)"
MyTable: // Create table called MyTable
Load *, $(vEvaluate) as Upper; // vEvaluate expanded as a dynamic expression
Load *, '$(vEvaluate)' as Expression; // vEvaluate expanded as string
Load * inline [
ID, String
1, abc
2, def
3, ghi
4, jkl ];
Förklaring
Satserna Set och Let används för att tilldela värden till variabler i laddningsskriptet. Skillnaden mellan de två är att satsen Set tilldelar en sträng till variabeln, samtidigt som satsen Let utvärderar strängens innehåll innan det resulterande värdet tilldelas till variabeln. Load inline-tabellen i det här exemplet kompletteras med två föregående laddningssatser som används till att visualisera olika utvärderingar av variabeln vEvaluate både som en textsträng och som motsvarande uttryck.
Utdata
Skapa följande tabell i Qlik Sense:
Tabell – utdata från laddningsskriptet
ID
String
Expression
Upper
1
abc
upper(String)
ABC
2
def
upper(String)
DEF
3
ghi
upper(String)
HIJ
4
jkl
upper(String)
JKL
Exempel: Diagramuttryck för textvariabel
Laddningsskript
Ladda följande data som en inline-laddning i Skriptredigeraren:
I ett ark i redigeringsläge öppnar du dialogrutan Variabler från panelen Resurser.
Skapa följande variabler:
Variabel som ska skapas
Namn
Definition
vSales
Sum(Sales)
vSales2014
Sum({<Year={2014}>}Sales)
vSales2015
Sum({<Year={2015}>} Sales)
vSalesAllYears
$(vSales2014) +$(vSales2015)
vSalesDifference
$(vSales2015)/$(vSales2014) - 1
Skapa KPI-diagram för att se expansionerna.
Expansion av numerisk variabel
Om man vill använda en skriptvariabel för numerisk variabelexpansion används följande syntax:
(#variablename)
Expansionen resulterar alltid i ett giltigt decimal-kommatal som återspeglar variabelns talvärde, eventuellt med en exponentiell notation (för mycket stora eller små tal). Om variablename inte innehåller ett numeriskt värde eller saknas helt expanderas det till 0 istället för NULL.
Exempel: Laddningsskript för numerisk variabel
Laddningsskript
Ladda följande data som en inline-laddning i Skriptredigeraren:
Set DecimalSep = ','; // Set decimal comma as separator for this example.
Let X = 7/2; // Assign the expression 7/2 to variable X.
MyTable: // Create an inline table labeled “MyTable”
Load 1 as ID, * inline [
DecimalComma DecimalPoint
$(X) $(#X) ]
(delimiter is '\t');
Förklaring
Expansionen #vVariable resulterar alltid i ett giltigt decimal-kommatal som återspeglar variabelns talvärde. Det här är användbart när komma, snarare än punkt används som decimalavgränsare och det finns en risk för konflikt med kommaseparerade listor.
Huvudskälet till att expandera dessa variabler i en load-inline-tabell är att ingen ytterligare citatmarkering av $(X) krävs.
Utdata
Skapa följande tabell i Qlik Sense:
Tabell – utdata från laddningsskriptet
DecimalComma
DecimalPoint
3,5
3.5
Laddningsskript
Ladda följande data som en inline-laddning i Skriptredigeraren:
// The three Set statements below are required to mimic and initialize
// Format specifiers that are relevant to this particular example
Set ThousandSep=' '; // Set example thousand separator
Set DecimalSep=','; // Set example decimal separator
Set TimestampFormat='YYYY-MM-DD hh:mm:ss'; // Set example date format
Let vRaw = today()-1/1440; // Timestamp minus one minute
Let vFormat = timestamp($(#vRaw)); // Formatted as timestamp
// Create MyTable as an inline table to expand variables as field values
MyTable:
Load * inline [
DecimalComma DecimalPoint FormattedNumber
$(vRaw) $(#vRaw) $(vFormat) ] (delimiter is '\t');
Förklaring
Expansionen #vVariable resulterar alltid i ett giltigt decimal-kommatal som återspeglar variabelns talvärde. Det här är användbart när komma, snarare än punkt används som decimalavgränsare och det finns en risk för konflikt med kommaseparerade listor. Det är även viktigt att observera att den numeriska precisionen kommer att påverkas eftersom decimaldelen trunkeras när variabler expanderas utan rätt decimalavgränsare.
Huvudskälet till att expandera dessa variabler i en load-inline-tabell är att ingen ytterligare citatmarkering av $(X) krävs.
Utdata
Skapa följande tabell i Qlik Sense:
Tabell – utdata från laddningsskriptet
DecimalComma
DecimalPoint
FormattedNumber
44 470,00
44469.999305556
2021-09-18 23:59:00
Laddningsskript
Ladda följande data som en inline-laddning i Skriptredigeraren:
// The three Set statements below are required to mimic and initialize
// format specifiers that are relevant to this particular example
Set ThousandSep=' '; // Set example thousand separator
Set DecimalSep=','; // Set example decimal separator
Set TimestampFormat='YYYY-MM-DD hh:mm:ss'; // Set example date format
// Assign a numerical value and a valid format specifier to vStart
Let vStart = timestamp#('2021-03-23 12:34:56','$(TimestampFormat)');
// Calculate timestamp (vStart + 3 hours) with valid decimal separator: "."
Let vStop = timestamp($(#vStart)+1/8,'YYYY-MM-DD hh:mm:ss');
// Create MyTable as an inline table to expand variables as field values
MyTable:
Load * inline [
StartTime StopTime
$(vStart) $(vStop) ] (delimiter is '\t');
// This is a tab delimited inline table
// Tab delimited tables are useful for avoiding conflicting list separators
Förklaring
Expansionen #vVariable resulterar alltid i ett giltigt decimal-kommatal som återspeglar variabelns talvärde. Det här är användbart när komma, snarare än punkt används som decimalavgränsare och det finns en risk för konflikt med kommaseparerade listor. Det är även viktigt att observera att den numeriska precisionen kommer att påverkas eftersom decimaldelen trunkeras när variabler expanderas utan rätt decimalavgränsare.
Huvudskälet till att expandera dessa variabler i en load-inline-tabell är att ingen ytterligare citatmarkering av $(X) krävs.
Utdata
Skapa följande tabell i Qlik Sense:
Tabell – utdata från laddningsskriptet
StartTime
StopTime
2021-03-23 12:34:56
2021-03-23 15:34:56
Expandera variabler vid referens av parallella tillstånd
Variabeln har bara ett värde och detta används i alla parallella tillstånd. När du expanderar en variabel förändras inte värdet, oberoende av var förändringen sker och objektets tillstånd.
Om variabeln är beräknad, dvs. definitionen inleds med ett likhetstecken, sker beräkningen i standardtillståndet, om du inte specificerar ett parallellt tillstånd i variabeldefinitionen.
Om du till exempel har ett tillstånd med namnet MyState och en variabel med namnet vMyVar:
vMyvar: =only({MyState}MyField)
Variabeldefinitionens innehåll, med en explicit referens till det parallella tillståndets namn, avgör i vilket tillstånd variabelinnehållet kommer att utvärderas.
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!