Verwenden Sie in einem Ladeskript oder einer Diagrammformel eine Variable in einer Dollarzeichenerweiterung zu folgenden Zwecken:
Text referenzieren
Einen numerischen Wert referenzieren
Textvariable
Wenn Sie zum Ersetzen von Text im Skript oder in einer Formel eine Variable verwenden, lautet die Syntax:
$(variablename)
$(variablename) nimmt den Wert der Variablen an. Existiert variablename nicht, ergibt sich ein leerer String.
Beispiele: Textvariable – Ladeskripte
Ladeskript
Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor:
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;
Weitere Informationen über Inline-Ladevorgänge finden Sie unter Inline-Ladevorgänge.
Erläuterung
Dieses Beispiel zeigt:
Wie eine Variable in Variablenzuweisungen erweitert wird.
Wie Variablen kombiniert mit Textoperationen erweitert werden.
Dies ist ein nützliches Setup für die Erstellung von dynamischen Beschriftungen und allgemeinen Textzeichenfolgen, die variablen Inhalt mit statischen Zeichenfolgen kombinieren.
Ausgabe
Erstellen Sie die folgende Tabelle in Qlik Sense:
Tabelle – Ausgabe aus dem Ladeskript
X
Y
Z
NewString
rot
blue
rot-blau
rot-blau-grün
Ladeskript
Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor:
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 ];
Erläuterung
Die Befehle Set und Let werden verwendet, um Variablen im Ladeskript Werte zuzuweisen. Der Unterschied zwischen den beiden ist, dass der Set-Befehl eine Zeichenfolge zur Variablen zuweist, während der Let-Befehl den Inhalt der Zeichenfolge auswertet, bevor der Variablen der Ergebniswert zugewiesen wird. Die Inline-Ladetabelle in diesem Beispiel wird durch zwei vorangestellte load-Anweisungen ergänzt, die dazu dienen, verschiedene Auswertungen der Variablen vEvaluate zu visualisieren, sowohl als Textzeichenfolge als auch als die zugehörige Formel.
Ausgabe
Erstellen Sie die folgende Tabelle in Qlik Sense:
Tabelle – Ausgabe aus dem Ladeskript
ID
String
Expression
Upper
1
abc
upper(String)
ABC
2
def
upper(String)
DEF
3
ghi
upper(String)
HIJ
4
jkl
upper(String)
JKL
Beispiel: Textvariable – Diagrammformel
Ladeskript
Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor:
Öffnen Sie auf einem Arbeitsblatt im Bearbeitungsmodus das Dialogfeld Variablen im Extras-Fenster.
Erstellen Sie die folgenden Variablen:
Zu erstellende Variable
Name
Definition
vSales
Sum(Sales)
vSales2014
Sum({<Year={2014}>}Sales)
vSales2015
Sum({<Year={2015}>} Sales)
vSalesAllYears
$(vSales2014) +$(vSales2015)
vSalesDifference
$(vSales2015)/$(vSales2014) - 1
Erstellen Sie KPI-Diagramme, um die Erweiterungen anzuzeigen.
Numerische Variablenerweiterung
Für numerische Variablen benutzen Sie folgende Syntax:
(#variablename)
Die Erweiterung liefert immer eine gültige Dezimalstellen-Repräsentation des numerischen Werts der Variable, u. U. in Exponentialschreibweise (bei sehr großen oder kleinen Zahlen). Sollte variablename nicht existieren oder keinen numerischen Wert enthalten, wird stattdessen auf 0 anstelle von NULL expandiert.
Beispiele: Numerische Variable – Ladeskripte
Ladeskript
Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor:
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');
Erläuterung
Die Erweiterung #vVariable liefert immer eine gültige Dezimalstellen-Repräsentation des numerischen Werts der Variablen. Das ist nützlich, wenn ein Komma anstelle eines Punktes als Dezimaltrennzeichen verwendet wird und die Gefahr eines Konflikts mit einer kommagetrennten Liste besteht.
Der Hauptgrund für die Erweiterung dieser Variablen in einer Inline-Ladetabelle besteht darin, dass keine zusätzlichen Anführungszeichen für $(X) erforderlich sind.
Ausgabe
Erstellen Sie die folgende Tabelle in Qlik Sense:
Tabelle – Ausgabe aus dem Ladeskript
DecimalComma
DecimalPoint
3,5
3.5
Ladeskript
Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor:
// 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');
Erläuterung
Die Erweiterung #vVariable liefert immer eine gültige Dezimalstellen-Repräsentation des numerischen Werts der Variablen. Das ist nützlich, wenn ein Komma anstelle eines Punktes als Dezimaltrennzeichen verwendet wird und die Gefahr eines Konflikts mit einer kommagetrennten Liste besteht. Es ist auch wichtig zu beachten, dass die numerische Präzision betroffen ist, da der Dezimalteil abgeschnitten wird, wenn Variablen ohne korrektes Dezimaltrennzeichen erweitert werden.
Der Hauptgrund für die Erweiterung dieser Variablen in einer Inline-Ladetabelle besteht darin, dass keine zusätzlichen Anführungszeichen für $(X) erforderlich sind.
Ausgabe
Erstellen Sie die folgende Tabelle in Qlik Sense:
Tabelle – Ausgabe aus dem Ladeskript
DecimalComma
DecimalPoint
FormattedNumber
44 470,00
44469.999305556
2021-09-18 23:59:00
Ladeskript
Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor:
// 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
Erläuterung
Die Erweiterung #vVariable liefert immer eine gültige Dezimalstellen-Repräsentation des numerischen Werts der Variablen. Das ist nützlich, wenn ein Komma anstelle eines Punktes als Dezimaltrennzeichen verwendet wird und die Gefahr eines Konflikts mit einer kommagetrennten Liste besteht. Es ist auch wichtig zu beachten, dass die numerische Präzision betroffen ist, da der Dezimalteil abgeschnitten wird, wenn Variablen ohne korrektes Dezimaltrennzeichen erweitert werden.
Der Hauptgrund für die Erweiterung dieser Variablen in einer Inline-Ladetabelle besteht darin, dass keine zusätzlichen Anführungszeichen für $(X) erforderlich sind.
Ausgabe
Erstellen Sie die folgende Tabelle in Qlik Sense:
Tabelle – Ausgabe aus dem Ladeskript
StartTime
StopTime
2021-03-23 12:34:56
2021-03-23 15:34:56
Erweitern von Variablen, die alternative Zustände referenzieren
Die Variable hat nur einen Wert, und dieser wird in allen alternativen Zuständen verwendet. Wenn Sie eine Variable erweitern, ist der Wert ebenfalls derselbe, unabhängig davon, wo er erstellt wird und in welchen Zustand sich das Objekt befindet.
Wenn die Variable eine berechnete Variable ist, wenn die Definition also mit einem Gleichheitszeichen beginnt, dann erfolgt die Berechnung im Standardzustand, es sei denn, Sie geben in der Variablendefinition einen alternativen Zustand an.
Beispiel: Wenn Sie einen Zustand mit dem Namen MyState und eine Variable mit dem Namen vMyVar haben, gilt:
vMyvar: =only({MyState}MyField)
Der Inhalt der Variablendefinition, mit einem ausdrücklichen Verweis auf den Namen des alternativen Zustands, bestimmt, in welchem Zustand der Variableninhalt ausgewertet wird.
Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!