Расширение со знаком доллара с использованием переменной
В скрипте загрузки или выражении диаграммы используйте переменную в расширении со знаком доллара в следующих случаях:
ссылка на текст;
ссылка на числовое значение.
Текстовая переменная
При использовании переменной для текстового замещения в скрипте или в выражении используется следующий синтаксис:
$(variablename)
$(variablename) расширяется до значения в переменной. Если элемент variablename не существует, расширение будет пустой строкой.
Примеры: Скрипты загрузки текстовых переменных
Скрипт загрузки
Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:
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;
Для получения дополнительной информации об использовании встроенных загрузок см. Встроенные загрузки.
Объяснение
Этот пример демонстрирует:
как расширить переменную в присваиваниях переменных;
как расширить переменные в сочетании с текстовыми операциями.
Это полезная конфигурация для создания динамических меток и общих текстовых строк, объединяющих переменное содержимое со статическими строками.
Выходные данные
Создайте следующую таблицу в Qlik Sense:
Таблица. Выходные данные скрипта загрузки
X
Y
Z
NewString
red
blue
red blue
red blue green
Скрипт загрузки
Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:
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 ];
Объяснение
Операторы Set и Let используются для присвоения значений переменным в скрипте загрузки. Разница между ними заключается в том, что оператор Set присваивает переменной строку, а оператор Let вычисляет содержимое строки перед присвоением переменной результирующего значения. Загрузка встроенной таблицы в этом примере дополнена двумя операторами предшествующей загрузки, которые используются для визуализации различных вычислений переменной vEvaluate как в виде текстовой строки, так и в виде соответствующего выражения.
Выходные данные
Создайте следующую таблицу в Qlik Sense:
Таблица. Выходные данные скрипта загрузки
ID
String
Expression
Upper
1
'abc'
upper(String)
ABC
2
def
upper(String)
def
3
ghi
upper(String)
HIJ
4
jkl
upper(String)
JKL
Пример: Выражение диаграммы с текстовой переменной
Скрипт загрузки
Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:
На листе в режиме изменения откройте диалоговое окно Переменные с панели Ресурсы.
Создайте следующие переменные:
Переменную, которую нужно создать
Имя
Определение
vSales
Sum(Sales)
vSales2014
Sum({<Year={2014}>}Sales)
vSales2015
Sum({<Year={2015}>} Sales)
vSalesAllYears
$(vSales2014) +$(vSales2015)
vSalesDifference
$(vSales2015)/$(vSales2014) - 1
Создайте диаграммы ключевых показателей эффективности, чтобы посмотреть расширения.
Расширение числовых переменных
Для расширений числовых переменных используется следующий синтаксис:
(#variablename)
Расширение возвращает числовое значение из переменной в виде десятичного числа, очень большие или малые числа — в экспоненциальном представлении. Если переменная variablename не существует или не содержит числового значения, она будет расширена до 0 вместо NULL.
Примеры: Скрипты загрузки числовых переменных
Скрипт загрузки
Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:
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');
Объяснение
Расширение #vVariable всегда возвращает числовое значение из переменной в виде десятичного числа. Это полезно, когда в качестве десятичного разделителя используется запятая, а не точка, и есть риск конфликта со списками, разделенными запятыми.
Основная причина расширения этих переменных в загруженной встроенной таблице заключается в том, что не требуется дополнительных кавычек для $(X).
Выходные данные
Создайте следующую таблицу в Qlik Sense:
Таблица. Выходные данные скрипта загрузки
DecimalComma
DecimalPoint
3,5
3.5
Скрипт загрузки
Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:
// 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');
Объяснение
Расширение #vVariable всегда возвращает числовое значение из переменной в виде десятичного числа. Это полезно, когда в качестве десятичного разделителя используется запятая, а не точка, и есть риск конфликта со списками, разделенными запятыми. Также важно отметить, что точность чисел будет нарушена из-за усечения десятичной части при расширении переменных без правильного десятичного разделителя.
Основная причина расширения этих переменных в загруженной встроенной таблице заключается в том, что не требуется дополнительных кавычек для $(X).
Выходные данные
Создайте следующую таблицу в Qlik Sense:
Таблица. Выходные данные скрипта загрузки
DecimalComma
DecimalPoint
FormattedNumber
44 470,00
44469.999305556
2021-09-18 23:59:00
Скрипт загрузки
Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:
// 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
Объяснение
Расширение #vVariable всегда возвращает числовое значение из переменной в виде десятичного числа. Это полезно, когда в качестве десятичного разделителя используется запятая, а не точка, и есть риск конфликта со списками, разделенными запятыми. Также важно отметить, что точность чисел будет нарушена из-за усечения десятичной части при расширении переменных без правильного десятичного разделителя.
Основная причина расширения этих переменных в загруженной встроенной таблице заключается в том, что не требуется дополнительных кавычек для $(X).
Выходные данные
Создайте следующую таблицу в Qlik Sense:
Таблица. Выходные данные скрипта загрузки
StartTime
StopTime
2021-03-23 12:34:56
2021-03-23 15:34:56
Расширение переменных, ссылающихся на альтернативные состояния
У переменной есть только одно значение, и оно используется во всех альтернативных состояниях. При расширении переменной значение также будет тем же самым вне зависимости от того, где оно сделано и каково состояние объекта.
Если переменная является рассчитанной переменной, то есть определение начинается со знака «равно», вычисление делается в состоянии по умолчанию, если в определении переменной не указано альтернативное состояние.
Например, если имеется состояние с именем MyState и переменная с именем vMyVar:
vMyvar: =only({MyState}MyField)
Содержимое определения переменной с прямой ссылкой на имя альтернативного состояния указывает, в каком состоянии содержимое переменной будет вычислено.
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!