Dans le script de chargement ou dans une expression de graphique, utilisez une variable dans une expansion de signe dollar pour :
Référencer un texte.
Référencer une valeur numérique.
Une variable texte.
Lorsque vous utilisez une variable pour remplacer du texte dans le script ou dans une expression, respectez la syntaxe suivante :
$(variablename)
$(variablename) développe l'expression de la valeur dans la variable. Si variablename n'existe pas, l'expansion correspond à une chaîne vide.
Exemples : Scripts de chargement de variables de type texte
Script de chargement
Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données :
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;
Comment développer une variable dans des affectations de variables.
Comment développer des variables combinées avec des opérations textuelles.
Il s'agit d'une configuration utile pour créer des étiquettes dynamiques et des chaînes de texte générales qui combinent le contenu d'une variable avec des chaînes statiques.
Sortie
Créez le tableau suivant dans Qlik Sense :
Tableau - sortie provenant du script de chargement
X
Y
Z
NewString
Rouge
blue
red blue
red blue green
Script de chargement
Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données :
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 ];
Explication
Les instructions Set et Let sont utilisées pour affecter des valeurs aux variables du script de chargement. La différence entre les deux réside dans le fait que l'instruction Set affecte une chaîne à la variable, tandis que l'instruction Let évalue le contenu de la chaîne avant d'affecter la valeur obtenue à la variable. Dans cet exemple, le tableau de chargement inline est complété de deux instructions preceding load qui sont utilisées pour visualiser différentes évaluations de la variable vEvaluate sous forme de chaîne de texte et d'expression correspondante.
Sortie
Créez le tableau suivant dans Qlik Sense :
Tableau - sortie provenant du script de chargement
ID
String
Expression
Upper
1
abc
upper(String)
ABC
2
def
upper(String)
DEF
3
ghi
upper(String)
HIJ
4
jkl
upper(String)
JKL
Exemple : Expression de graphique de variables de type texte
Script de chargement
Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données :
Dans une feuille en mode d'édition, ouvrez la boîte de dialogue Variables depuis le panneau des ressources.
Créez les variables suivantes :
Variable à créer
Nom
Définition
vSales
Sum(Sales)
vSales2014
Sum({<Year={2014}>}Sales)
vSales2015
Sum({<Year={2015}>} Sales)
vSalesAllYears
$(vSales2014) +$(vSales2015)
vSalesDifference
$(vSales2015)/$(vSales2014) - 1
Créez des graphiques d'indicateurs ICP pour afficher les expansions.
Expansion de variable numérique
La syntaxe suivante est utilisée pour les expansions de variables numériques :
(#variablename)
Cette expansion produit toujours une représentation en point décimal valide de la valeur numérique de la variable, éventuellement avec une notation exponentielle (pour les nombres très grands ou très petits). Si variablename n'existe pas ou ne contient pas de valeur numérique, la valeur est développée sur 0 au lieu de NULL.
Exemples : Scripts de chargement de variables numériques
Script de chargement
Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données :
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');
Explication
L'expansion #vVariable produit toujours une représentation en point décimal valide de la valeur numérique de la variable. Cela s'avère utile lorsqu'une virgule est utilisée au lieu d'un point comme séparateur décimal et qu'il existe un risque de conflit avec des listes séparées par des virgules.
La raison principale de l'expansion de ces variables dans un tableau de chargement inline réside dans le fait qu'aucun guillemet supplémentaire ne doit être ajouté à $(X).
Sortie
Créez le tableau suivant dans Qlik Sense :
Tableau - sortie provenant du script de chargement
DecimalComma
DecimalPoint
3,5
3.5
Script de chargement
Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données :
// 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');
Explication
L'expansion #vVariable produit toujours une représentation en point décimal valide de la valeur numérique de la variable. Cela s'avère utile lorsqu'une virgule est utilisée au lieu d'un point comme séparateur décimal et qu'il existe un risque de conflit avec des listes séparées par des virgules. Il est également important de noter que la précision numérique sera affectée, car la partie décimale sera tronquée lors de l'expansion des variables sans séparateur décimal correct.
La raison principale de l'expansion de ces variables dans une table de chargement inline réside dans le fait qu'aucun guillemet supplémentaire ne doit être ajouté à $(X).
Sortie
Créez le tableau suivant dans Qlik Sense :
Tableau - sortie provenant du script de chargement
DecimalComma
DecimalPoint
FormattedNumber
44 470,00
44469.999305556
2021-09-18 23:59:00
Script de chargement
Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données :
// 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
Explication
L'expansion #vVariable produit toujours une représentation en point décimal valide de la valeur numérique de la variable. Cela s'avère utile lorsqu'une virgule est utilisée au lieu d'un point comme séparateur décimal et qu'il existe un risque de conflit avec des listes séparées par des virgules. Il est également important de noter que la précision numérique sera affectée, car la partie décimale sera tronquée lors de l'expansion des variables sans séparateur décimal correct.
La raison principale de l'expansion de ces variables dans une table de chargement inline réside dans le fait qu'aucun guillemet supplémentaire ne doit être ajouté à $(X).
Sortie
Créez le tableau suivant dans Qlik Sense :
Tableau - sortie provenant du script de chargement
StartTime
StopTime
2021-03-23 12:34:56
2021-03-23 15:34:56
Expansion de variables référençant des états alternatifs
La variable comporte une seule valeur, et celle-ci est utilisée dans tous les états alternatifs. Lorsque vous développez une variable, la valeur est également la même, quels que soient l'endroit ou elle est effectuée et l'état de l'objet.
Si la variable est une variable calculée, à savoir, si la définition commence par un signe =, le calcul est effectué dans l'état par défaut, sauf si vous spécifiez un état alternatif dans la définition de la variable.
Par exemple, si vous avez défini un état nommé MyState et une variable nommée vMyVar :
vMyvar: =only({MyState}MyField)
Le contenu de la définition de la variable, avec une référence explicite au nom de l'état alternatif, détermine l'état dans lequel le contenu de la variable sera évalué.
Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !