# Dollarteckenexpansion med variabler

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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Exempel 1: laddningsskript

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 [Använda inline-laddningar för att ladda data](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

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 | blå | röd blå | röd grön blå |

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Exempel 2: laddningsskript

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 | övre(String) | ABC |
| 2 | def | övre(String) | DEF |
| 3 | ghi | övre(Sträng) | GHI |
| 4 | jkl | övre(Sträng) | JKL |

## Exempel: textvariabel för diagramuttryck

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Exempel: laddningsskript

Laddningsskript

Ladda följande data som en inline-laddning i Skriptredigeraren:

```
// Create table SalesByCountry
SalesByCountry:
Load * Inline [
Country, Year, Sales
Argentina, 2014, 66295.03
Argentina, 2015, 140037.89
Austria, 2014, 54166.09
Austria, 2015, 182739.87
Belgium, 2014, 182766.87
Belgium, 2015, 178042.33
Brazil, 2014, 174492.67
Brazil, 2015, 2104.22
Canada, 2014, 101801.33
Canada, 2015, 40288.25
Denmark, 2014, 45273.25
Denmark, 2015, 106938.41
Finland, 2014, 107565.55
Finland, 2015, 30583.44
France, 2014, 115644.26
France, 2015, 30696.98
Germany, 2014, 8775.18
Germany, 2015, 77185.68
];
```

Variabler

I ett ark i redigeringsläge öppnar du dialogrutan Variabler från panelen Resurser.

Öppna variabeldialogrutan

Öppna variabeldialogrutan

Öppna variabeldialogrutan ![KPI:er som använder set-modifierare.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_open_variable_dialog.png)

Skapa följande variabler:

Variabel som ska skapas

| Namn | Definition |
| --- | --- |
| vSales | Sum(Sales) |
| vSales2014 | Sum({&lt;Year={2014}&gt;}Sales) |
| vSales2015 | Sum({&lt;Year={2015}&gt;} Sales) |
| vSalesAllYears | $(vSales2014) +$(vSales2015) |
| vSalesDifference | $(vSales2015)/$(vSales2014) - 1 |

Variabler

Variabler

Variabler ![KPI:er som använder set-modifierare.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_variables_window_new.png)

Skapa KPI-diagram för att se expansionerna.

KPI:er som använder dollarteckenexpansioner

KPI:er som använder dollarteckenexpansioner

KPI:er som använder dollarteckenexpansioner ![KPI:er som använder dollarteckenexpansioner.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_kpis.png)

## 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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Exempel 1: laddningsskript

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 |

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Exempel 2: laddningsskript

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 |

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Exempel 3: laddningsskript

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.

## Interaktion mellan variabler och yttre set-uttryck

När du hänvisar till en variabel i en dollarteckenexpansion som också innehåller ett yttre set-uttryck gäller en särskild utvärderingsordning. Se [Variabelsökning](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/outer-set-expression-dollar-sign-expansion.htm#Variable) för mer information.

## Mer information

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

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

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