Rozszerzenie przez znak dolara przy użyciu zmiennej
W skrypcie ładowania lub wyrażeniu wykresu użyj zmiennej w rozszerzeniu przez znak dolara, aby:
Odwołać się do tekstu
Odwołać się do wartości liczbowej
Zmienna tekstowa
Gdy w celu zastąpienia tekstu w skrypcie lub w wyrażeniu używana jest zmienna, używana jest następująca składnia:
$(variablename)
$(variablename) powoduje rozwinięcie do wartości w zmiennej. Jeśli variablename nie istnieje, wówczas wynikiem rozwinięcia będzie pusty ciąg znaków.
Przykłady: Skrypty ładowania ze zmiennymi tekstowymi
Skrypt ładowania
Załaduj następujące dane jako ładowanie wbudowane w edytorze ładowania danych:
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;
Aby uzyskać więcej informacji o ładowaniu wbudowanym, zobacz temat Ładowania wbudowane.
Objaśnienie
Ten przykład pokazuje:
Jak rozszerzyć zmienną w przypisaniach zmiennych.
Jak rozszerzyć zmienne połączone z operacjami tekstowymi.
Jest to przydatna konfiguracja do tworzenia etykiet dynamicznych i ogólnych ciągów tekstowych, które łączą zmienną zawartość z ciągami statycznymi.
Dane wyjściowe
Utwórz następującą tabelę w Qlik Sense:
Tabela — dane wyjściowe ze skryptu ładowania
X
Y
Z
NewString
red
Blue
red blue
red blue green
Skrypt ładowania
Załaduj następujące dane jako ładowanie wbudowane w edytorze ładowania danych:
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 ];
Objaśnienie
Instrukcje Set i Let służą do przypisywania wartości do zmiennych w skrypcie ładowania. Różnica między nimi polega na tym, że instrukcja Set przypisuje ciąg do zmiennej, podczas gdy instrukcja Let ocenia zawartość ciągu przed przypisaniem wartości wynikowej do zmiennej. Ładowana tabela wbudowana w tym przykładzie jest uzupełniona dwiema poprzedzającymi ją instrukcjami load, które służą do wizualizacji różnych ocen zmiennej vEvaluate zarówno jako ciągu tekstowego, jak i jako odpowiadającego mu wyrażenia.
Dane wyjściowe
Utwórz następującą tabelę w Qlik Sense:
Tabela — dane wyjściowe ze skryptu ładowania
ID
String
Expression
Upper
1
abc
upper(String)
ABC
2
def
upper(String)
DEF
3
ghi
upper(String)
HIJ
4
jkl
upper(String)
JKL
Przykład: Wyrażenie wykresu ze zmienną tekstową
Skrypt ładowania
Załaduj następujące dane jako ładowanie wbudowane w edytorze ładowania danych:
W arkuszu w trybie edycji otwórz okno dialogowe Zmienne z panelu Zasoby.
Utwórz następujące zmienne:
Zmienna do utworzenia
Nazwa
Definicja
vSales
Sum(Sales)
vSales2014
Sum({<Year={2014}>}Sales)
vSales2015
Sum({<Year={2015}>} Sales)
vSalesAllYears
$(vSales2014) +$(vSales2015)
vSalesDifference
$(vSales2015)/$(vSales2014) - 1
Utwórz wykresy KPI, aby zobaczyć rozszerzenia.
Rozszerzenie zmiennej liczbowej
W celu rozwinięcia zmiennej numerycznej używana jest następująca składnia:
(#variablename)
Rozszerzenie zawsze daje poprawną dziesiętną reprezentację wartości liczbowej zmiennej, ewentualnie z notacją wykładniczą (dla bardzo dużych lub małych liczb). Jeśli variablename nie istnieje lub nie zawiera wartości liczbowej, zostanie rozszerzone do 0 zamiast NULL.
Przykłady: Skrypty ładowania ze zmiennymi liczbowymi
Skrypt ładowania
Załaduj następujące dane jako ładowanie wbudowane w edytorze ładowania danych:
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');
Objaśnienie
Rozszerzenie #vVariable zawsze daje poprawną dziesiętną reprezentację wartości liczbowej zmiennej. Jest to przydatne, gdy jako separatora dziesiętnego używa się przecinka, a nie kropki i istnieje ryzyko konfliktu z listami rozdzielanymi przecinkami.
Głównym powodem rozszerzenia tych zmiennych w ładowanej tabeli wbudowanej jest to, że nie jest wymagane dodatkowe ujmowanie $(X) w cudzysłów.
Dane wyjściowe
Utwórz następującą tabelę w Qlik Sense:
Tabela — dane wyjściowe ze skryptu ładowania
DecimalComma
DecimalPoint
3,5
3.5
Skrypt ładowania
Załaduj następujące dane jako ładowanie wbudowane w edytorze ładowania danych:
// 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');
Objaśnienie
Rozszerzenie #vVariable zawsze daje poprawną dziesiętną reprezentację wartości liczbowej zmiennej. Jest to przydatne, gdy jako separatora dziesiętnego używa się przecinka, a nie kropki i istnieje ryzyko konfliktu z listami rozdzielanymi przecinkami. Należy także pamiętać, że wpłynie to na dokładność liczbową ze względu na obcięcie części dziesiętnej, gdy zmienne zostaną rozszerzone bez prawidłowego separatora dziesiętnego.
Głównym powodem rozszerzenia tych zmiennych w ładowanej tabeli wbudowanej jest to, że nie jest wymagane dodatkowe ujmowanie $(X) w cudzysłów.
Dane wyjściowe
Utwórz następującą tabelę w Qlik Sense:
Tabela — dane wyjściowe ze skryptu ładowania
DecimalComma
DecimalPoint
FormattedNumber
44 470,00
44469.999305556
2021-09-18 23:59:00
Skrypt ładowania
Załaduj następujące dane jako ładowanie wbudowane w edytorze ładowania danych:
// 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
Objaśnienie
Rozszerzenie #vVariable zawsze daje poprawną dziesiętną reprezentację wartości liczbowej zmiennej. Jest to przydatne, gdy jako separatora dziesiętnego używa się przecinka, a nie kropki i istnieje ryzyko konfliktu z listami rozdzielanymi przecinkami. Należy także pamiętać, że wpłynie to na dokładność liczbową ze względu na obcięcie części dziesiętnej, gdy zmienne zostaną rozszerzone bez prawidłowego separatora dziesiętnego.
Głównym powodem rozszerzenia tych zmiennych w ładowanej tabeli wbudowanej jest to, że nie jest wymagane dodatkowe ujmowanie $(X) w cudzysłów.
Dane wyjściowe
Utwórz następującą tabelę w Qlik Sense:
Tabela — dane wyjściowe ze skryptu ładowania
StartTime
StopTime
2021-03-23 12:34:56
2021-03-23 15:34:56
Rozszerzanie zmiennych odwołujących się do stanów alternatywnych
Zmienna ma tylko jedną wartość i jest używana we wszystkich stanach alternatywnych. Kiedy rozszerzasz zmienną, wartość jest również taka sama, niezależnie od tego, gdzie została utworzona, i od stanu obiektu.
Jeśli zmienna jest zmienną obliczaną, to znaczy definicja zaczyna się od znaku równości, obliczenia są wykonywane w stanie domyślnym, chyba że określisz stan alternatywny w definicji zmiennej.
Jeżeli na przykład istnieje stan o nazwie MyState i zmienna o nazwie vMyVar:
vMyvar: =only({MyState}MyField)
Treść definicji zmiennej, z wyraźnym odniesieniem do nazwy alternatywnego stanu, określa, w jakim stanie będzie oceniana zawartość zmiennej.