Uitbreiding met dollarteken met behulp van een variabele
In het load-script of een diagramuitdrukking kunt u een variabele in een uitbreiding met dollarteken gebruiken voor het volgende:
Verwijzen naar tekst
Verwijzen naar een numerieke waarde
Tekstvariabele
Als u een variabele gebruikt voor het vervangen van tekst in het script of in een uitdrukking, wordt de volgende syntaxis gebruikt:
$(variablename)
$(variablename) wordt uitgebreid tot de waarde in de variabele. Als variablename niet bestaat, is de uitbreiding de lege tekenreeks.
Voorbeelden: load-scripts met tekstvariabelen
Load-script
Laad de volgende gegevens als een inline-load in de editor voor laden van gegevens:
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;
Hoe u een variabele in variabeletoewijzingen uitbreidt.
Hoe u variabelen uitbreidt die zijn gecombineerd met tekstuele handelingen.
Dit is een handige instelling voor het maken van dynamische labels en algemene teksttekenreeksen die een variabele content combineren met statische strings.
Uitvoer
Maak de volgende tabel in Qlik Sense:
Tabel - Uitvoer van load-script
X
Y
Z
NewString
rood
blauw
rood blauw
rood blauw groen
Load-script
Laad de volgende gegevens als een inline-load in de editor voor laden van gegevens:
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 ];
Uitleg
De opdrachten Set en Let worden gebruikt om in het load-script waarden toe te wijzen aan variabelen. Het verschil tussen de twee is dat de opdracht Set een tekenreeks toewijst aan de variabele, terwijl de opdracht Let de inhoud van de tekenreeks beoordeelt alvorens de resulterende waarde aan de variabele toe te wijzen. De load-inline-tabel in dit voorbeeld wordt aangevuld met twee voorgaande load-opdrachten die worden gebruikt om verschillende beoordelingen te visualiseren van de variabele vEvaluate, als een teksttekenreeks en als de overeenkomstige uitdrukking.
Uitvoer
Maak de volgende tabel in Qlik Sense:
Tabel - Uitvoer van load-script
ID
String
Expression
Upper
1
abc
upper(String)
ABC
2
def
upper(String)
DEF
3
ghi
upper(String)
HIJ
4
jkl
upper(String)
JKL
Voorbeeld: diagramuitdrukking met tekstvariabele
Load-script
Laad de volgende gegevens als een inline-load in de editor voor laden van gegevens:
Open in een werkblad in bewerkingsmodus het dialoogvenster Variabelen van het venster Bedrijfsmiddelen.
Maak de volgende variabelen:
Variabele om te maken
Naam
Definitie
vSales
Sum(Sales)
vSales2014
Sum({<Year={2014}>}Sales)
vSales2015
Sum({<Year={2015}>} Sales)
vSalesAllYears
$(vSales2014) +$(vSales2015)
vSalesDifference
$(vSales2015)/$(vSales2014) - 1
Maak KPI-diagrammen om de uitbreidingen te zien.
Uitbreiding met numerieke variabelen
Voor uitbreiding met numerieke variabelen wordt de volgende syntaxis gebruikt:
(#variablename)
Voor de uitbreiding wordt altijd een geldige notatie met decimale punt gebruikt bij de numerieke waarde van de variabele, mogelijk met exponentiële notatie (voor zeer grote of kleine getallen). Als variablename niet bestaat of geen numerieke waarde bevat, wordt de naam in plaats daarvan uitgebreid tot 0 of NULL.
Voorbeelden: load-scripts met numerieke variabelen
Load-script
Laad de volgende gegevens als een inline-load in de editor voor laden van gegevens:
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');
Uitleg
Voor de #vVariable uitbreiding wordt altijd een geldige notatie met decimale punt gebruikt bij de numerieke waarde van de variabele. Dit is handig als in plaats van een punt een komma wordt gebruikt als scheidingsteken voor decimalen en het risico bestaat van een conflict met kommagescheiden lijsten.
De belangrijkste reden voor het uitbreiden van deze variabelen in een load-inline-tabel is dat geen aanvullende quoting van $(X) is vereist.
Uitvoer
Maak de volgende tabel in Qlik Sense:
Tabel - Uitvoer van load-script
DecimalComma
DecimalPoint
3,5
3.5
Load-script
Laad de volgende gegevens als een inline-load in de editor voor laden van gegevens:
// 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');
Uitleg
Voor de #vVariable uitbreiding wordt altijd een geldige notatie met decimale punt gebruikt bij de numerieke waarde van de variabele. Dit is handig als in plaats van een punt een komma wordt gebruikt als scheidingsteken voor decimalen en het risico bestaat van een conflict met kommagescheiden lijsten. Ook moet worden opgemerkt dat de numerieke precisie wordt beïnvloed doordat het decimale deel wordt afgekapt als variabelen worden uitgebreid zonder correct scheidingsteken voor decimalen.
De belangrijkste reden voor het uitbreiden van deze variabelen in een load-inline-tabel is dat geen aanvullende quoting van $(X) is vereist.
Uitvoer
Maak de volgende tabel in Qlik Sense:
Tabel - Uitvoer van load-script
DecimalComma
DecimalPoint
FormattedNumber
44 470,00
44469.999305556
2021-09-18 23:59:00
Load-script
Laad de volgende gegevens als een inline-load in de editor voor laden van gegevens:
// 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
Uitleg
Voor de #vVariable uitbreiding wordt altijd een geldige notatie met decimale punt gebruikt bij de numerieke waarde van de variabele. Dit is handig als in plaats van een punt een komma wordt gebruikt als scheidingsteken voor decimalen en het risico bestaat van een conflict met kommagescheiden lijsten. Ook moet worden opgemerkt dat de numerieke precisie wordt beïnvloed doordat het decimale deel wordt afgekapt als variabelen worden uitgebreid zonder correct scheidingsteken voor decimalen.
De belangrijkste reden voor het uitbreiden van deze variabelen in een load-inline-tabel is dat geen aanvullende quoting van $(X) is vereist.
Uitvoer
Maak de volgende tabel in Qlik Sense:
Tabel - Uitvoer van load-script
StartTime
StopTime
2021-03-23 12:34:56
2021-03-23 15:34:56
Variabelen uitbreiden die verwijzen naar alternatieve states
De variabele heeft slechts één waarde en deze wordt gebruikt in alle alternatieve states. Als u een variabele uitbreidt dan blijft de waarde hetzelfde, ongeacht waar deze is gemaakt en wat de state van het object is.
Als de variabele een berekende variabele is, de definitie begint met hetzelfde teken, wordt de berekening in de standaardstate uitgevoerd, tenzij u een alternatieve state in de definitie van de variabele opgeeft.
Als u bijvoorbeeld een state hebt met de naam MyState en een variabele met de naam vMyVar:
vMyvar: =only({MyState}MyField)
De definitie van de variabele inhoud, met een expliciete verwijzing naar de naam van de alternatieve state, bepaalt in welke state de variabele inhoud wordt geëvalueerd.
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!