Часть 7. Операторы и ключевые слова скрипта
Учебник QlikView (Qlik Sense). Часть 7. Операторы и ключевые слова скрипта.
Содержание
Операторы и ключевые слова скрипта. Общее.
Скрипт QlikView (и Qlik Sense) (и Qlik Sense) состоит из ряда операторов. В качестве оператора может выступать обычный оператор скрипта или оператор управления скрипта. Перед некоторыми операторами могут стоять префиксы.
Как правило, обычные операторы используются для управления данными тем или иным образом. Эти операторы могут быть перезаписаны любым числом линий в скрипте и всегда должны заканчиваться точкой с запятой, «;».
Как правило, операторы управления используются для контроля хода выполнения скрипта. Каждое предложение оператора управления должно находиться внутри одной строки скрипта и может заканчиваться на точку с запятой или знак конца строки.
Префиксы можно использовать с соответствующими обычными операторами, но не с операторами управления. Тем не менее префиксы when и unless можно использовать в качестве суффиксов с некоторыми выражениями определенных операторов управления.
В следующем подразделе перечислены все существующие операторы скрипта, операторы управления и префиксы в алфавитном порядке.
Все ключевые слова скрипта можно вводить в любой комбинации символов в нижнем и верхнем регистре. В именах полей и переменных, используемых в операторах, учитывается регистр.
Операторы управления скриптом
Скрипт QlikView (и Qlik Sense) (и Qlik Sense) состоит из ряда операторов. В качестве оператора может выступать обычный оператор скрипта или оператор управления скрипта.
Как правило, операторы управления используются для контроля хода выполнения скрипта. Каждое предложение оператора управления должно находиться внутри одной строки скрипта и может заканчиваться на точку с запятой или знак конца строки.
Операторы управления никогда не применяются с префиксами, за исключением префиксов when и unless, использование которых допускается с несколькими особыми операторами управления.
Все ключевые слова скрипта можно вводить в любой комбинации символов в нижнем и верхнем регистре.
В таблице ниже представлена краткое описание и синтаксис каждой функции. Дополнительную информацию можно получить, если щелкнуть имя функции в описании синтаксиса.
Call |
Оператор управления call вызывает подпрограмму, которую необходимо задать с помощью предыдущего оператора sub. Call name ( [ paramlist ])
|
Do..loop |
Оператор управления do..loop является компонентом итерации скрипта, который выполняет один или несколько операторов до выполнения логического условия. do[ ( while | until ) condition ] [statements]
|
Exit script |
Этот оператор управления останавливает выполнение скрипта. Его можно вставить в любое место скрипта. exit script[ (when | unless) condition ]
|
For each ..next |
Оператор управления for each..next является компонентом итерации скрипта, который выполняет один или несколько операторов для каждого значения в списке, разделенном запятой. Операторы внутри цикла, заключенного с помощью for и next, выполняются для каждого значения списка. For Each var in list [statements] [exit for [ ( when | unless ) condition ]
|
For..next |
Оператор управления for..next представляет собой компонент итерации скрипта со счетчиком. Операторы внутри цикла, которые находятся между разделами for и next, будут выполняться для каждого значения переменной счетчика в пределах указанных минимального и максимального значений (включительно). For counter = expr1 to expr2 [ step expr3 ] [statements]
|
If..then |
Оператор управления if..then является компонентом выбора скрипта, который позволяет выполнять скрипт по различным путям в зависимости от одного или нескольких логических условий.
Поскольку оператор if..then является оператором управления и заканчивается точкой с запятой или знаком конца линии, каждое из четырех его возможных выражений (if..then, elseif..then, else и end if) не должно выходить за границу строки.
If condition then [ statements ] { elseif condition then [ statements ] } [ else [ statements ] ] end if
|
Sub |
Оператор управления sub..end sub определяет подпрограмму, которая должна вызываться оператором call. Sub name [ ( paramlist )] statements end sub
|
Switch |
Оператор управления switch является компонентом выбора скрипта, который позволяет выполнять скрипт по различным путям в зависимости от значения выражения. Switch expression {case valuelist [ statements ]} [default statements] end switch
|
Call
Оператор управления call вызывает подпрограмму, которую необходимо задать с помощью предыдущего оператора sub.
Call name ( [ paramlist ])
Аргументы:
Аргумент | Описание |
---|---|
name | Имя подпрограммы. |
paramlist | Список фактических параметров, отправляемых в подпрограмму и перечисленных через запятую. Элементы списка могут быть именами полей, переменными или произвольными выражениями. |
Подпрограмма, вызываемая оператором call, должна быть задана оператором sub ранее при выполнении скрипта.
Параметры копируются в подпрограмму и, если параметр оператора call является переменной, а не выражением, снова копируются назад при выходе из подпрограммы.
Ограничения:
Поскольку оператор call является оператором управления и заканчивается точкой с запятой или знаком конца строки, он не должен выходить за границу строки.
Sub INCR (I,J)
I = I + 1End Sub
Exit Sub when I < 10
J = J + 1
Call INCR (X,Y)
sub DoDir (Root)
For Each Ext in 'qvw', 'qvo', 'qvs', 'qvt', 'qvd', 'qvc'End Sub
For Each File in filelist (Root&'\*.' &Ext)Next Ext
LOADNext File
'$(File)' as Name, FileSize( '$(File)' ) as
Size, FileTime( '$(File)' ) as FileTime
autogenerate 1;
For Each Dir in dirlist (Root&'\*' )
Call DoDir (Dir)Next Dir
Call DoDir ('C:')
Do..loop
Оператор управления do..loop является компонентом итерации скрипта, который выполняет один или несколько операторов до выполнения логического условия.
Do [ ( while | until ) condition ] [statements]
[exit do [ ( when | unless ) condition ] [statements]
loop[ ( while | until ) condition ]
Аргументы:
Аргумент | Описание |
---|---|
condition |
Логическое выражение, имеющее значение True или False. |
statements |
Любая группа, состоящая из одного или нескольких операторов скрипта QlikView (и Qlik Sense). |
while / until |
Условное предложение while или until должно появиться только один раз в любом операторе do..loop, то есть после do или после loop. Каждое условие интерпретируется только при первом появлении, однако вычисляется при каждом появлении в цикле. |
exit do |
Если в цикле появляется предложение exit do, выполнение скрипта будет передано первому оператору после предложения loop, указывающего на конец цикла. Предложение exit do можно сделать условным с помощью дополнительного использования суффикса when или unless. |
Set a=1;
Do while a<10
LOAD * from file$(a).csv;
Let a=a+1;
Loop
Exit script
Этот оператор управления останавливает выполнение скрипта. Его можно вставить в любое место скрипта.
Exit Script [ (when | unless) condition ]
Поскольку оператор exit script является оператором управления и заканчивается точкой с запятой или знаком конца строки, он не должен выходить за границу строки.
Аргументы:
Аргумент | Описание |
---|---|
condition | Логическое выражение, имеющее значение True или False. |
when / unless | Оператор exit script можно сделать условным с помощью дополнительного использования предложения when или unless. |
Exit Script;
//Exit script when a condition is fulfilled
Exit Script when a=1
For each..next
Оператор управления for each..next является компонентом итерации скрипта, который выполняет один или несколько операторов для каждого значения в списке, разделенном запятой. Операторы внутри цикла, заключенного с помощью for и next, выполняются для каждого значения списка.
С помощью специального синтаксиса можно создавать списки с именами файлов и каталогов в текущем каталоге.
for each var in list [statements] [exit for [ ( when | unless ) condition ]
[statements] next [var]
Аргументы:
Аргумент | Описание |
---|---|
var | Имя переменной скрипта, которое получает новое значение из списка для каждого выполнения цикла. Если переменная var задана после next, она должна иметь такое же имя переменной, как указано после соответствующего предложения for each. |
Значение переменной var может быть изменено операторами внутри цикла, однако это делать не рекомендуется.
Если в цикле появляется предложение exit for, выполнение скрипта будет передано первому оператору после предложения next, указывающего на конец цикла. Предложение exit for можно сделать условным с помощью дополнительного использования суффикса when или unless.
list := item { , item }
item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)
Аргумент | Описание |
---|---|
constant | Любое число или строка. Обратите внимание на то, что строка, непосредственно записываемая в скрипте, должна быть заключена в одинарные кавычки. Строка без одинарных кавычек будет интерпретироваться как переменная с использованием значения переменной. Числа не нужно заключать в одинарные кавычки. |
expression | Произвольное выражение. |
mask |
Маска имени файла или папки, которая может включать в себя любые допустимые в имени файла символы и стандартные знаки подстановки, * и ?. |
condition | Логическое выражение, имеющее значение True или False. |
statements | Любая группа, состоящая из одного или нескольких операторов скрипта QlikView (и Qlik Sense). |
filelist mask |
Такой синтаксис создает разделенный запятыми список всех файлов в текущем каталоге, соответствующих маске имени файла. |
dirlist mask |
Такой синтаксис создает разделенный запятыми список всех папок в текущей папке, соответствующей маске имени папки. |
fieldvaluelist mask | Этот синтаксис повторяется в значениях поля, которое уже загружено в QlikView (и Qlik Sense). |
for each a in 1,3,7,'xyz'
LOAD * from file$(a).csv;next
В этом примере показана загрузка всех файлов в папке, относящихся к программе QlikView (и Qlik Sense).
for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd'
for each File in filelist (Root&'\*.' &Ext)
LOAD
'$(File)' as Name,autogenerate 1;
FileSize( '$(File)' ) as Size,
FileTime( '$(File)' ) as FileTime
next File
next Ext
for each Dir in dirlist (Root&'\*' )call DoDir (Dir)
next Dir
end sub
call DoDir ('C:')
Этот пример повторяется в списке загруженных значений элемента FIELD и создает новое поле NEWFIELD. Для каждого значения элемента FIELD необходимо создать две записи NEWFIELD.
load * inline [
FIELD
one
two
three
];
FOR Each a in FieldValueList('FIELD')
LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2;
NEXT a
Полученная таблица выглядит следующим образом:
NEWFIELD |
---|
one-1 |
one-2 |
two-1 |
two-2 |
three-1 |
three-2 |
For..next
Оператор управления for..next представляет собой компонент итерации скрипта со счетчиком. Операторы внутри цикла, которые находятся между разделами for и next, будут выполняться для каждого значения переменной счетчика в пределах указанных минимального и максимального значений (включительно).
For counter = expr1 to expr2 [ step expr3 ] [statements]
[exit for [ ( when | unless ) condition ] [statements] Next [counter]
Выражения expr1, expr2 и expr3 рассчитываются только при первом входе в цикл. Значение переменной counter может быть изменено операторами внутри цикла, однако это делать не рекомендуется.
Если в цикле появляется предложение exit for, выполнение скрипта будет передано первому оператору после предложения next, указывающего на конец цикла. Предложение exit for можно сделать условным с помощью дополнительного использования суффикса when или unless.
Аргументы:
Аргумент | Описание |
---|---|
counter | Имя переменной. Если переменная counter задана после next, она должна иметь такое же имя переменной, как указано после соответствующего предложения for. |
expr1 | Выражение, определяющее первое значение переменной counter, для которой должен выполняться цикл. |
expr2 |
Выражение, определяющее максимальное значение переменной counter, для которой должен выполняться цикл. |
expr3 | Выражение, которое определяет значение приращения переменной counter при каждом выполнении цикла. |
condition | логическое выражение, имеющее значение True или False. |
statements | Любая группа, состоящая из одного или нескольких операторов скрипта QlikView (и Qlik Sense). |
for a=1 to 9
LOAD * from file$(a).csv;next
В этом примере используются следующие файлы с данными: x1.csv, x3.csv, x5.csv, x7.csv и x9.csv. Загрузка остановлена в случайной точке с помощью условия if rand( )<0.5 then
.
set filename=x$(counter).csv;next
if rand( )<0.5 then
exit for unless counter=1end if
LOAD a,b from $(filename);
If..then..elseif..else..end if
Оператор управления if..then является компонентом выбора скрипта, который позволяет выполнять скрипт по различным путям в зависимости от одного или нескольких логических условий.
If condition then [ statements ] { elseif condition then [ statements ] }
[ else [ statements ] ] end if
Поскольку оператор if..then является оператором управления и заканчивается точкой с запятой или знаком конца линии, каждое из четырех его возможных выражений (if..then, elseif..then, else и end if) не должно выходить за границу строки.
Аргументы:
Аргумент | Описание |
---|---|
condition | Логическое выражение, которое может иметь значение True или False. |
statements | Любая группа, состоящая из одного или нескольких операторов скрипта QlikView (и Qlik Sense). |
LOAD * from abc.csv;end if
SQL SELECT e, f, g from tab1;
LOAD * from pos.csv;elseif x<0 then
LOAD * from neg.csv;else
LOAD * from zero.txt;end if
Sub..end sub
Оператор управления sub..end sub определяет подпрограмму, которая должна вызываться оператором call.
Sub name [ ( paramlist )] statements end sub
Аргументы копируются в подпрограмму и снова копируются обратно при выходе из подпрограммы, если соответствующий фактический параметр в операторе call представляет собой имя переменной.
Если в подпрограмме присутствует больше формальных параметров, чем фактических параметров, передаваемых оператором call, то дополнительные параметры инициализируются со значением NULL, и их можно использовать в качестве локальных переменных в подпрограмме.
Поскольку оператор sub является оператором управления и заканчивается точкой с запятой или знаком конца линии, каждое из двух его возможных выражений (sub и end sub) не должно выходить за границу строки.
Аргументы:
Аргумент | Описание |
---|---|
name | Имя подпрограммы. |
paramlist | Список имен переменных, разделенных запятой, для формальных параметров подпрограммы. Они могут использоваться как любая другая переменная в подпрограмме. |
statements | Любая группа, состоящая из одного или нескольких операторов скрипта QlikView (и Qlik Sense). |
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
A=A+1
B=B+1
C=C+1
End Sub
A=1
X=1
C=1
Call ParTrans (A, (X+1)*2)
В результате этого локально внутри подпрограммы A будет инициализировано как 1, B как 4 и C как NULL.
При выходе из подпрограммы глобальная переменная А получает значение 2 (скопированное из подпрограммы). Второй фактический параметр (X+1)*2 не будет копироваться, поскольку не является переменной. Наконец, глобальная переменная С не будет изменена вследствие вызова подпрограммы.
Switch..case..default..end switch
Оператор управления switch является компонентом выбора скрипта, который позволяет выполнять скрипт по различным путям в зависимости от значения выражения.
Switch expression {case valuelist [ statements ]} [default statements] end switch
Аргументы:
Аргумент | Описание |
---|---|
expression | Произвольное выражение. |
valuelist | Список значений, разделенных запятой, с которыми будет сравниваться значение expression. Выполнение скрипта продолжится с операторов в первой группе, в которой значение valuelist будет равно значению expression. Каждое значение valuelist может быть произвольным выражением. Если совпадение не найдено ни в одном из предложений case, то будут выполнены операторы в выражении default при их наличии. |
statements | Любая группа, состоящая из одного или нескольких операторов скрипта QlikView (и Qlik Sense). |
Case 1
LOAD '$(I): CASE 1' as case autogenerate 1;
Case 2
LOAD '$(I): CASE 2' as case autogenerate 1;
Default
LOAD '$(I): DEFAULT' as case autogenerate 1;
End Switch
Префиксы скрипта
Префиксы можно использовать с соответствующими обычными операторами, но не с операторами управления. Тем не менее префиксы when и unless можно использовать в качестве суффиксов с некоторыми выражениями определенных операторов управления.
Все ключевые слова скрипта можно вводить в любой комбинации символов в нижнем и верхнем регистре. В именах полей и переменных, используемых в операторах, учитывается регистр.
Пользуйтесь информацией из раскрывающегося списка по каждой функции, чтобы увидеть краткое описание и синтаксис каждой функции. Дополнительную информацию можно получить, если щелкнуть имя функции в описании синтаксиса.
Add |
Префикс add можно добавить в любой оператор LOAD, SELECT или map…using в скрипте. Он применяется только во время частичной загрузки. Add [only] (loadstatement | selectstatement | mapstatement)
|
Buffer |
Файлы QVD могут создаваться и обслуживаться автоматически посредством префикса buffer. Этот префикс может использоваться на большинстве операторов LOAD и SELECT в скрипте. Он указывает на то, что файлы QVD используются для кэширования/буферизации результата оператора. Buffer[(option [ , option])] ( loadstatement | selectstatement )
|
Bundle |
Префикс Bundle используется для включения внешних файлов, таких как файлы изображений и звуковые файлы, или объектов, связанных со значением поля, для сохранения в файле qvw. Bundle [Info] ( loadstatement | selectstatement)
|
Concatenate |
Если для двух таблиц необходимо выполнить объединение, и они имеют разные наборы полей, объединение двух таблиц может быть выполнено принудительно с помощью префикса Concatenate. concatenate [ (tablename ) ] ( loadstatement | selectstatement )
|
Crosstable |
Префикс crosstable используется для преобразования перекрестной таблицы в прямую, т. е. широкая таблица со множеством столбцов преобразуется в длинную таблицу с размещением заголовков столбцов в одном столбце атрибутов. crosstable (attribute field name, data field name [ , n ] ) ( loadstatement | selectstatement )
|
First |
Префикс First операторов LOAD или SELECT (SQL) используется для загрузки заданного максимального числа записей из таблицы источника данных. First n( loadstatement | selectstatement )
|
Generic |
Префикс generic распаковывает длинную таблицу и создает одно поле на каждое значение атрибута. Эта операция похожа на операцию создания сводной таблицы, но в отличие от нее приводит к появлению отдельной таблицы для каждого поля. Generic ( loadstatement | selectstatement )
|
Hierarchy |
Префикс hierarchy используется для преобразования таблицы с родительско-дочерней иерархией в полезную таблицу модели данных QlikView (и Qlik Sense). Его можно поставить перед оператором LOAD или SELECT. Он будет использовать результат оператора загрузки в качестве ввода для преобразования таблицы. Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource],
[PathName], [PathDelimiter], [Depth])(loadstatement | selectstatement)
|
HierarchyBelongsTo |
Префикс используется для преобразования таблицы с родительско-дочерней иерархией в полезную таблицу модели данных QlikView (и Qlik Sense). Его можно поставить перед оператором LOAD или SELECT. Он будет использовать результат оператора загрузки в качестве ввода для преобразования таблицы. HierarchyBelongsTo (NodeID, ParentID, NodeName, AncestorID,
AncestorName, [DepthDiff])(loadstatement | selectstatement)
|
Image_Size |
Это предложение используется вместе с префиксами Info или Bundle для изменения размера изображений из СУБД в соответствии с размерами полей. Info [Image_Size(width,height)] ( loadstatement | selectstatement)
|
Info |
Префикс info используется для связи внешней информации, такой как текстовый файл, изображение или видео, со значением поля. Info( loadstatement | selectstatement )
|
Inner |
Перед префиксами join и keep может стоять префикс inner.Если этот префикс используется перед join, то он указывает, что необходимо выполнить внутреннее объединение. Результирующая таблица, таким образом, будет содержать только комбинации значений полей из таблиц исходных данных с представлением связанных значений полей в обеих таблицах. Если этот префикс используется перед keep, он указывает, что обе таблицы с исходными данными следует уменьшить до области взаимного пересечения, прежде чем они смогут быть сохранены в программе QlikView (и Qlik Sense). . Inner ( Join | Keep) [ (tablename) ](loadstatement |selectstatement )
|
Inputfield |
Чтобы пометить поле как поле ввода, укажите его в операторе inputfield до упоминания в операторах load или select. Inputfield fieldlist
|
IntervalMatch |
Префикс IntervalMatch используется для создания таблиц сравнения дискретных числовых значений с одним или несколькими числовыми интервалами, а также сравнения значений с одним или несколькими дополнительными ключами. IntervalMatch (matchfield)(loadstatement | selectstatement )
|
Join |
Префикс join объединяет загруженную таблицу с существующей таблицей, для которой задано имя, или с последней созданной таблицей данных. [Inner | Outer | Left | Right ]Join[(tablename )]( loadstatement | selectstatement )
|
Keep |
Префикс keep подобен префиксу join. Также как префикс join, этот префикс сравнивает загруженную таблицу с существующей таблицей, для которой задано имя, или с последней созданной таблицей данных, но вместо объединения загруженной таблицы с существующей он позволяет сократить одну или обе таблицы до сохранения в программе QlikView (и Qlik Sense) путем пересечения данных таблиц. Выполняемое сравнение аналогично натуральному объединению по всем общим полям, т. е. выполняется так же, как и при соответствующем объединении. Однако две таблицы не соединяются и сохраняются в программе QlikView (и Qlik Sense) в виде двух отдельных таблиц с заданными именами. (Inner | Left | Right) Keep [(tablename ) ]( loadstatement | selectstatement )
|
Left |
Перед префиксами Join и Keep может стоять префикс left. Если этот префикс используется перед join, то он указывает, что необходимо выполнить левое объединение. Результирующая таблица будет содержать только комбинации значений полей из таблиц исходных данных с представлением связанных значений полей в первой таблице. Если этот префикс используется перед префиксом keep, он указывает, что вторую таблицу с исходными данными следует уменьшить до области взаимного пересечения с первой таблицей, прежде чем они смогут быть сохранены в программе QlikView (и Qlik Sense). Left ( Join | Keep) [(tablename) ](loadstatement | selectstatement )
|
Mapping |
Префикс mapping используется для создания таблицы сопоставления, которую можно использовать, например, для замены значений полей и имен полей в ходе выполнения скрипта. Mapping ( loadstatement | selectstatement )
|
NoConcatenate |
Префикс NoConcatenate определяет, что две загруженные таблицы с идентичными наборами полей будут обрабатываться как две отдельные внутренние таблицы вместо автоматического объединения. NoConcatenate( loadstatement | selectstatement )
|
Outer |
Для указания внешнего объединения перед явным префиксом Join может стоять префикс outer. При внешнем объединении создаются все возможные комбинации двух таблиц. Результирующая таблица, таким образом, будет содержать комбинации значений полей из таблиц исходных данных с представлением связанных значений полей в одной или обеих таблицах. Ключевое слово outer является дополнительным. Outer Join [ (tablename) ](loadstatement |selectstatement )
|
Replace |
Префикс replace используется для удаления таблицы в программе QlikView (и Qlik Sense) полностью и ее замены загруженной или выбранной таблицей. Replace[only](loadstatement |selectstatement |map...usingstatement)
|
Right |
Перед префиксами Join и Keep может стоять префикс right. Если этот префикс используется перед join, то он указывает, что необходимо выполнить правое объединение. Результирующая таблица будет содержать только комбинации значений полей из таблиц исходных данных с представлением связанных значений полей во второй таблице. Если этот префикс используется перед префиксом keep, он указывает, что первую таблицу с исходными данными следует уменьшить до области взаимного пересечения со второй таблицей, прежде чем они смогут быть сохранены в программе QlikView (и Qlik Sense). Right (Join | Keep) [(tablename)](loadstatement |selectstatement )
|
Sample |
Префикс sample операторов LOAD или SELECT используется для загрузки произвольного образца записей из источника данных. Sample p ( loadstatement | selectstatement )
|
Semantic |
Таблицы, содержащие связи между записями, можно загрузить с помощью префикса semantic. Это могут быть, например, рекурсивные ссылки в пределах таблицы, где одна запись указывает на другую, такую как родительская, та, которой она принадлежит, или предшествующая. Semantic ( loadstatement | selectstatement)
|
Unless |
Префикс и суффикс unless используется для создания условного предложения, определяющего вычисление или невычисление оператора либо условия «exit». Это короткое утверждение можно использовать вместо полного оператора if..end if. (Unless condition statement | exitstatement Unless condition )
|
When |
Префикс и суффикс when используется для создания условного предложения, определяющего исполнение или неисполнение оператора либо условия «exit». Это короткое утверждение можно использовать вместо полного оператора if..end if. ( When condition statement | exitstatement when condition )
|
Add
Префикс add можно добавить в любой оператор LOAD, SELECT или map…using в скрипте. Он применяется только во время частичной загрузки.
Add [only] (loadstatement | selectstatement | mapstatement)
Во время частичной перезагрузки таблица QlikView (и Qlik Sense), для которой создается имя с помощью оператора add LOAD/add SELECT (если такая таблица существует), дополняется результатом выполнения оператора add LOAD/add SELECT. Проверка дубликатов не выполняется. Таким образом, оператор, использующий префикс add, будет, как правило, включать в себя квалификатор distinct или защитные дубликаты выражения where. Оператор map…using запускает сопоставление данных также и во время частичного выполнения скрипта.
Аргументы:
Аргумент | Описание |
---|---|
only | Дополнительный квалификатор, указывающий на то, что оператор следует игнорировать в ходе нормальной (не частичной) перезагрузки. |
Пример | Результат |
---|---|
Tab1: LOAD Name, Number FROM Persons.csv; Add LOAD Name, Number FROM newPersons.csv; |
Во время обычной перезагрузки данные загружаются из файла Persons.csv и сохраняются в таблице QlikView (и Qlik Sense) Tab1 Затем данные из файла NewPersons.csv объединяются с той же таблицей QlikView (и Qlik Sense). Во время частичной перезагрузки данные загружаются из файла NewPersons.csv и сохраняются в таблице QlikView (и Qlik Sense) Tab1 Проверка дубликатов не выполняется. |
Tab1: SQL SELECT Name, Number FROM Persons.csv; Add LOAD Name, Number FROM NewPersons.csv (txt) where not exists(Name); |
Проверка дубликатов выполняется путем проверки наличия элемента Name в ранее загруженных табличных данных (см. функцию exists в разделе функций между записями). Во время обычной перезагрузки данные загружаются из файла Persons.csv и сохраняются в таблице QlikView (и Qlik Sense) Tab1 Затем данные из файла NewPersons.csv объединяются с той же таблицей QlikView (и Qlik Sense). Во время частичной перезагрузки данные загружаются из файла NewPersons.csv, который добавляется к таблице QlikView (и Qlik Sense) Tab1 Проверка дубликатов выполняется путем проверки наличия Name в ранее загруженных табличных данных. |
Tab1: LOAD Name, Number FROM Persons.csv; Add Only LOAD Name, Number FROM NewPersons.csv (txt) where not exists(Name); |
Во время обычной перезагрузки данные загружаются из файла Persons.csv и сохраняются в таблице QlikView (и Qlik Sense) Tab1 Оператор загрузки NewPersons.csv игнорируется. Во время частичной перезагрузки данные загружаются из файла NewPersons.csv, который добавляется к таблице QlikView (и Qlik Sense) Tab1 Проверка дубликатов выполняется путем проверки наличия Name в ранее загруженных табличных данных. |
Buffer
Файлы QVD могут создаваться и обслуживаться автоматически посредством префикса buffer. Этот префикс может использоваться на большинстве операторов LOAD и SELECT в скрипте. Он указывает на то, что файлы QVD используются для кэширования/буферизации результата оператора.
Buffer [(option [ , option])] ( loadstatement | selectstatement )
option::= incremental | stale [after] amount [(days | hours)]
Если не используется ни один параметр, буфер QVD, созданный при первом выполнении скрипта, будет использоваться в течение неопределенного времени.
Буферы QVD по умолчанию хранятся в папке C:\ProgramData\QlikTech\QlikView (и Qlik Sense)\Buffers.
Обычно буферы QVD удаляются, если к ним больше не обращаются на любом этапе выполнения всего скрипта в документе, его создавшем, либо в том случае, если документ, его создавший, уже не существует.
Аргументы:
Аргумент | Описание |
---|---|
incremental | Параметр incremental дает возможность прочитать только часть базового файла. Данные о предыдущем размере файла находятся в заголовке XML файла QVD. Это особенно полезно при работе с файлами журнала. Все записи, загруженные в предыдущий раз, считываются из файла QVD, в то время как последующие новые записи считываются из оригинального источника, в результате чего создается обновленный файл QVD. Обратите внимание, что параметр incremental может использоваться только с операторами LOAD и текстовыми файлами, а инкрементальная загрузка не может использоваться там, где устаревшие данные изменены или удалены! |
stale [after] amount [(days | hours)] | amount — число, обозначающее период времени. Могут использоваться десятичные числа. Единицей измерения являются дни, если не указано иное. Опция stale after обычно используется с источниками баз данных, если нет простой метки времени на первоначальных данных. Вместо этого можно указать, насколько старым может быть описание используемого снимка QVD. Предложение stale after просто указывает период времени с момента создания буфера QVD, после которого он будет считаться недействительным. До этого времени в качестве источника данных будет использоваться буфер QVD, а после этого — оригинальный источник данных. Файл буфера QVD будет автоматически обновлен, и начнется новый период. |
Ограничения:
Среди многочисленных ограничений необходимо отметить наиболее важное, которое заключается в том, что в центре любого составного оператора должен быть оператор для файла LOAD либо SELECT.
Bundle
Префикс Bundle используется для включения внешних файлов, таких как файлы изображений и звуковые файлы, или объектов, связанных со значением поля, для сохранения в файле qvw.
Bundle [Info] ( loadstatement | selectstatement)
Для удобства переноса внешние файлы можно включить в файл .qvw. Для этого следует использовать префикс Bundle. Включенные в пакет файлы info сжимаются в ходе этого процесса, однако все равно занимают дополнительное место в файле и ОЗУ. Поэтому, выбирая такое решение, следует отслеживать и размер, и число пакетных файлов.
Информацию можно получать в виде ссылки из макета (в виде обычной информации), с помощью функции диаграммы info или в виде внутреннего файла, для их вызова может использоваться специальный синтаксис: qmem:// fieldname / fieldvalue или qmem:// fieldname / < index >, где index — внутренний индекс значения поля.
Аргументы:
Аргумент | Описание |
---|---|
loadstatement | selectstatement | Если часть внешних данных, например изображение или звуковой файл, необходимо связать со значением поля, то это можно сделать в таблице, загружаемой с префиксом Info. Префиксом Info можно пренебречь при использовании префикса Bundle. |
Bundle SQL SELECT * from infotable;
Concatenate
Если для двух таблиц необходимо выполнить объединение, и они имеют разные наборы полей, объединение двух таблиц может быть выполнено принудительно с помощью префикса Concatenate. Этот оператор выполняет принудительное объединение с существующей именованной таблицей или последней созданной логической таблицей. Если две таблицы содержат поля с одинаковыми именами, объединение выполняется автоматически.
Concatenate[ (tablename ) ] ( loadstatement | selectstatement )
Объединение, по сути, совпадает с оператором SQL UNION, но с двумя отличиями:
- Префикс Concatenate может использоваться независимо от того, имеют ли таблицы идентичные имена полей.
- Идентичные записи при наличии префикса Concatenate не удаляются.
Аргументы:
Аргумент | Описание |
---|---|
tablename | Имя существующей таблицы. |
Concatenate SELECT * From table3;
LOAD * From file1.csv; tab2:
LOAD * From file2.csv;
.. .. ..
Concatenate (tab1) LOAD * From file3.csv;
Crosstable
Префикс crosstable используется для преобразования перекрестной таблицы в прямую, т. е. широкая таблица со множеством столбцов преобразуется в длинную таблицу с размещением заголовков столбцов в одном столбце атрибутов.
crosstable (attribute field name, data field name [ , n ] ) ( loadstatement | selectstatement )
Аргументы:
Аргумент | Описание |
---|---|
attribute field name | Поле, которое содержит значения атрибутов. |
data field name | Поле, которое содержит значения данных. |
n |
Число полей описателя перед таблицей, которые следует преобразовать в общий формат. По умолчанию задается 1. |
Crosstable — это распространенный тип таблиц, включающих матрицу значений, расположенную между двумя и более ортогональными списками данных в заголовках, один из которых используется в качестве заголовков столбцов. Типичный пример — один столбец для каждого месяца. В результате использования префикса crosstable заголовки столбцов (например, названия месяцев) будут сохранены в одном поле (поле атрибутов), а данные столбцов (номера месяцев) будут сохранены во втором поле (поле данных).
Person, Location, Jan, Feb, Mar
Bob, London, 100, 200, 300
Kate, New York, 400, 500, 600
];
Результат:
Person, | Location, | Month, | Sales |
Bob, | London, | Jan, | 100 |
Bob, | London, | Feb, | 200 |
Bob, | London, | Mar, | 300 |
Kate, | New York, | Jan, | 400 |
Kate, | New York, | Feb, | 500 |
Kate, | New York, | Mar, | 600 |
Мастер создания перекрестной таблицы
Мастер создания перекрестной таблицы представляет собой диалоговое окно, позволяющее создавать операторы перекрестной таблицы. Чтобы открыть диалоговое окно, нажмите кнопку Перекрестная таблица на странице Параметры мастера создания файлов. В мастере создания перекрестной таблицы можно выбрать следующие параметры:
Определяющие поля | Число определяющих полей, предшествующих преобразуемым полям. |
Поле атрибута | Имя нового поля, которое будет содержать все поля (значения атрибутов), подлежащие преобразованию. |
Поле данных | Имя нового поля, которое будет содержать данные значений атрибутов. |
First
Префикс First операторов LOAD или SELECT (SQL) используется для загрузки заданного максимального числа записей из таблицы источника данных.
First n ( loadstatement | selectstatement )
Аргументы:
Аргумент | Описание |
---|---|
n |
Произвольное выражение, результатом которого является целое число, обозначающее максимальное число считываемых записей. Элемент n может быть заключен в скобки, например (n), но это необязательно. |
First (1) SQL SELECT * from Orders;
Generic
Префикс generic распаковывает длинную таблицу и создает одно поле на каждое значение атрибута. Эта операция похожа на операцию создания сводной таблицы, но в отличие от нее приводит к появлению отдельной таблицы для каждого поля.
Generic( loadstatement | selectstatement )
Таблицы, загружаемые с помощью оператора generic, автоматически не объединяются.
Generic LOAD * INLINE;
[
Key, Attribute, Value
Bob, Jan, 100
Bob, Feb, 200
Bob, Mar, 300
Kate, Jan, 400
Kate, Feb, 500
Kate, Mar, 600
];
Результат:
В результате будут созданы 3 таблицы:
Table1.Jan:
Key, | Jan |
Bob, | 100 |
Kate, | 400 |
Table1.Feb:
Key, | Feb |
Bob, | 200 |
Kate, | 500 |
Table1.Mar:
Key, | Mar |
Bob, | 300 |
Kate, | 600 |
Hierarchy
Префикс hierarchy используется для преобразования таблицы с родительско-дочерней иерархией в полезную таблицу модели данных QlikView (и Qlik Sense). Его можно поставить перед оператором LOAD или SELECT. Он будет использовать результат оператора загрузки в качестве ввода для преобразования таблицы.
Префикс создает таблицу развернутых узлов, которая, как правило, включает то же количество записей, что и входная таблица, но при этом каждый уровень иерархии сохраняется в отдельном поле. В иерархической структуре можно использовать поле пути.
Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource], [PathName], [PathDelimiter],
[Depth])(loadstatement | selectstatement)
В качестве входной таблицы должна использоваться таблица со смежными узлами. Таблица со смежными узлами — таблица, где каждая запись соответствует узлу и имеет поле, содержащее ссылку на родительский узел. В таких таблицах узел хранится в одной записи, но может иметь любое число дочерних узлов. В таблице могут содержаться дополнительные поля, описывающие атрибуты для узлов.
Обычно входная таблица имеет точно одну запись на узел, и в таком случае выходная таблица будет содержать такое же число записей. Однако иногда существуют узлы с несколькими родительским узлами, то есть один узел представлен несколькими записями во входной таблице. В таком случае в выходной таблице может содержаться больше записей, чем во входной.
Все узлы с родительским идентификатором, не найденные в столбце идентификаторов узлов (включая узлы с отсутствующими родительскими идентификаторами), будут расцениваться как корневые. К тому же загружаться будут только узлы с соединением с корневым узлом, прямым или косвенным, что тем самым позволит избежать циклических ссылок.
Можно создать дополнительные поля, содержащие имя родительского узла, путь узла и глубину узла.
Аргументы:
Аргумент | Описание |
---|---|
NodeID | Имя поля, содержащего идентификатор узла. Это поле должно существовать во входной таблице. |
ParentID | Имя поля, содержащего идентификатор родительского узла. Это поле должно существовать во входной таблице. |
NodeName | Имя поля, содержащего имя узла. Это поле должно существовать во входной таблице. |
ParentName | Строка, которая используется для наименования нового поля ParentName. При его отсутствии это поле не создается. |
ParentSource | Имя поля, которое содержит имя узла, используемого для создания пути к узлу. Необязательный параметр. Если не указано, используется NodeName. |
PathName | Строка, которая используется для наименования нового поля Path, содержащего путь от корневого каталога к узлу. Необязательный параметр. При его отсутствии это поле не создается. |
PathDelimiter | Строка, которая используется в качестве разделителя в новом поле Path. Необязательный параметр. При его отсутствии используется ‘/’. |
Depth | Строка, которая используется для наименования нового поля Depth, содержащего глубину узла в иерархии. Необязательный параметр. При его отсутствии это поле не создается. |
NodeID, ParentID, NodeName
1, 4, London
2, 3, Munich
3, 5, Germany
4, 5, UK
5, , Europe
];
Результат:
NodeID | NodeName | ParentID | ParentName | NodeName1 | NodeName2 | NodeName3 | PathName | Depth |
5 | Europe | - | Europe | - | - | Europe | 1 | |
3 | Germany | 5 | Europe | Europe | Germany | - | Europe\Germany | 2 |
2 | Munich | 3 | Germany | Europe | Germany | Munich | Europe\Germany\Munich | 3 |
4 | UK | 5 | Europe | Europe | UK | - | Europe\UK | 2 |
1 | London | 4 | UK | Europe | UK | London | Europe\UK\London | 3 |
HierarchyBelongsTo
Префикс используется для преобразования таблицы с родительско-дочерней иерархией в полезную таблицу модели данных QlikView (и Qlik Sense). Его можно поставить перед оператором LOAD или SELECT. Он будет использовать результат оператора загрузки в качестве ввода для преобразования таблицы.
Префикс позволяет создавать таблицу, которая содержит все связи родительский-дочерний элемент иерархии. Родительские поля затем могут использоваться для выбора целых деревьев в иерархии. Выходная таблица, как правило, включает несколько записей на каждый узел.
HierarchyBelongsTo (NodeID, ParentID, NodeName, AncestorID,
AncestorName, [DepthDiff])(loadstatement | selectstatement)
В качестве входной таблицы должна использоваться таблица со смежными узлами. Таблица со смежными узлами — таблица, где каждая запись соответствует узлу и имеет поле, содержащее ссылку на родительский узел. В таких таблицах узел хранится в одной записи, но может иметь любое число дочерних узлов. В таблице могут содержаться дополнительные поля, описывающие атрибуты для узлов.
Можно создать дополнительные поля, содержащие разницу глубины узлов.
Аргументы:
Аргумент | Описание |
---|---|
NodeID | Имя поля, содержащего идентификатор узла. Это поле должно существовать во входной таблице. |
ParentID | Имя поля, содержащего идентификатор родительского узла. Это поле должно существовать во входной таблице. |
NodeName | Имя поля, содержащего имя узла. Это поле должно существовать во входной таблице. |
AncestorID | Строка имени нового поля идентификатора родительского узла, которое содержит идентификатор родительского узла. |
AncestorName | Строка имени нового поля родительского узла, которое содержит имя родительского узла. |
DepthDiff | Строка имени нового поля DepthDiff, содержащего глубину узла в иерархии по отношению к родительскому узлу. Необязательный параметр. При его отсутствии это поле не создается. |
NodeID, AncestorID, NodeName
1, 4, London
2, 3, Munich
3, 5, Germany
4, 5, UK
5, , Europe
];
Результат:
NodeID | AncestorID | NodeName | AncestorName | DepthDiff |
1 | 1 | London | London | 0 |
1 | 4 | London | UK | 1 |
1 | 5 | London | Europe | 2 |
2 | 2 | Munich | Munich | 0 |
2 | 3 | Munich | Germany | 1 |
2 | 5 | Munich | Europe | 2 |
3 | 3 | Germany | Germany | 0 |
3 | 5 | Germany | Europe | 1 |
4 | 4 | UK | UK | 0 |
4 | 5 | UK | Europe | 1 |
5 | 5 | Europe | Europe | 0 |
Image_Size
Это предложение используется вместе с префиксами Info или Bundle для изменения размера изображений из СУБД в соответствии с размерами полей.
Bundle [Image_Size(width,height)] ( loadstatement | selectstatement )
Аргументы:
Аргумент | Описание |
---|---|
width | Ширина изображения, указанная в пикселах. |
height | Высота изображения, указанная в пикселах. |
Для каждого изображения в папке MyPictures будет сохранен эскиз в документе QlikView (и Qlik Sense). Отношение высоты к ширине изображения остается неизменным.
for each vBundleFoundFile in filelist( GetFolderPath('MyPictures') & '\*.'& vBundleExt )
BundleFileList:
BUNDLE IMAGE_SIZE(20, 20) Info Load FileLongName, FileLongName;
Load @1:n as FileLongName Inline "$(vBundleFoundFile)" (fix, no labels);
Next vBundleFoundFile
Next vBundleExt
Info
Префикс info используется для связи внешней информации, такой как текстовый файл, изображение или видео, со значением поля.
Info( loadstatement | selectstatement )
Если часть внешней информации, например текстовый файл, изображение или видеофайл, необходимо связать со значением поля, то это делается в таблице, загружаемой с помощью префикса info. В некоторых случаях предпочтительнее хранить информацию внутри файла qvw, используя префикс bundle. Таблица должна содержать только два столбца: первый должен отображать значения полей, которые формируют ключи к информации, а второй должен содержать элементы информации, то есть имена файлов изображений и т. п.
Это касается, например, изображений, полученных из СУБД. В двоичном поле (blob) оператор info select выполняет неявную операцию bundle, т. е. двоичные данные будут немедленно выбраны и сохранены в файле qvw. Двоичные данные должны записываться во второе поле оператора SELECT.
LinkedField, ImageFileName
QlikView (и Qlik Sense), QlikView (и Qlik Sense)Logo.png
];
Результат:
В качестве имени поля будет видно только LinkedField.
Если добавить текстовый объект на лист, для представления которого задан параметр Изображение, и ввести текст =Info(LinkedField), текстовый объект отобразит имя файла изображения.
Inner
Перед префиксами join и keep может стоять префикс inner.Если этот префикс используется перед join, то он указывает, что необходимо выполнить внутреннее объединение. Результирующая таблица, таким образом, будет содержать только комбинации значений полей из таблиц исходных данных с представлением связанных значений полей в обеих таблицах. Если этот префикс используется перед keep, он указывает, что обе таблицы с исходными данными следует уменьшить до области взаимного пересечения, прежде чем они смогут быть сохранены в программе QlikView (и Qlik Sense).
Inner ( Join | Keep) [ (tablename) ](loadstatement |selectstatement )
Аргументы:
Аргумент | Описание |
---|---|
tablename | Будет выполнено сравнение именованной таблицы с загруженной таблицей. |
Операторы loadstatementили selectstatement | Оператор LOAD или SELECT для загруженной таблицы. |
Table1 |
|
A |
B |
1 |
aa |
2 |
cc |
3 |
ee |
Table2 |
|
A |
C |
1 |
xx |
4 |
yy |
QVTable:
SQL SELECT * From table1;
inner join SQL SELECT * From table2;
QVTable |
|
|
A |
B |
C |
1 |
aa |
xx |
SQL SELECT * From Table1;
QVTab2:
inner keep SQL SELECT * From Table2;
QVTab1 |
|
A |
B |
1 |
aa |
QVTab2 |
|
A |
C |
1 |
xx |
Две таблицы в примере keep, разумеется, связаны посредством поля A.
Inputfield
Чтобы пометить поле как поле ввода, укажите его в операторе inputfield до упоминания в операторах LOAD или SELECT.
inputfieldfieldlist
fieldlist представляет собой список полей, разделенных запятыми, которые должны быть помечены как поля ввода. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки.
Поле ввода отличается от обычного поля. Основным его отличием является способность принимать изменения значений поля (в интерактивном режиме или через программирование) без запуска скрипта. Значения поля загружаются в поле с помощью операторов LOAD или SELECT. Каждое значение поля, загружаемое в скрипт, создает заполнитель для значения, которым будет заменено значение поля. Таким образом в интерактивном режиме или путем программирования можно изменять только существующие значения поля. Заменяющее значение задается пользователем, т.е. если поле ввода используется на сервере, разные пользователи будут видеть разные наборы значений в поле ввода. В полях ввода все значения поля считаются различными, даже если некоторые из них одинаковы. Обычно ранее указанные значения сохраняются в полях ввода после загрузки.
Inputfield A,B;
Inputfield B??x*;
IntervalMatch
Префикс IntervalMatch используется для создания таблиц сравнения дискретных числовых значений с одним или несколькими числовыми интервалами, а также сравнения значений с одним или несколькими дополнительными ключами.
IntervalMatch (matchfield)(loadstatement | selectstatement )
IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )
Префикс IntervalMatch устанавливается перед оператором LOAD или SELECT, который загружает интервалы. До оператора с префиксом IntervalMatch поле, которое содержит дискретные точки диаграммы (Time в приведенном ниже примере) и дополнительные ключи, уже должно быть загружено в QlikView (и Qlik Sense). Данный префикс не считывает это поле из таблицы базы данных сам по себе. Он преобразует загруженную таблицу интервалов и ключей в таблицу, содержащую дополнительный столбец дискретных числовых точек диаграммы. Здесь также разворачиваются различные записи, что позволяет включать в новую таблицу одну запись на возможную комбинацию дискретных точек диаграммы, интервалов и значений ключевых полей.
Интервалы могут накладываться друг на друга, а дискретные значения будут связаны со всеми соответствующими интервалами.
Расширенный префикс IntervalMatch используется для создания таблиц связывания дискретных числовых значений с одним или несколькими числовыми интервалами, а также связывания значений с одним или несколькими дополнительными ключами. Это очень мощная и гибкая функция, которую можно использовать для связывания транзакций с изменяющимися в динамике по времени измерениями: медленно изменяющимися измерениями.
Во избежание игнорирования неопределенных границ интервалов может потребоваться разрешить сопоставление значений NULL с другими полями, которые образуют нижнюю или верхнюю границы интервала. Это выполняется с помощью оператора NullAsValue или явного теста, который заменяет значения NULL числовыми значениями, расположенными на достаточном расстоянии перед или после дискретных числовых точек диаграммы.
Аргументы:
Аргумент | Описание |
---|---|
matchfield | Поле, содержащее дискретные числовые значения, которые нужно связать с интервалами. |
keyfield | Поля, содержащие дополнительные атрибуты, сопоставляемые при преобразовании. |
loadstatement or selectstatement | Должна быть получена таблица, где первое поле содержит нижнюю границу каждого интервала, второе поле содержит верхнюю границу каждого интервала, а в случае использования сопоставления ключей третье и все последующие поля содержат ключевые поля, присутствующие в операторе IntervalMatch. Интервалы всегда закрытые, т. е. конечные точки включены в интервал. Нечисловые границы приводят к тому, что интервал игнорируется (неопределенный). |
Рассмотрим две таблицы. В первой таблице дано время начала и конца выполнения различных заказов. Во второй таблице находится список дискретных событий. С помощью префикса IntervalMatch возможно логически связать две таблицы для того, чтобы узнать, например, на какие заказы повлияли нарушения в работе, а также какие заказы были обработаны в какие смены.
LOAD * Inline [
Time, Event, Comment
00:00, 0, Start of shift 1
01:18, 1, Line stop
02:23, 2, Line restart 50%
04:15, 3, Line speed 100%
08:00, 4, Start of shift 2
11:43, 5, End of production
];
OrderLog:
LOAD * INLINE [
Start, End, Order
01:00, 03:35, A
02:30, 07:58, B
03:04, 10:27, C
07:23, 11:43, D
];
//Link the field Time to the time intervals defined by the fields Start and End.
Inner Join IntervalMatch ( Time )
LOAD Start, End
Resident OrderLog;
Результат:
Теперь таблица OrderLog содержит дополнительный столбец: Time. Число записей также увеличивается.
Time | Start | End | Order |
---|---|---|---|
00:00 |
- | - | - |
01:18 | 01:00 | 03:35 | A |
02:23 | 01:00 | 03:35 | A |
04:15 | 02:30 | 07:58 | B |
04:15 | 03:04 | 10:27 | C |
08:00 | 03:04 | 10:27 | C |
08:00 | 07:23 | 11:43 | D |
11:43 | 07:23 | 11:43 |
D |
Пример аналогичен приведенному выше, только в качестве ключевого поля добавляется ProductionLine .
LOAD * Inline [
Time, Event, Comment, ProductionLine
00:00, 0, Start of shift 1, P1
01:00, 0, Start of shift 1, P2
01:18, 1, Line stop, P1
02:23, 2, Line restart 50%, P1
04:15, 3, Line speed 100%, P1
08:00, 4, Start of shift 2, P1
09:00, 4, Start of shift 2, P2
11:43, 5, End of production, P1
11:43, 5, End of production, P2
];
OrderLog:
LOAD * INLINE [
Start, End, Order, ProductionLine
01:00, 03:35, A, P1
02:30, 07:58, B, P1
03:04, 10:27, C, P1
07:23, 11:43, D, P2
];
//Link the field Time to the time intervals defined by the fields Start and End and match the values
// to the key ProductionLine.
Inner Join
IntervalMatch ( Time, ProductionLine )
LOAD Start, End, ProductionLine
Resident OrderLog;
Результат:
Теперь простую таблицу можно создать следующим образом:
ProductionLine | Time | Event | Comment | Order | Start | End |
---|---|---|---|---|---|---|
P1 | 00:00 |
0 | Start of shift 1 | - | - | - |
P2 | 01:00 | 0 | Start of shift 1 | - | - | - |
P1 | 01:18 | 1 | Line stop | A | 01:00 | 03:35 |
P1 | 02:23 | 2 | Line restart 50% | A | 01:00 | 03:35 |
P1 | 04:15 | 3 | Line speed 100% | B | 02:30 | 07:58 |
P1 | 04:15 | 3 | Line speed 100% | C | 03:04 | 10:27 |
P1 | 08:00 | 4 | Start of shift 2 | C | 03:04 | 10:27 |
P2 | 09:00 | 4 | Start of shift 2 | D | 07:23 | 11:43 |
P1 | 11:43 | 5 | End of production | - | - | - |
P2 | 11:43 | 5 | End of production | D | 07:23 | 11:43 |
IntervalMatch (расширенный синтаксис)
Расширенный префикс IntervalMatch используется для создания таблиц связывания дискретных числовых значений с одним или несколькими числовыми интервалами, а также связывания значений с одним или несколькими дополнительными ключами.
Это очень мощная и гибкая функция, которую можно использовать для связывания транзакций с изменяющимися в динамике по времени измерениями: медленно изменяющимися измерениями.
Префикс IntervalMatch устанавливается перед оператором LOAD или SELECT, который загружает интервалы. В QlikView (и Qlik Sense) до оператора с префиксом IntervalMatch уже должна быть загружена таблица, которая содержит дискретные точки диаграммы и дополнительные ключи. Он преобразует загруженную таблицу интервалов и ключей в таблицу, содержащую дополнительный столбец дискретных числовых точек диаграммы. Здесь также разворачиваются различные записи, что позволяет включать в новую таблицу одну запись на возможную комбинацию дискретных точек диаграммы, интервалов и значений ключевых полей.
intervalmatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )
matchfield
— это поле, содержащее дискретные числовые значения, которые нужно связать с интервалами.
keyfield(s)
— это поля, содержащие дополнительные атрибуты, сопоставляемые при преобразовании.
loadstatement
или selectstatement
должен выдавать таблицу, в которой первые два поля содержат верхний и нижний предел каждого интервала, а третье и последующие поля содержат keyfield(s)
, существующие в операторе IntervalMatch. Интервалы всегда закрытые, т. е. конечные точки включены в интервал. Нечисловые границы приводят к тому, что интервал игнорируется (неопределенный).
Во избежание игнорирования неопределенных границ интервалов может потребоваться разрешить сопоставление значений NULL с другими полями, которые образуют нижнюю или верхнюю границы интервала. Это выполняется с помощью оператора NullAsValue или явного теста, который заменяет значения NULL числовыми значениями, расположенными на достаточном расстоянии перед или после дискретных числовых точек диаграммы.
Join
Префикс join объединяет загруженную таблицу с существующей таблицей, для которой задано имя, или с последней созданной таблицей данных.
[inner | outer | left | right ]Join [ (tablename ) ]( loadstatement | selectstatement )
Join — это естественное объединение, образуемое по всем общим полям. Перед оператором join можно задать один из префиксов inner, outer, left или right.
Аргументы:
Аргумент | Описание |
---|---|
tablename | Будет выполнено сравнение именованной таблицы с загруженной таблицей. |
Операторы loadstatement или selectstatement | Оператор LOAD или SELECT для загруженной таблицы. |
Join SELECT * from table1;
tab1:
LOAD * from file1.csv;
tab2:
LOAD * from file2.csv;
.. .. ..
join (tab1) LOAD * from file3.csv;
Keep
Префикс keep подобен префиксу join. Также как префикс join, этот префикс сравнивает загруженную таблицу с существующей таблицей, для которой задано имя, или с последней созданной таблицей данных, но вместо объединения загруженной таблицы с существующей он позволяет сократить одну или обе таблицы до сохранения в программе QlikView (и Qlik Sense) путем пересечения данных таблиц. Выполняемое сравнение аналогично натуральному объединению по всем общим полям, т. е. выполняется так же, как и при соответствующем объединении. Однако две таблицы не соединяются и сохраняются в программе QlikView (и Qlik Sense) в виде двух отдельных таблиц с заданными именами.
(inner | left | right) keep [(tablename ) ]( loadstatement | selectstatement )
Перед префиксом keep следует задать один из префиксов inner, left или right.
Явный префикс join в языке скриптов в программе QlikView (и Qlik Sense) выполняет полное объединение двух таблиц. В результате получается одна таблица. Во многих случаях такое объединение приводит к созданию очень больших таблиц. Одной из основных функций QlikView (и Qlik Sense) является возможность связывания нескольких таблиц вместо их объединения, что позволяет значительно сократить использование памяти, повысить скорость обработки и гибкость. По этой причине явных объединений в скриптах QlikView (и Qlik Sense) следует, как правило, избегать. Функция keep предназначена для сокращения числа случаев необходимого использования явных объединений.
Аргументы:
Аргумент | Описание |
---|---|
tablename | Будет выполнено сравнение именованной таблицы с загруженной таблицей. |
Операторы loadstatement или selectstatement | Оператор LOAD или SELECT для загруженной таблицы. |
Left Keep SELECT * from table1;
tab1:
LOAD * from file1.csv;
tab2:
LOAD * from file2.csv;
.. .. ..
Left Keep (tab1) LOAD * from file3.csv;
Left
Перед префиксами join и keep может стоять префикс left.
Если этот префикс используется перед join, то он указывает, что необходимо выполнить левое объединение. Результирующая таблица будет содержать только комбинации значений полей из таблиц исходных данных с представлением связанных значений полей в первой таблице. Если этот префикс используется перед префиксом keep, он указывает, что вторую таблицу с исходными данными следует уменьшить до области взаимного пересечения с первой таблицей, прежде чем они смогут быть сохранены в программе QlikView (и Qlik Sense).
left ( Join | keep) [ (tablename) ](loadstatement | selectstatement)
Аргументы:
Аргумент | Описание |
---|---|
tablename | Будет выполнено сравнение именованной таблицы с загруженной таблицей. |
Операторы loadstatement или selectstatement | Оператор LOAD или SELECT для загруженной таблицы. |
Table1 |
|
A |
B |
1 |
aa |
2 |
cc |
3 |
ee |
Table2 |
|
A |
C |
1 |
xx |
4 |
yy |
SELECT * From table1;
Left Join Select * From table2;
QVTable |
|
|
A |
B |
C |
1 |
aa |
xx |
2 |
cc |
|
3 |
ee |
|
SELECT * From Table1;
QVTab2:
Left Keep SELECT * From Table2;
QVTab1 |
|
A |
B |
1 |
aa |
2 |
cc |
3 |
ee |
QVTab2 |
|
A |
C |
1 |
xx |
Две таблицы в примере keep, разумеется, связаны посредством поля A.
LOAD * From file1.csv;
tab2:
LOAD * From file2.csv;
.. .. ..
Left Keep (tab1) LOAD * From file3.csv;
Mapping
Префикс mapping используется для создания таблицы сопоставления, которую можно использовать, например, для замены значений полей и имен полей в ходе выполнения скрипта.
mapping(loadstatement | selectstatement)
Префикс mapping можно поставить перед оператором LOAD или SELECT. Он будет сохранять результат оператора загрузки в качестве таблицы сопоставления. Mapping — эффективный способ замены значений полей во время выполнения скрипта, например замены значений «СШ», «С.Ш.» или «Америка» значением «США». Таблица сопоставления состоит из двух столбцов, первый из которых содержит значения, используемые для сравнения, а второй — желаемые значения для сопоставления. Таблицы сопоставления временно хранятся в памяти и автоматически удаляются после выполнения скрипта.
К содержанию таблицы сопоставления доступ осуществляется с помощью, например, оператора Map … Using, Rename Field, функции Applymap() или Mapsubstring().
В этом примере мы загружаем список продавцов с кодом страны, представляющим их страну проживания. Мы используем таблицу, соответствующую коду страны, для той страны, код которой будет заменен ее названием. В таблице сопоставления указаны только три страны, коды других стран указаны в параметре 'Rest of the world'.
map1:
mapping LOAD *
Inline [
CCode, Country
Sw, Sweden
Dk, Denmark
No, Norway
] ;
// Load list of salesmen, mapping country code to country
// If the country code is not in the mapping table, put Rest of the world
Salespersons:
LOAD *,
ApplyMap('map1', CCode,'Rest of the world') As Country
Inline [
CCode, Salesperson
Sw, John
Sw, Mary
Sw, Per
Dk, Preben
Dk, Olle
No, Ole
Sf, Risttu] ;
// We don't need the CCode anymore
Drop Field 'CCode';
Полученная таблица выглядит следующим образом:
Salesperson | Country |
---|---|
John | Sweden |
Mary | Sweden |
Per | Sweden |
Preben | Denmark |
Olle | Denmark |
Ole | Norway |
Risttu | Rest of the world |
NoConcatenate
Префикс NoConcatenate определяет, что две загруженные таблицы с идентичными наборами полей будут обрабатываться как две отдельные внутренние таблицы вместо автоматического объединения.
NoConcatenate( loadstatement | selectstatement )
NoConcatenate LOAD A,B from file2.csv;
Outer
Для указания outer join перед явным префиксом join может стоять префикс outer. При выборе outer join создаются все возможные комбинации двух таблиц. Результирующая таблица, таким образом, будет содержать комбинации значений полей из таблиц исходных данных с представлением связанных значений полей в одной или обеих таблицах.
Ключевое слово outer является необязательным и представляет собой тип объединения по умолчанию, используемый в том случае, если не указан префикс join.
Outer Join [ (tablename) ](loadstatement |selectstatement )
Аргументы:
Аргумент | Описание |
---|---|
tablename | Будет выполнено сравнение именованной таблицы с загруженной таблицей. |
Операторы loadstatement или selectstatement | Оператор LOAD или SELECT для загруженной таблицы. |
Table1 |
|
A |
B |
1 |
aa |
2 |
cc |
3 |
ee |
Table2 |
|
A |
C |
1 |
xx |
4 |
yy |
join SQL SELECT * from table2;
ИЛИ
SQL SELECT * from table1;
outer join SQL SELECT * from table2;
Объединенная таблица |
|
|
A |
B |
C |
1 |
aa |
xx |
2 |
cc |
- |
3 |
ee |
- |
4 |
- |
yy |
Replace
Префикс replace используется для удаления таблицы в программе QlikView (и Qlik Sense) полностью и ее замены загруженной или выбранной таблицей.
Replace [only](loadstatement |selectstatement |map...usingstatement)
Префикс replace можно добавить в любой оператор LOAD, SELECT или map…using в скрипте. Оператор replace LOAD/replace SELECT отбрасывает всю таблицу QlikView (и Qlik Sense), для которой имя сгенерировано оператором replace LOAD/replace SELECT, и заменяет ее новой таблицей, содержащей результат оператора replace LOAD/replace SELECT. Аналогичный результат достигается во время частичной и полной перезагрузки. Оператор replace map…using запускает сопоставление данных также и во время частичного выполнения скрипта.
Аргументы:
Аргумент | Описание |
---|---|
only | Дополнительный квалификатор, указывающий на то, что оператор следует игнорировать в ходе нормальной (не частичной) перезагрузки. |
Пример | Результат |
---|---|
Tab1: Replace LOAD * from File1.csv; |
Во время обычной и частичной перезагрузки изначально отбрасывается таблица QlikView (и Qlik Sense) Tab1. После этого из файла File1.csv загружаются новые данные, которые сохраняются в таблице Tab1. |
Tab1: Replace only LOAD * from File1.csv; |
Во время обычной перезагрузки этот оператор игнорируется. Во время частичной перезагрузки изначально отбрасывается любая таблица QlikView (и Qlik Sense), которая раньше называлась Tab1. После этого из файла File1.csv загружаются новые данные, которые сохраняются в таблице Tab1. |
Tab1: LOAD a,b,c from File1.csv; Replace LOAD a,b,c from File2.csv; |
Во время обычной перезагрузки сначала считывается файл File1.csv в таблицу QlikView (и Qlik Sense) Tab1, однако затем она сразу отбрасывается и заменяется новыми данными, загруженными из файла File2.csv. Все данные из файла File1.csv теряются. Во время частичной перезагрузки изначально отбрасывается вся таблица QlikView (и Qlik Sense) Tab1. После этого она заменяется новыми данными, загруженными из файла File2.csv. |
Tab1: LOAD a,b,c from File1.csv; Replace only LOAD a,b,c from File2.csv; |
Во время обычной перезагрузки данные загружаются из файла File1.csv и сохраняются в таблице QlikView (и Qlik Sense) Tab1. Файл File2.csv игнорируется. Во время частичной перезагрузки изначально отбрасывается вся таблица QlikView (и Qlik Sense) Tab1. После этого она заменяется новыми данными, загруженными из файла File2.csv. Все данные из файла File1.csv теряются. |
Right
Перед префиксами join и keep может стоять префикс right.
Если этот префикс используется перед join, то он указывает, что необходимо выполнить правое объединение. Результирующая таблица будет содержать только комбинации значений полей из таблиц исходных данных с представлением связанных значений полей во второй таблице. Если этот префикс используется перед префиксом keep, он указывает, что первую таблицу с исходными данными следует уменьшить до области взаимного пересечения со второй таблицей, прежде чем они смогут быть сохранены в программе QlikView (и Qlik Sense).
Right (Join | keep) [(tablename)](loadstatement |selectstatement )
Аргументы:
Аргумент | Описание |
---|---|
tablename | Будет выполнено сравнение именованной таблицы с загруженной таблицей. |
Операторы loadstatement или selectstatement | Оператор LOAD или SELECT для загруженной таблицы. |
Table1 |
|
A |
B |
1 |
aa |
2 |
cc |
3 |
ee |
Table2 |
|
A |
C |
1 |
xx |
4 |
yy |
SQL SELECT * from table1;
right join SQL SELECT * from table2;
QVTable |
|
|
A |
B |
C |
1 |
aa |
xx |
4 |
- |
yy |
SQL SELECT * from Table1;
QVTab2:
right keep SQL SELECT * from Table2;
QVTab1 |
|
A |
B |
1 |
aa |
QVTab2 |
|
A |
C |
1 |
xx |
4 |
yy |
Две таблицы в примере keep, разумеется, связаны посредством поля A.
LOAD * from file1.csv;
tab2:
LOAD * from file2.csv;
.. .. ..
right keep (tab1) LOAD * from file3.csv;
Sample
Префикс sample операторов LOAD или SELECT используется для загрузки произвольного образца записей из источника данных.
Sample p ( loadstatement | selectstatement )
Аргументы:
Аргумент | Описание |
---|---|
p |
Произвольное выражение, которое определяет число больше 0 и меньше или равное 1. Число обозначает вероятность считывания определенной записи. Все записи будут считаны, но только некоторые из них будут загружены в программу QlikView (и Qlik Sense). |
Sample(0.15) LOAD * from Longtab.csv;
Semantic
Таблицы, содержащие связи между записями, можно загрузить с помощью префикса semantic. Это могут быть, например, рекурсивные ссылки в пределах таблицы, где одна запись указывает на другую, такую как родительская, та, которой она принадлежит, или предшествующая.
Semantic( loadstatement | selectstatement)
При семантической загрузке создаются семантические поля, которые могут отображаться в списках для использования при навигации в данных.
Таблицы, загруженные посредством оператора semantic, не могут быть объединены.
Semantic SELECT Object1, Relation, Object2, InverseRelation from table1;
Unless
Префикс и суффикс unless используется для создания условного предложения, определяющего вычисление или невычисление оператора либо условия «exit». Это короткое утверждение можно использовать вместо полного оператора if..end if.
(Unless condition statement | exitstatement unless condition )
Действия statement или exitstatement выполняются, только если элемент condition имеет значение False.
Префикс unless можно использовать в операторах, включающих в себя один или несколько других операторов, в том числе дополнительные префиксы when или unless.
Аргументы:
Аргумент | Описание |
---|---|
condition | Логическое выражение, имеющее значение True или False. |
statement | Любой оператор скрипта QlikView (и Qlik Sense), за исключением операторов управления. |
exitstatement | Предложение exit for, exit do или exit sub или оператор exit script. |
unless A=1 LOAD * from myfile.csv;
unless A=1 when B=2 drop table Tab1;
When
Префикс и суффикс when используется для создания условного предложения, определяющего исполнение или неисполнение оператора либо условия «exit». Это короткое утверждение можно использовать вместо полного оператора if..end if.
(When condition statement | exitstatement when condition )
Действия statement или exitstatement выполняются, только если условие имеет значение True.
Префикс when можно использовать в операторах, включающих в себя один или несколько других операторов, в том числе дополнительные префиксы when или unless.
Аргумент | Описание |
---|---|
condition | Логическое выражение, имеющее значение True или False. |
statement | Любой оператор скрипта QlikView (и Qlik Sense), за исключением операторов управления. |
exitstatement | Предложение exit for, exit do или exit sub или оператор exit script. |
when A=1 LOAD * from myfile.csv;
when A=1 unless B=2 drop table Tab1;
Обычные операторы скриптов
Как правило, обычные операторы используются для управления данными тем или иным образом. Эти операторы могут быть перезаписаны любым числом линий в скрипте и всегда должны заканчиваться точкой с запятой, «;».
Все ключевые слова скрипта можно вводить в любой комбинации символов в нижнем и верхнем регистре. В именах полей и переменных, используемых в операторах, учитывается регистр.
Пользуйтесь информацией из раскрывающегося списка по каждой функции, чтобы увидеть краткое описание и синтаксис каждой функции. Дополнительную информацию можно получить, если щелкнуть имя функции в описании синтаксиса.
Alias |
Оператор alias используется для установки псевдонима, по которому будет переименовано поле при включении в следующий скрипт. Alias fieldname as aliasname {,fieldname as aliasname}
|
Binary |
Оператор binary используется для загрузки данных из другого документа QlikView (и Qlik Sense), включая данные секции доступа. Binary file file ::= [ path ] filename
|
Comment field |
Позволяет отображать комментарии поля (метаданные) из баз данных и электронных таблиц. Имена полей, отсутствующие в документе, будут игнорироваться. Если имя поля встречается несколько раз, используется последнее значение. |
Comment table |
Позволяет отображать комментарии таблицы (метаданные) из баз данных или электронных таблиц. comment-table tablelist using mapname
|
Direct Query |
Оператор DIRECT QUERY обеспечивает доступ к таблицам через подключение ODBC или OLE DB с помощью функции Direct Discovery. direct-query [path]
|
Directory |
Оператор Directory задает каталог, в котором будет выполняться поиск файлов данных в последующих операторах LOAD до создания нового оператора Directory. Directory [path]
|
Disconnect |
Оператор Disconnect разрывает текущее соединение ODBC/OLE DB/Custom. Этот оператор является дополнительным. |
drop field |
Одно или несколько полей QlikView (и Qlik Sense) можно удалить из модели данных, а, значит, и из памяти в любой момент выполнения скрипта с помощью оператора drop field.
Допустимыми являются оба оператора drop field и drop fields, причем оба они выполняют одно и то же действие. Если таблица не задана, поле удаляется из всех таблиц, в которых оно встречается.
drop-field fieldname [ , fieldname2 ...] [from tablename1 [ , tablename2 ...]]
|
drop table |
Одну или несколько внутренних таблиц QlikView (и Qlik Sense) можно удалить из модели данных, а значит и из памяти в любой момент выполнения скрипта с помощью оператора drop table.
Допустимыми являются оба оператора: drop table и drop tables.
drop-table tablename [, tablename2 ...]
|
Execute |
Оператор Execute используется для запуска других программ в ходе загрузки данных QlikView (и Qlik Sense). Например, для выполнения необходимых преобразований. Execute commandline
|
Force |
Оператор force инициирует интерпретацию в программе QlikView (и Qlik Sense) имен и значений полей последующих операторов LOAD и SELECT, как записанных только символами верхнего регистра, только символами нижнего регистра, всегда прописными буквами или как есть (смешанными). Этот оператор позволяет ассоциировать значения полей в таблицах, выполненных в соответствии с различными условными обозначениями. Force ( capitalization | case upper | case lower | case mixed )
|
LOAD |
Оператор LOAD загружает поля из файла, из определенных в скрипте данных, из ранее загруженной таблицы, из веб-страницы, из результата последующего оператора SELECT или путем создания данных. Load [ distinct ] *fieldlist
|
Let |
Оператор let создан как дополнение к оператору set, используемому для определения переменных скрипта. Оператор let, в отличие от оператора set, вычисляет выражение, расположенное справа от знака «=» до присваивания его переменной. Let variablename=expression
|
Loosen Table |
Одну или несколько внутренних таблиц данных в программе QlikView (и Qlik Sense) можно явно объявить слабосвязанными в ходе выполнения скрипта с помощью оператора Loosen Table. Использование одного или нескольких операторов Loosen Table в скрипте приведет к тому, что программа QlikView (и Qlik Sense) будет игнорировать параметры таблиц, считая их ставшими слабосвязанными до выполнения скрипта. loosen-table tablename [ , tablename2 ...]
|
Map … using |
Оператор map … using используется для сопоставления определенных значений полей или выражений со значениями в определенной таблице сопоставления. Таблицу сопоставления можно создать с помощью оператора Mapping. Map *fieldlist Using mapname
|
NullAsNull |
Оператор NullAsNull отключает преобразование значений NULL в строчные значения, ранее заданные с помощью оператора NullAsValue. NullAsNull *fieldlist
|
NullAsValue |
Оператор NullAsValue указывает, для каких из полей обнаруженные значения NULL должны быть преобразованы в значения. NullAsValue *fieldlist
|
Qualify |
Оператор Qualify используется для включения квалификации имен полей, т. е. имена полей получат имя таблицы в качестве префикса. Qualify *fieldlist
|
Rem |
Оператор rem служит для вставки замечаний или комментариев в скрипт или для временного отключения операторов скрипта без их удаления. Rem string
|
Rename Field |
Эта функция скрипта переименовывает одно или несколько существующих полей в программе QlikView (и Qlik Sense) после их загрузки. rename-field (using mapname | oldname to newname{ , oldname to newname })
|
Rename Table |
Эта функция скрипта переименовывает одну или несколько существующих внутренних таблиц в программе QlikView (и Qlik Sense) после их загрузки. rename-table (using mapname | oldname to newname{ , oldname to newname })
|
Section |
Оператор section позволяет определить, следует ли рассматривать последующие операторы LOAD и SELECT в качестве данных или определения прав доступа. Section (access | application)
|
Select |
Выбор полей из источника данных ODBC или поставщика OLE DB осуществляется с помощью стандартных операторов SQL SELECT. Однако то, принимаются операторы SELECT или нет, зависит в основном от используемого драйвера ODBC или поставщика OLE DB. Select [all | distinct | distinctrow | top n [percent] ] *fieldlist
|
Set |
Оператор set используется для определения переменных скрипта. Эти переменные можно использовать для подстановки строк, путей, драйверов и т. д. Set variablename=string
|
Sleep |
Оператор sleep приостанавливает выполнение скрипта на указанное время. Sleep n
|
SQL |
Оператор SQL позволяет отправлять произвольную команду SQL посредством подключения ODBC или OLE DB. SQL sql_command
|
SQLColumns |
Оператор sqlcolumns возвращает набор полей с описанием столбцов источника данных ODBC или OLE DB, с которыми выполнена операция connect. |
SQLTables |
Оператор sqltables возвращает набор полей с описанием таблиц источника данных ODBC или OLE DB, с которыми выполнена операция connect. |
SQLTypes |
Оператор sqltypes возвращает набор полей с описанием типов источника данных ODBC или OLE DB, с которыми выполнена операция connect. |
Star |
Строку, которая представляет набор всех значений поля в базе данных, можно определить с помощью оператора star. Она влияет на последующие операторы LOAD и SELECT. Star is [string ]
|
Store |
Эта функция скрипта создает файл QVD или CSV. Store [ *fieldlist from] table into filename [ format-spec ];
|
Tag |
Эта функция скрипта предоставляет возможность присваивать теги одному или нескольким полям. Если делается попытка присвоить тег имени поля, отсутствующему в документе, то эта операция будет проигнорирована. Если обнаружены конфликты между именами полей или тегов, то используется последнее значение. Tag fields fieldlist using mapname Tag field fieldname with tagname
|
Trace |
Оператор trace записывает строку в окно Ход выполнения скрипта и в файл журнала скрипта, если тот используется. Он очень полезен для отладки. Расширение $, добавляемое к переменным, вычисляемым до оператора trace, позволяет настроить сообщение. Trace string
|
Unmap |
Оператор Unmap деактивирует значение поля mapping, заданное предыдущим оператором Map … Using для последующих загружаемых полей. Unmap *fieldlist
|
Unqualify |
Оператор Unqualify используется для снятия уточнения имен полей, которое ранее было включено оператором Qualify. Unqualify *fieldlist
|
Untag |
Предоставляет возможность удалить теги из одного или нескольких полей. Если делается попытка снять тег с имени поля, отсутствующего в документе, то эта операция будет проигнорирована. Если обнаружены конфликты между именами полей или тегов, то используется последнее значение. Untag fields fieldlist using mapname
|
Alias
Оператор alias используется для установки псевдонима, по которому будет переименовано поле при включении в следующий скрипт.
alias fieldname as aliasname {,fieldname as aliasname}
Аргументы:
Аргумент | Описание |
---|---|
fieldname | Имя поля в исходных данных |
aliasname | Имя псевдонима, которое требуется использовать взамен. |
Пример | Результат |
---|---|
|
|
|
Изменения имени, определенные данным оператором, применяются ко всем последующим операторам SELECT и LOAD. Новый псевдоним для имени поля может быть задан с помощью нового оператора alias в любой последующей точке скрипта. |
Binary
Оператор binary используется для загрузки данных из другого документа QlikView (и Qlik Sense), включая данные секции доступа. Он не загружает данные макета или переменные.
binary [path] filename
Аргументы:
Аргумент | Описание |
---|---|
filename | Имя файла, включая расширение файла .qvw |
path | Абсолютный или относительный путь к файлу ..qvw, содержащему эту строку скрипта. Абсолютный путь необходим, если файл находится в расположении, отличном от QlikView (и Qlik Sense).
|
|
В этом примере файл customer.qvw должен быть расположен в рабочем каталоге QlikView (и Qlik Sense). |
|
В данном примере используется абсолютный путь к файлу. |
Comment field
Позволяет отображать комментарии поля (метаданные) из баз данных и электронных таблиц. Имена полей, отсутствующие в документе, будут игнорироваться. Если имя поля встречается несколько раз, используется последнее значение.
comment [fields] *fieldlist using mapname
comment [field] fieldname with comment
Таблица сопоставления должна включать в себя два столбца: в первом содержатся имена полей, а во втором — комментарии.
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist | Список разделенных запятыми полей, подлежащих комментированию. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ? . При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. |
mapname | Имя таблицы сопоставления, считанной ранее в операторе сопоставления LOAD или SELECT. |
fieldname | Имя поля, для которого необходимо добавить комментарий. |
comment | Комментарий, который следует добавить к полю. |
mapping LOAD * inline [
a,b
Alpha,This field contains text values
Num,This field contains numeric values
];
comment fields using commentmap;
comment field Num with '*A field containing numbers';
comment Gamma with 'Mickey Mouse field';
Comment table
Позволяет отображать комментарии таблицы (метаданные) из баз данных или электронных таблиц.
Имена таблиц, отсутствующие в документе, будут игнорироваться. Если имя таблицы встречается несколько раз, используется последнее значение. Для чтения комментариев из источника данных может использоваться ключевое слово.
comment [tables] tablelist using mapname
comment [table] tablename with comment
Аргументы:
Аргумент | Описание |
---|---|
tablelist | (table{,table}) |
mapname | Имя таблицы сопоставления, считанной ранее в операторе сопоставления LOAD или SELECT. |
tablename | Имя таблицы, для которой необходимо добавить комментарий. |
comment | Комментарий, который следует добавить в таблицу. |
mapping LOAD * inline [
a,b
Main,This is the fact table
Currencies, Currency helper table
];
comment tables using Commentmap;
Direct Query
Оператор DIRECT QUERY обеспечивает доступ к таблицам через подключение ODBC или OLE DB с помощью функции Direct Discovery.
DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist] [DETAIL fieldlist] FROM tablelist [WHERE where_clause]
Ключевые слова DIMENSION, MEASURE и DETAIL можно использовать в любом порядке.
Предложения ключевых слов DIMENSION и FROM требуются во всех операторах DIRECT QUERY. Ключевое слово FROM должно стоять после ключевого слова DIMENSION.
Поля, указанные сразу после ключевого слова DIMENSION, загружаются в память и могут использоваться для создания связей между данными в памяти и данными Direct Discovery.
С помощью ключевого слова MEASURE можно определить поля, которые QlikView (и Qlik Sense) будет распознавать на «уровне метаданных». Фактические данные поля «Мера» находятся только в базе данных во время процесса загрузки данных. Они извлекаются через прямое подключение с помощью выражений, используемых в диаграмме.
Обычно поля с дискретными значениями, которые используются в качестве измерений, загружаются с ключевым словом DIMENSION, тогда как числа, используемые только при агрегировании, должны быть выбраны с ключевым словом MEASURE.
Поля DETAIL обеспечивают информацию или подробности, такие как поля с комментариями, которые пользователь может отобразить в простой таблице, которую можно развернуть и просмотреть подробности. Поля DETAIL не могут использоваться в выражениях диаграммы.
Оператор DIRECT QUERY не зависит от источника данных для источников, поддерживающих SQL. Поэтому один и тот же оператор DIRECT QUERY можно использовать для разных баз данных SQL без внесения изменений. Direct Discovery создает запросы для конкретных баз данных, если необходимо.
Синтаксис источника данных NATIVE можно использовать, если пользователь знает, какая база данных запрашивается, и хочет использовать специальные расширения для базы данных SQL. Синтаксис источника данных NATIVE поддерживается:
- В качестве выражения поля в предложениях DIMENSION и MEASURE
- В качестве содержимого предложения WHERE
DIMENSION Dim1, Dim2FROM TableName
MEASURE
NATIVE ('X % Y') AS X_MOD_Y
DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE X, Y
FROM TableName
WHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Аргументы:
Аргумент | Описание |
---|---|
fieldlist |
Список спецификаций поля, разделенных запятыми, fieldname {, fieldname}. Спецификация поля может быть именем поля. В этом случае такое же имя используется для имени столбца базы данных и имени поля QlikView (и Qlik Sense). Также спецификация поля может быть «полем alias». В этом случае выражению базы данных или имени столбца задается имя поля QlikView (и Qlik Sense). |
tablelist | Список имен таблиц или видов в базе данных, из которых загружаются данные. Как правило, это просмотры, содержащие оператор JOIN, выполненный над базой данных. |
where_clause |
Здесь не приведено полное описание синтаксиса предложений базы данных WHERE, но большинство «реляционных выражений» SQL разрешено использовать, включая вызовы функций, оператор LIKE для строк, IS NULL и IS NOT NULL, а оператор IN. BETWEEN не включен. NOT — это унарный оператор, в отличие от модификатора на определенные ключевые слова. Примеры:
WHERE x > 100 AND "Region Code" IN ('south', 'west')
WHERE Code IS NOT NULL and Code LIKE '%prospect' WHERE NOT X in (1,2,3) Последний пример не может быть записан как:
WHERE X NOT in (1,2,3) |
В этом примере используется таблица базы данных с именем TableName, содержащая поля Dim1, Dim2, Num1, Num2 и Num3. Поля Dim1 и Dim2 будут загружены в набор данных QlikView (и Qlik Sense).
DIRECT QUERY DIMENSTION Dim1, Dim2 MEASURE Num1, Num2, Num3 FROM TableName ;
Поля Dim1 и Dim2 будут доступны для использования в качестве измерений. Поля Num1, Num2 и Num3 будут доступны для агрегирований. Поля Dim1 и Dim2 также доступны для агрегирований. Тип агрегирований, для которого могут использоваться поля Dim1 и Dim2, зависит от их типов данных. Например, во многих случаях поля DIMENSION содержат строковые данные, такие как имена или номера счетов. Эти поля нельзя суммировать, но их можно посчитать: count(Dim1)
.
Например, оператор SELECT:
SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;
можно изменить на следующий оператор DIRECT QUERY:
DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber
MEASURE
SubTotal,
TaxAmt
DETAIL
OrderDate
FROM MyDB.Sales.SalesOrderHeader;
Списки полей Direct Discovery
Список полей — это список спецификаций поля, разделенных запятыми: fieldname {, fieldname}. Спецификация поля может быть именем поля. В этом случае такое же имя используется для имени столбца базы данных и имени поля. Также спецификация поля может быть «полем alias». В этом случае выражению базы данных или имени столбца задается имя поля QlikView (и Qlik Sense).
Имена полей могут быть простыми именами или заключенными в кавычки. Простое имя начинается с буквенного символа Юникода и состоит из комбинации букв, цифр и знаков подчеркивания. Имена в кавычках начинаются с двойной кавычки и содержат любую последовательность символов. Если имя, заключенное в кавычки, содержит двойные кавычки, эти кавычки представляются в виде двух смежных двойных кавычек.
Имена полей QlikView (и Qlik Sense) используются с учетом регистра. Имена полей базы данных могут учитывать или не учитывать регистр, в зависимости от базы данных. Запрос Direct Discovery сохраняет регистр всех идентификаторов полей и псевдонимов. В следующем примере псевдоним "MyState" используется для внутренних целей для сохранения данных из столбца базы данных "STATEID".
DIRECT QUERY Dimension STATEID as MyState Measure AMOUNT from SALES_TABLE;
Это отличается от результата использования оператора SQL Select с псевдонимом. Если псевдоним не заключен в кавычки, результат будет содержать регистр по умолчанию столбца, возвращенного целевой базой данных. В следующем примере оператор SQL Select для базы данных Oracle создает "MYSTATE," со всеми буквами в верхнем регистре, как и внутренний псевдоним QlikView (и Qlik Sense), даже если в псевдониме используются символы в разном регистре. Оператор SQL Select использует имя столбца, возвращенное базой данных, которое в случае Oracle состоит из всех символов в верхнем регистре.
SQL Select STATEID as MyState, STATENAME from STATE_TABLE;
Чтобы избежать такого поведения, для указания псевдонима используйте оператор LOAD.
Load STATEID as MyState, STATENAME;
SQL Select STATEID, STATEMENT from STATE_TABLE;
В данном примере столбец "STATEID" сохраняется QlikView (и Qlik Sense) для внутренних целей в качестве "MyState".
Большинство скалярных выражений базы данных разрешено использовать в качестве спецификаций поля. Вызовы функций также можно использовать в качестве спецификаций поля. Выражения могут содержать константы: булевы, числовые или строки, заключенные в одиночные кавычки (встроенные одинарные кавычки представляются в виде двух смежных одинарных кавычек.).
DIRECT QUERY DIMENSION "SalesOrderID" AS "Sales Order ID" MEASURE SubTotal,TaxAmt,(SubTotal-TaxAmt) AS "Net Total" FROM AdventureWorks.Sales.SalesOrderHeader
DIRECT QUERY DIMENSION (2*Radius*3.14159) AS Circumference, Molecules/6.02e23 AS Moles MEASURE Num1 AS numA FROM TableName
DIRECT QUERY DIMENSION concat(region, 'code') AS region_code MEASURE Num1 AS NumA FROM TableName
Direct Discovery не поддерживает использование агрегирования в операторах LOAD. При использовании агрегирования результат может быть непредсказуемым. Оператор LOAD не следует использовать следующим образом:
DIRECT QUERY DIMENSION stateid, SUM(amount*7) AS MultiFirst MEASURE amount FROM sales_table
SUM не следует использовать в операторе LOAD.
Direct Discovery также не поддерживает функции QlikView (и Qlik Sense) в операторах Direct Query. Например, использование следующей спецификации для поля DIMENSION приведет к возникновению ошибки, когда поле "Mth" будет использоваться в качестве измерения в диаграмме:
month(ModifiedDate) as Mth
Directory
Оператор Directory задает каталог, в котором будет выполняться поиск файлов данных в последующих операторах LOAD до создания нового оператора Directory.
Directory[path]
Если оператор Directory задается без параметра path или вообще опускается, программа QlikView (и Qlik Sense) будет искать в рабочем каталоге QlikView (и Qlik Sense).
Аргументы:
Аргумент | Описание |
---|---|
path |
Текст может интерпретироваться как путь к файлу qvw. Path — путь к файлу:
|
Directory c:\userfiles\data;
Disconnect
Оператор Disconnect разрывает текущее соединение ODBC/OLE DB/Custom. Этот оператор является дополнительным.
Disconnect
Подключение будет разорвано автоматически при выполнении нового оператора connect или после завершения выполнения скрипта.
Disconnect;
Drop field
Одно или несколько полей QlikView (и Qlik Sense) можно удалить из модели данных, а, значит, и из памяти в любой момент выполнения скрипта с помощью оператора drop field.
Drop field fieldname [ , fieldname2 ...] [from tablename1 [ , tablename2 ...]]
Drop fields fieldname [ , fieldname2 ...] [from tablename1 [ , tablename2 ...]]
Drop fields A,B;
Drop field A from X;
Drop fields A,B from X,Y;
Drop table
Одну или несколько внутренних таблиц QlikView (и Qlik Sense) можно удалить из модели данных, а значит и из памяти в любой момент выполнения скрипта с помощью оператора drop table.
drop table tablename [, tablename2 ...]
drop tables [ tablename [, tablename2 ...]
В результате выполнения этого действия произойдет удаление следующих элементов:
- Реальной таблицы.
- Всех полей, которые не относятся к остальным таблицам.
- Значений полей в остальных полях, относящихся только к отброшенным таблицам.
Пример | Результат |
---|---|
drop table Orders, Salesmen, T456a; |
Эта строка предписывает удаление из памяти трех таблиц. |
Tab1: Load * Inline [ Customer, Items, UnitPrice Bob, 5, 1.50 ]; Tab2: LOAD Customer, Sum( Items * UnitPrice ) as Sales resident Tab1 group by Customer; drop table Tab1; |
Как только таблица Tab2 создана, отбрасывается таблица Tab1. |
Execute
Оператор Execute используется для запуска других программ в ходе загрузки данных QlikView (и Qlik Sense). Например, для выполнения необходимых преобразований.
Операторы Execute выполняются только в том случае, если в параметрах пользователя включено переопределение безопасности.
execute commandline
Аргументы:
Аргумент | Описание |
---|---|
commandline | Текст, который может интерпретироваться операционной системой как командная строка. |
Execute winword macro.doc;
Execute cmd.exe /C C:\BatFiles\Log.bat;
Force
Оператор force инициирует интерпретацию в программе QlikView (и Qlik Sense) имен и значений полей последующих операторов LOAD и SELECT, как записанных только символами верхнего регистра, только символами нижнего регистра, всегда прописными буквами или как есть (смешанными). Этот оператор позволяет ассоциировать значения полей в таблицах, выполненных в соответствии с различными условными обозначениями.
Force ( capitalization | case upper | case lower | case mixed )
Если не указан ни один параметр, применяется force case mixed. Оператор force действует до создания следующего оператора force.
Оператор force не влияет на секцию доступа: регистр во всех загруженных значениях полей не учитывается.
Пример | Результат |
---|---|
В данном примере показано принудительное использование прописных букв. FORCE Capitalization;Capitalization: LOAD * Inline [ ab Cd eF GH ]; |
Таблица Capitalization содержит следующие значения: AbCd Ef Gh Все значения вводятся с первой прописной буквой. |
В данном примере показано принудительное использование верхнего регистра. FORCE Case Upper;CaseUpper: LOAD * Inline [ ab Cd eF GH ]; |
Таблица CaseUpper содержит следующие значения: ABCD EF GH Все значения вводятся в верхнем регистре. |
В данном примере показано принудительное использование нижнего регистра. FORCE Case Lower;CaseLower: LOAD * Inline [ ab Cd eF GH ]; |
Таблица CaseLower содержит следующие значения: abcd ef gh Все значения вводятся в нижнем регистре. |
В данном примере показано принудительное использование смешанного регистра. FORCE Case Mixed;CaseMixed: LOAD * Inline [ ab Cd eF GH ]; |
Таблица CaseMixed содержит следующие значения: abCd eF GH Все значения вводятся в том виде, в котором они отображаются в скрипте. |
Load
Оператор LOAD загружает поля из файла, из определенных в скрипте данных, из ранее загруженной таблицы, из веб-страницы, из результата последующего оператора SELECT или путем создания данных.
LOAD [ distinct ] fieldlistv [( from file [ format-spec ] |
from_field fieldassource [format-spec] inline data [ format-spec ] |
resident table-label | autogenerate size )] [ where criterion | while criterion ]
[ group_by groupbyfieldlist ] [order_by orderbyfieldlist ]
Аргументы:
Аргумент | Описание |
---|---|
distinct | distinct — это логическое условие, используемое в том случае, если должна быть загружена только первая из дублирующихся записей. |
fieldlist |
fieldlist ::= ( * | field {, field } )
Список полей, которые необходимо загрузить. Символ * в качестве списка полей обозначает все поля таблицы. field ::= ( fieldref | expression ) [as aliasname ]Определение поля должно всегда содержать литерал, ссылку на существующее поле или выражение. fieldref ::= ( fieldname |@fieldnumber |@startpos:endpos [ I | U | R | B | T] )fieldname — это текст, идентичный имени поля в таблице. Обратите внимание, что для указания имени поля необходимо заключить его в прямые двойные кавычки или квадратные скобки, если имя содержит пробелы. Иногда имена полей явно недоступны. В таких случаях используется другая нотация: @fieldnumber представляет номер поля в табличном файле с разделителями. Он должен быть положительным целым числом с предшествующим символом «@». Нумерация всегда начинается с 1 и идет до числа полей. @startpos:endpos представляет начальную и конечную позиции поля в файле с записями фиксированной длины. Позиции должны быть положительными целыми числами. Двум числами должен предшествовать символ «@», и они должны быть разделены двоеточием. Нумерация всегда начинается с 1 и содержит число позиций. В последнем поле элемент n используется как конечное положение.
expression может быть числовой или строковой функцией на основе одного или нескольких других полей в этой же таблице. Дополнительные сведения см. в справке по синтаксису выражений. as используется для назначения полю нового имени. |
from |
from используется в случае, если данные должны быть загружены из файла. file ::= [ path ] filename
Если путь отсутствует, программа QlikView (и Qlik Sense) выполняет поиск файла в каталоге, указанном оператором Directory. Если оператор Directory отсутствует, приложение QlikView (и Qlik Sense) выполняет поиск в рабочем каталоге, который обычно является каталогом, в котором находится файл QlikView (и Qlik Sense).
При серверной установке QlikView (и Qlik Sense) рабочим каталогом по умолчанию является C:\ProgramData\QlikTech\Documents. Рабочий каталог по умолчанию можно изменить в QlikView (и Qlik Sense) Management Console.
Элемент filename может содержать стандартные знаки подстановки DOS ( * и ? ). В результате будут загружены все файлы в указанном каталоге, удовлетворяющие критериям. format-spec ::= ( fspec-item { , fspec-item } )Спецификация формата состоит из списка нескольких элементов спецификации формата, заключенных в скобки. |
from_field | from_field используется в случае, если данные должны быть загружены из ранее загруженного поля.
fieldassource::=(tablename, fieldname) Поле — это имя ранее загруженных tablename и fieldname. format-spec ::= ( fspec-item {, fspec-item } )Спецификация формата состоит из списка нескольких элементов спецификации формата, заключенных в скобки. |
inline | inline используется в случае, если данные должны быть введены в скрипте, а не загружены из файла.
data ::= [ text ] Данные, введенные с использованием выражения inline, должны быть заключены в двойные или в квадратные скобки. Текст между ними интерпретируется так же, как и содержимое файла. Поэтому при вставке новой строки в текстовый файл ее также необходимо вставить в текст выражение inline, например, нажав клавишу Enter при вводе в скрипте. format-spec ::= ( fspec-item {, fspec-item } )Спецификация формата состоит из списка нескольких элементов спецификации формата, заключенных в скобки. |
resident |
Элемент resident используется в случае, если данные должны быть загружены из ранее загруженной таблицы.
table label — это метка, предшествующая оператору(-ам) LOAD или SELECT, используемым для создания исходной таблицы. В конце метки должно быть указано двоеточие. |
autogenerate |
autogenerate используется в случае, если данные должны быть автоматически созданы программой QlikView (и Qlik Sense).
size ::= number Number — это целое число, обозначающее число создаваемых записей. Список полей не должно содержать выражения, для которых требуются данные из базы данных. В выражениях допускается использовать только константы и функции без параметров (такие как rand() или recno()). |
where |
where — предложение, которое используется для указания того, нужно ли включить запись в выборку или нет. Выборка включается, если элемент criterion имеет значение True.
criterion — это логическое выражение. |
while |
while — это выражение, используемое для указания необходимости повторного чтения записи. Эта же запись читается, если для элемента criterion указано значение True. Чтобы быть полезным, выражение while обычно должно содержать функцию IterNo( ). criterion — это логическое выражение. |
group_by |
group by — это выражение, используемое для определения полей данных для агрегирования (группировки).Поля агрегирования должны быть включены таким же образом в загруженные выражения. Вне функций агрегирования в загруженных выражениях могут использоваться только поля агрегирования. groupbyfieldlist ::= (fieldname { ,fieldname } ) |
order_by | order by — это выражение, используемое для сортировки записей резидентной таблицы до их обработки оператором LOAD. Резидентная таблица может быть отсортирована по одному или нескольким полям в возрастающем или убывающем порядке. Сортировка осуществляется первично по числовому значению и дополнительно в порядке соответствия национальных параметров. Это выражение может использоваться, только если источником данных является резидентная таблица.
Поля заказов указывают поле для сортировки резидентной таблицы. Поле может быть указано по имени или по числу в резидентной таблице (первое поле имеет номер 1). orderbyfieldlist ::= fieldname [ sortorder ] { , fieldname [ sortorder ] } sortorder имеет значение asc для сортировки по возрастанию или desc для сортировки по убыванию. Если sortorder не указан, используется asc. fieldname, path, filename и aliasname — это текстовые строки, представляющие подразумеваемые соответствующие имена. Любое поле в исходной таблице может использоваться в качестве fieldname. Однако поля, созданные с помощью выражения (aliasname), не рассматриваются и не могут использоваться внутри одного оператора LOAD. |
Если источник данных не указан с помощью выражений from, inline, resident, from_field или autogenerate, данные будут загружены из результата сразу после выполнения оператора SELECT или LOAD. Последующий оператор не должен иметь префикс.
Загрузка различных форматов файлов
Загрузка файла данных с разделителями с параметрами по умолчанию:
LOAD * from data1.csv;Загрузка файла с разделителями с точкой в качестве разделителя и со встроенными метками:
LOAD * from 'c:\userfiles\data1.csv' (ansi, txt, delimiter is ',', embedded labels);Загрузка файла с разделителями с табуляцией в качестве разделителя и со встроенными метками:
LOAD * from 'c:\userfiles\data2.txt' (ansi, txt, delimiter is '\t', embedded labels);Загрузка файла dif со встроенными заголовками:
LOAD * from file2.dif (ansi, dif, embedded labels);Загрузка трех полей из файла с фиксированными записями без заголовков:
LOAD @1:2 as ID, @3:25 as Name, @57:80 as City from data4.fix (ansi, fix, no labels, header is 0, record is 80);Загрузка файла QVX, указывающего абсолютный путь:
LOAD * from C:\qdssamples\xyz.qvx (qvx);Выбор определенных полей, переименование и вычисление полей
Загрузка только трех указанных полей из файла с разделителями:
LOAD FirstName, LastName, Number from data1.csv;Переименование первого поля на A, а второго на B при загрузке файла без меток:
LOAD @1 as A, @2 as B from data3.txt (ansi, txt, delimiter is '\t', no labels);Загрузка Name путем объединения FirstName, символа пробела и LastName:
LOAD FirstName&' '&LastName as Name from data1.csv;Загрузка Quantity, Price и Value (продукт Quantity и Price):
LOAD Quantity, Price, Quantity*Price as Value from data1.csv;Выбор определенных записей
Загрузка только уникальных символов, дубликаты будут удалены:
LOAD distinct FirstName, LastName, Number from data1.csv;Загрузка только записей, где поле Litres имеет значение больше нуля:
LOAD * from Consumption.csv where Litres>0;Загрузка данных не из файла и автоматически генерируемых данных
Загрузка таблицы с встроенными данными, двух полей с именамиCatID и Category:
LOAD * Inline[CatID, Category
0,Regular
1,Occasional
2,Permanent];
Загрузка таблицы со встроенными данными, трех полей с именами UserID, Password и Access:
LOAD * Inline [UserID, Password, AccessA, ABC456, User
B, VIP789, Admin];
Загрузка таблицы с 10 000 строк. Поле A будет содержать количество прочитанных записей (1,2,3,4,5…), а поле B будет содержать произвольное число в диапазоне от 0 до 1:
LOAD RecNo( ) as A, rand( ) as B autogenerate(10000);Загрузка данных из ранее загруженной таблицы
Сначала мы загружаем табличный файл с разделителями и присваиваем ему имя tab1:
tab1:SELECT A,B,C,D from transtable;
Загрузка полей из уже загруженной таблицы tab1 в таблицу tab2:
tab2:LOAD A,B,month©,A*B+D as E resident tab1;
Загрузка полей из уже загруженной таблицы tab1, но только записей, где A больше B:
tab3:LOAD A,A+B+C resident tab1 where A>B;
Загрузка полей из уже загруженной таблицы tab1, сортированных по значению A:
LOAD A,B*C as E resident tab1 order by A;Загрузка полей из уже загруженной таблицы tab1, сортированных по первому полю, а затем по второму полю:
LOAD A,B*C as E resident tab1 order by 1,2;Загрузка полей из уже загруженной таблицы tab1, сортированных по значению C в порядке убывания, затем по значению B в порядке возрастания, а затем по первому полю в порядке убывания:
LOAD A,B*C as E resident tab1 order by C desc, B asc, 1 des;Загрузка данных из ранее загруженных полей
Загрузка поля Types из ранее загруженной таблицы Characters в качестве A:
LOAD A from_field (Characters, Types);Загрузка данных из следующей таблицы (предварительная загрузка)
Загрузка полей A, B, а также вычисляемых полей X и Y из таблицы Table1, которая загружается в следующем операторе SELECT:
LOAD A, B, if(C>0,'positive','negative') as X, weekday(D) as Y;SELECT A,B,C,D from Table1;
Группировка данных
Загрузка полей, группированных (агрегированных) по значению ArtNo:
LOAD ArtNo, round(Sum(TransAmount),0.05) as ArtNoTotal from table.csv group by ArtNo;Загрузка полей, группированных (агрегированных) по значениям Week и ArtNo:
LOAD Week, ArtNo, round(Avg(TransAmount),0.05) as WeekArtNoAverages from table.csv group by Week, ArtNo;Последовательное чтение одной записи
В этом примере имеется входной файл Grades.csv, содержащий оценки для каждого студента, собранные в одном поле:
Student,GradesMike,5234
John,3345
Pete,1234
Paul,3352
Оценки по 5-балльной шкале выставлены по предметам: Math, English, Science и History. Оценки можно выделить в отдельные значения путем многократного считывания каждой записи с помощью выражения while, использующего функцию IterNo( ) в качестве счетчика. При каждом считывании оценка извлекается функцией Mid и сохраняется в значении Grade, а предмет выбирается с помощью функции pick и сохраняется в значении Subject. Конечное выражение while содержит проверку на считывание всех оценок (четыре на студента в данном случае), что означает необходимость считывания записи о следующем студенте.
MyTab:LOAD Student,
mid(Grades,IterNo( ),1) as Grade,
pick(IterNo( ), 'Math', 'English', 'Science', 'History') as Subject from Grades.csv
while IsNum(mid(Grades,IterNo(),1));
Результатом будет таблица, содержащая следующие данные:
Student | Subject | Grade |
---|---|---|
John | English | 3 |
John | History | 5 |
John | Math | 3 |
John | Science | 4 |
Mike | English | 2 |
Mike | History | 4 |
Mike | Math | 5 |
Mike | Science | 3 |
Paul | English | 3 |
Paul | History | 2 |
Paul | Math | 3 |
Paul | Science | 5 |
Pete | English | 2 |
Pete | History | 4 |
Pete | Math | 1 |
Pete | Science | 3 |
Элементы спецификации формата
Каждый элемент спецификации формата задает определенное свойство табличного файла:
fspec-item ::=
[ ansi | oem | mac | UTF-8 | Unicode | txt | fix | dif | biff | ooxml | html | xml | qvd | qvx | delimiter is
char | no eof | embedded labels | explicit labels | no labels | table is [tablename] | header is n |
header is line | header is n lines | comment is string | record is n |
record is line | record is n lines | no quotes |msq ]
Пользуйтесь информацией из таблицы по каждой функции, чтобы увидеть краткое описание и синтаксис каждой функции.
Character set |
Набор символов — это спецификатор файла для оператора LOAD, который определяет набор символов, используемый в файле. ansi | oem | mac | UTF-8 | Unicode | codepage is |
См.: Набор символов |
Table format |
Формат таблицы — это спецификатор файла для оператора LOAD, который определяет тип файла. Если ничего не было указано, то используется формат .txt. txt | fix | dif | biff | ooxml | html | xml | qvd | qvx
См.: Table format |
Delimiter |
Для табличных файлов с разделителями можно указать произвольный разделитель с помощью описателя delimiter is. Этот описатель применяется только к файлам с разделителем формата .txt. delimiter is char
|
Header is |
Задает размер заголовка в табличных файлах. Произвольная длина заголовка задается с помощью описателя header is. Заголовок представляет собой текстовый раздел, не используемый программой QlikView (и Qlik Sense). header-is n Header is line Header is n lines
|
Comment is |
Если в файле с исходными данными есть строки, являющиеся комментариями, префикс комментария можно определить с помощью элемента Comment is. Задайте элемент commentprefix для символа или строки, с которой начинается строка комментария, и при загрузке данных эти строки будут игнорироваться. Comment is commentprefix
|
labels |
Labels — это спецификатор файла для оператора LOAD, который определяет нахождение имен полей в файле. embedded labels | explicit labels| no labels
|
no eof |
Спецификатор no eof используется для игнорирования символа конца файла при загрузке файлов с разделителями в формате .txt. |
quotes |
Элемент Quotes представляет собой файловый спецификатор для оператора LOAD, который определяет, могут ли использоваться кавычки, а также последовательность кавычек и разделителей. Только текстовые файлы. no quotes msq
|
Record is |
При использовании файлов с фиксированной длиной записи укажите длину записи с помощью описателя record is. record-is n Record is line Record is n lines
|
XML |
Этот спецификатор скрипта используется при загрузке файлов xml. Допустимые параметры для спецификатора XML перечислены в синтаксических правилах. xmlsax xmlsimple pattern is path
См.: XML |
Набор символов
Набор символов — это спецификатор файла для оператора LOAD, который определяет набор символов, используемый в файле.
utf8 | unicode | ansi | oem | mac | codepage is
Аргументы:
Аргумент | Описание |
---|---|
utf8 | Набор символов UTF-8 |
unicode | Набор символов Unicode |
ansi | Windows, кодовая страница 1252 |
oem | DOS, OS/2, AS400 и другие |
mac | Кодовая страница 10000 |
codepage is | Со спецификатором codepage можно использовать любую кодовую страницу Windows как N . |
Ограничения:
Преобразование из набора символов oem не реализовано для MacOS. Если не выбран ни один набор, используется кодовая страница 1252 для Windows.
LOAD * from a.txt (unicode, txt, delimiter is ',' , embedded labels)
LOAD * from a.txt (codepage is 10000, txt, delimiter is ',' , no labels)
Table format
Формат таблицы — это спецификатор файла для оператора LOAD, который определяет тип файла. Если ничего не было указано, то используется формат .txt.
txt |
В текстовом файле с разделителями столбцы в таблице разделены символом разделителя. См.: Delimiter |
fix |
В файле с записями фиксированной длины каждое поле ограничено точным числом символов. Обычно многие файлы с фиксированной длиной содержат записи, разделенные символом перевода строки. Но существует много других вариантов, как указать размер записи в байтах или охватить более одной линии с помощью Record is. См.: Record is
Если данные содержат многобайтовые символы, разрывы полей могут сместиться, поскольку этот формат основан на фиксированной длине в байтах.
|
dif | В файле .dif (Data Interchange Format — формат обмена данными) для определения таблицы используется особый формат. |
biff | Программа QlikView (и Qlik Sense) может также интерпретировать данные в стандартных файлах Excel средствами формата biff (Binary Interchange File Format). |
ooxml | Для файлов Excel 2007 и более поздних версий используется формат ooxml .xslx. |
html | Если таблица является частью html-страницы или файла, используйте формат html. |
xml | xml (расширяемый язык разметки) — это обычный язык разметки, используемый для представления структур данных в текстовом формате. |
qvd | Формат qvd представляет собой собственный формат файлов QVD, экспортируемых из документа QlikView (и Qlik Sense). |
qvx | Формат qvx представляет собой формат файла или потока для высокоэффективной передачи в программу QlikView (и Qlik Sense). |
Delimiter
Для табличных файлов с разделителями можно указать произвольный разделитель с помощью описателя delimiter is. Этот описатель применяется только к файлам с разделителем формата .txt.
delimiter is char
Аргументы:
Аргумент | Описание |
---|---|
char | Указывает один символ из 127 ASCII символов. |
Могут использоваться следующие значения:
'\t' | представляет знак табуляции и указывается с кавычками или без них. |
'\\' | представляет обратную косую черту ( \ ). |
'spaces' | представляет все комбинации одного или нескольких пробелов. Непечатные символы ASCII с кодом менее 32, за исключением CR и LF, будут интерпретироваться как пробелы. |
Если ничего не указано, используется delimiter is ','.
LOAD * from a.txt (utf8, txt, delimiter is ',' , embedded labels);
No eof
Спецификатор no eof используется для игнорирования символа конца файла при загрузке файлов с разделителями в формате .txt.
no eof
Если используется спецификатор no eof, символ с кодовой точкой 26, который в противном случае обозначает конец файла, игнорируется и может быть частью значения поля.
Этот спецификатор применяется только к текстовым файлам с разделителями.
LOAD * from a.txt (txt, utf8, embedded labels, delimiter is ' ', no eof);
Labels
Labels — это спецификатор файла для оператора LOAD, который определяет нахождение имен полей в файле.
embedded labels|explicit labels|no labels
Имена полей могут находиться в разных местах файла. Если первая запись содержит имена полей, следует использовать embedded labels. Если имена полей не найдены, следует использовать no labels. В файлах dif иногда используются отдельные разделы заголовка с явными именами полей. В таких случаях следует использовать explicit labels. Если не выбран ни один параметр, для файлов dif также используются embedded labels.
LOAD * from a.txt (unicode, txt, delimiter is ',' , embedded labels
LOAD * from a.txt (codePage is 1252, txt, delimiter is ',' , no labels)
Header is
Задает размер заголовка в табличных файлах. Произвольная длина заголовка задается с помощью описателя header is. Заголовок представляет собой текстовый раздел, не используемый программой QlikView (и Qlik Sense).
header is n header is line header is n lines
Длина заголовка может быть задана в байтах (header is n) или в строках (header is line или header is n lines). n должно быть положительным целым числом, представляющим длину заголовка. Если ничего не указано, используется header is 0. Спецификатор header is применяется только к табличным файлам.
Вот пример таблицы источника данных, содержащей строку с текстом заголовка, которая не должна интерпретироваться как данные программы QlikView (и Qlik Sense).
Col1,Col2
a,B
c,D
С помощью спецификатора header is 1 lines первая линия не будет загружена как данные. В примере благодаря спецификатору embedded labels программа QlikView (и Qlik Sense) интерпретирует первую неисключенную линию как содержащую метки поля.
FROM header.txt
(txt, embedded labels, delimiter is ',', msq, header is 1 lines);
В результате образуется таблица с двумя полями, Col1 и Col2.
Record is
При использовании файлов с фиксированной длиной записи укажите длину записи с помощью описателя record is.
Record is n Record is line Record is n lines
Аргументы:
Аргумент | Описание |
---|---|
n | Указывает длину записи в байтах. |
line | Указывает длину записи в качестве одной строки. |
n lines | Указывает длину записи в строках, где n — это положительное целое число, представляющее длину записи. |
Ограничения:
Спецификатор record is применяется только к файлам fix.
Quotes
Элемент Quotes представляет собой файловый спецификатор для оператора LOAD, который определяет, могут ли использоваться кавычки, а также последовательность кавычек и разделителей. Только текстовые файлы.
no quotes msq
Если спецификатор опущен, можно использовать стандартные кавычки " " или ' ', но только в том случае, если они являются первым и последним непустым символом в значении поля.
Аргументы:
Аргумент | Описание |
---|---|
no quotes | Используется, если кавычки не должны приниматься в текстовом файле. |
msq |
Используется для задания современного стиля кавычек, которые позволяют вводить в поля многострочное содержимое. Поля, содержащие символы конца строки, необходимо заключать в двойные кавычки. Существует одно ограничение для параметра msq: если в качестве первого или последнего символа в содержимом строки указан один символ двойных кавычек («/»), то он будет интерпретирован как начало многострочного содержимого, что в свою очередь может привести к непредсказуемым результатам при загрузке набора данных. В этом случае следует использовать стандартные кавычки для пропуска спецификатора. |
XML
Этот спецификатор скрипта используется при загрузке файлов xml. Допустимые параметры для спецификатора XML перечислены в синтаксических правилах.
xmlsax xmlsimple pattern is path
Элементы xmlsax и xmlsimple взаимоисключающие. При использовании xml можно указать только один вариант. При использовании pattern считывание файла начинается с начала указанного тега и идет до его конца. Если path содержит пробелы, то такой путь необходимо заключить в кавычки.
Let
Оператор let создан как дополнение к оператору set, используемому для определения переменных скрипта. Оператор let, в отличие от оператора set, вычисляет выражение, расположенное справа от знака «=» до присваивания его переменной.
Let variablename=expression
Слово let может игнорироваться, но при этом этот оператор становится оператором управления. Такой оператор без ключевого слова let должен находиться в одной строке скрипта и может заканчиваться точкой с запятой или символом конца строки.
Пример | Результат |
---|---|
Set x=3+4; Let y=3+4; z=$(y)+1; |
|
Let T=now( ); | $(T) получит значение текущего времени. |
Loosen Table
Одну или несколько внутренних таблиц данных в программе QlikView (и Qlik Sense) можно явно объявить слабосвязанными в ходе выполнения скрипта с помощью оператора Loosen Table. Когда таблица становится слабо связанной, все ассоциации между значениями полей в таблице удаляются. Похожего эффекта можно добиться, если загрузить все поля слабо связанной таблицы в качестве независимых несвязанных таблиц. Слабо связанные таблицы можно использовать во время проверки для временного разделения частей структуры данных. Слабо связанная таблица в обозревателе таблиц обозначается пунктирной линией и стрелкой. Использование одного или нескольких операторов Loosen Table в скрипте приведет к тому, что программа QlikView (и Qlik Sense) будет игнорировать параметры таблиц, считая их ставшими слабосвязанными до выполнения скрипта.
Loosen Table tablename [ , tablename2 ...] Loosen Tablestablename [ , tablename2 ...]
Можно использовать оба варианта синтаксиса: Loosen Table или Loosen Tables.
SELECT * from Trans;
Loosen Table Tab1;
Map
Оператор map … using используется для сопоставления определенных значений полей или выражений со значениями в определенной таблице сопоставления. Таблицу сопоставления можно создать с помощью оператора Mapping.
Map *fieldlist Using mapname
Автоматическое сопоставление выполняется для полей, загруженных после выполнения оператора Map … Using вплоть до конца выполнения скрипта или появления оператора Unmap.
Сопоставление в цепочке событий, заканчивающейся сохранением поля во внутренней таблице QlikView (и Qlik Sense), выполняется в последнюю очередь. Таким образом, сопоставление выполняется не при каждом появлении имени поля в выражении, а тогда, когда значение сохранено во внутренней таблице под определенным именем поля. Если необходимо выполнить сопоставление на уровне выражения, используйте функцию Applymap().
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist | Разделенный запятыми список полей, которые следует сопоставить, начиная с этой точки выполнения скрипта. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. |
mapname | Имя таблицы сопоставления, считанной ранее в операторе mapping load или mapping select. |
Пример | Результат |
---|---|
Map Country Using Cmap; | Позволяет выполнять сопоставление поля Country с помощью карты Cmap. |
Map A, B, C Using X; | Позволяет выполнять сопоставление полей A, B и C с помощью карты X. |
Map * Using GenMap; | Позволяет сопоставлять все поля с помощью элемента GenMap. |
NullAsNull
Оператор NullAsNull отключает преобразование значений NULL в строчные значения, ранее заданные с помощью оператора NullAsValue.
NullAsNull *fieldlist
Оператор NullAsValue работает как переключатель и может быть включен/выключен несколько раз в рамках скрипта с помощью оператора NullAsValue или NullAsNull.
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist | Список полей, разделенных запятыми, для которых следует включить NullAsNull. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. |
LOAD A,B from x.csv;
NullAsValue
Оператор NullAsValue указывает, для каких из полей обнаруженные значения NULL должны быть преобразованы в значения.
NullAsValue *fieldlist
По умолчанию программа QlikView (и Qlik Sense) рассматривает значения NULL как отсутствующие или неопределенные сущности. Тем не менее, в некоторых контекстах баз данных значения NULL считаются особыми значениями, а не просто отсутствующими значениями. Связь значений NULL с другими значениями NULL, которая обычно запрещена, можно создать с помощью оператора NullAsValue.
Оператор NullAsValue работает как переключатель и выполняется для последующих операторов загрузки. Его можно снова выключить с помощью оператора NullAsNull.
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist | Список полей, разделенных запятыми, для которых следует включить NullAsValue. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. |
Set NullValue = 'NULL';
LOAD A,B from x.csv;
Qualify
Оператор Qualify используется для включения квалификации имен полей, т. е. имена полей получат имя таблицы в качестве префикса.
Qualify *fieldlist
Автоматическое объединение полей с одинаковыми именами в разных таблицах можно отключить с помощью оператора qualify, который уточняет имя поля с помощью имени таблицы. В случае уточнения имена полей будут изменены после их нахождения в таблице. Новое имя будет иметь вид tablename.fieldname. Tablename соответствует метке текущей таблицы или, при отсутствии метки, имени после слова from в операторах LOAD и SELECT.
Уточнение будет выполнено для всех полей, загруженных после оператора qualify.
Когда запускается скрипт, функция уточнения всегда отключена по умолчанию. Уточнение имени поля можно включить в любое время с помощью оператора qualify. Уточнение можно выключить в любое время с помощью оператора Unqualify.
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist | Список полей, разделенных запятыми, для которых следует включить уточнение. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. |
LOAD A,B from x.csv;
LOAD A,B from y.csv;
Две таблицы x.csv и y.csv связываются только через A. В результате в трех полях отобразятся следующие значения: A, x.B, y.B.
При работе с неизвестной базой данных сначала полезно убедиться в том, что связаны только одно или несколько полей, как показано в данном примере:
unqualify TransID;
SQL SELECT * from tab1;
SQL SELECT * from tab2;
SQL SELECT * from tab3;
Для связей между таблицами tab1, tab2 и tab3 будет использоваться только TransID.
Rem
Оператор rem служит для вставки замечаний или комментариев в скрипт или для временного отключения операторов скрипта без их удаления.
Rem string
Весь текст между элементом rem и следующей точкой с запятой ; считается комментарием.
В скрипт можно добавить комментарии двумя другими способами:
- Можно создать комментарий в любом месте в скрипте, за исключением текста между двумя кавычками, для чего необходимо заключить необходимый фрагмент в символы /* и */.
- При вводе // в скрипте весь последующий текст справа в той же строке становится комментарием. (Обратите внимание на исключение //:, которое обычно является частью интернет-адреса).
Аргументы:
Аргумент | Описание |
---|---|
string | Произвольный текст. |
/* This is also a comment */
// This is a comment as well
Rename field
Эта функция скрипта переименовывает одно или несколько существующих полей в программе QlikView (и Qlik Sense) после их загрузки.
Можно использовать оба варианта синтаксиса: rename field или rename fields.
Rename Field (using mapname | oldname to newname{ , oldname to newname })
Rename Fields (using mapname | oldname to newname{ , oldname to newname })
Аргументы:
Аргумент | Описание |
---|---|
mapname | Имя ранее загруженной таблицы сопоставления, в которой содержится одна или несколько пар старых и новых имен полей. |
oldname | Старое имя поля. |
newname | Новое имя поля. |
Ограничения:
Два поля с разными именами не могут получить одинаковые имена при переименовании. Скрипт будет выполнен без ошибок, но второе поле не будет переименовано.
Mapping SQL SELECT oldnames, newnames from datadictionary;
Rename Fields using FieldMap;
Rename table
Эта функция скрипта переименовывает одну или несколько существующих внутренних таблиц в программе QlikView (и Qlik Sense) после их загрузки.
Можно использовать оба варианта синтаксиса: rename table или rename tables.
Rename Table (using mapname | oldname to newname{ , oldname to newname })
Rename Tables (using mapname | oldname to newname{ , oldname to newname })
Аргументы:
Аргумент | Описание |
---|---|
mapname | Имя ранее загруженной таблицы сопоставления, в которой содержится одна или несколько пар старых и новых имен таблиц. |
oldname | Старое имя таблицы. |
newname | Новое имя таблицы. |
Ограничения:
Две таблицы с разными именами не могут получить одинаковые имена при переименовании. Скрипт будет выполнен без ошибок, но вторая таблица не будет переименована.
SELECT * from Trans;
Rename Table Tab1 to Xyz;
Mapping LOAD oldnames, newnames from tabnames.csv;
Rename Tables using TabMap;
Search
Оператор Search используется для включения или исключения полей из функции поиска.
Search Include *fieldlist
Search Exclude *fieldlist
Можно использовать несколько операторов Search, чтобы обновить выборку полей, которые необходимо включить. Операторы оцениваются сверху вниз.
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist | Список полей, разделенных запятыми, которые необходимо включить или исключить из поиска. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. |
Search Include *; | Включить все поля в поиск. |
Search Exclude '*ID'; | Исключить из поиска все поля, оканчивающиеся элементом ID. |
Search Include ProductID; | Включить все поля ProductID в поиск. |
Комбинированным результатом этих трех операторов в такой последовательности будет исключение из поиска всех полей, оканчивающихся элементом ID, за исключением ProductID.
Section
Оператор section позволяет определить, следует ли рассматривать последующие операторы LOAD и SELECT в качестве данных или определения прав доступа.
Section (access | application)
Если ничего не указано, используется section application. Определение section действительно до тех пор, пока не будет создан новый оператор section.
Section application;
Select
Выбор полей из источника данных ODBC или поставщика OLE DB осуществляется с помощью стандартных операторов SQL SELECT. Однако то, принимаются операторы SELECT или нет, зависит в основном от используемого драйвера ODBC или поставщика OLE DB.
SELECT [all | distinct | distinctrow | top n [percent] ] fieldlist
From tablelist
[where criterion ]
[group by fieldlist [having criterion ] ]
[order by fieldlist [asc | desc] ]
[ (Inner | Left | Right | Full) join tablename on fieldref = fieldref ]
Более того, несколько операторов SELECT иногда могут соединяться в один посредством использования оператора union:
selectstatement Union selectstatement
Оператор SELECT интерпретируется драйвером ODBC или поставщиком OLE DB, поэтому могут возникать отклонения от общего синтаксиса SQL в зависимости от возможностей драйверов ODBC или поставщика OLE DB, например:
- as иногда недопустим, то есть aliasname должен сразу следовать за fieldname.
- as иногда является обязательным при использовании aliasname.
- distinct, as,where, group by, order by или union иногда не поддерживаются.
- Драйвер ODBC иногда допускает не все различные кавычки, перечисленные выше.
Аргументы:
Аргумент | Описание |
---|---|
distinct | distinct — это логическое условие, используемое в случае, если копии комбинаций значений в выбранных полях должны быть загружены только один раз. |
distinctrow | distinctrow — это логическое условие, используемое в случае, если копии записей в таблице источника должны быть загружены только один раз. |
fieldlist |
fieldlist ::= (*| field ) {, field } Список полей, которые необходимо выбрать. Символ «*» в качестве списка полей обозначает все поля таблицы. fieldlist ::= field {, field } Список одного или нескольких полей, разделенных запятыми. field ::= ( fieldref | expression ) [as aliasname ] Выражение может, к примеру, быть числовой или строковой функцией, основанной на одном или нескольких других полях. Некоторые из обычно принимаемых операторов и функций: +, -, *, /, & (объединение строк),sum(fieldname), count(fieldname), avg(fieldname)(average), month(fieldname) и т. д. Дополнительную информацию см. в документации к драйверу ODBC. fieldref ::= [ tablename. ] fieldname tablename и fieldname являются текстовыми строками, идентичными тому, что они подразумевают. Они должны быть заключены в прямые двойные кавычки, если они содержат, например, пробелы. Предложение as используется для назначения полю нового имени. |
from |
tablelist ::= table {, table } Список таблиц, из которых выбираются поля. table ::= tablename [ [as ] aliasname ] Элемент tablename может быть в кавычках, а может и не быть. |
where | where — предложение, которое используется для указания того, нужно ли включить запись в выборку или нет.
criterion является логическим выражением, которое иногда может быть очень сложным. Некоторые из принимаемых операторов: числовые операторы и функции, =,?<> или #(не равно), >,?>=,?<,?<=,?and, or,not, exists,some, all,in, а также новые операторы SELECT. Дополнительную информацию можно получить в документации драйвера ODBC или поставщика OLE DB. |
group by | group by — выражение, используемое для агрегирования (группировки) нескольких записей в одну. Внутри одной группы для определенного поля все записи должны иметь одинаковое значение или поле может использоваться только изнутри выражения, например, в виде суммы или среднего значения. Выражение, основанное на одном или нескольких полях, определяется в выражении символа поля. |
having | having — это предложение, используемое для классификации групп подобно тому, как предложение where используется для классификации записей. |
order by | order by — предложение, используемое для указания порядка сортировки результирующей таблицы оператора SELECT. |
join | join — это префикс, который указывает, необходимо ли объединить несколько таблиц в одну. Имена полей и имена таблиц должны заключаться в кавычки, если в них содержатся пробелы или буквы из национальных наборов символов. Когда программа QlikView (и Qlik Sense) автоматически создаст скрипт, драйвер ODBC или поставщик OLE DB, указанный в определении источника данных в операторе Connect, определит используемые кавычки. |
`Unit Price` * Quantity * (1-Discount) as NetSales
FROM `Order Details`;
Sum(`Order Details`.`Unit Price` * `Order Details`.Quantity) as `Result`
FROM `Order Details`, Orders
where Orders.`Order ID` = `Order Details`.`Order ID`
group by `Order Details`.`Order ID`;
Set
Оператор set используется для определения переменных скрипта. Эти переменные можно использовать для подстановки строк, путей, драйверов и т. д.
Set variablename=string
Sleep
Оператор sleep приостанавливает выполнение скрипта на указанное время.
Sleep n
Аргументы:
Аргумент | Описание |
---|---|
n | Задается в миллисекундах, где n — положительное целое число, не превышающее 3600000 (то есть 1 час). В качестве значения может выступать выражение. |
SQL
Оператор SQL позволяет отправлять произвольную команду SQL посредством подключения ODBC или OLE DB.
SQL sql_command
При отправке операторов SQL, которые обновляют базу данных, будет возвращаться ошибка, если программа QlikView (и Qlik Sense) открыла подключение ODBC в режиме «только чтение».
SQL SELECT * from tab1;
допускается и будет предпочтительным синтаксисом для SELECT с целью обеспечения согласованности. Тем не менее префикс SQL для операторов SELECT будет необязательным.
Аргументы:
Аргумент | Описание |
---|---|
sql_command | Допустимая команда SQL. |
SQLColumns
Оператор sqlcolumns возвращает набор полей с описанием столбцов источника данных ODBC или OLE DB, с которыми выполнена операция connect.
SQLcolumns
Эти поля можно объединить с полями, созданными командами sqltables и sqltypes, что позволит получить представление об определенной базе данных. Ниже перечислены 12 стандартных полей:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
COLUMN_NAME
DATA_TYPE
TYPE_NAME
PRECISION
LENGTH
SCALE
RADIX
NULLABLE
REMARKS
Подробное описание этих полей см. в справочном руководстве по ODBC.
SQLcolumns;
SQLTables
Оператор sqltables возвращает набор полей с описанием таблиц источника данных ODBC или OLE DB, с которыми выполнена операция connect.
sqltables
Эти поля можно объединить с полями, созданными командами sqlcolumns и sqltypes, что позволит получить представление об определенной базе данных. Ниже перечислены пять стандартных полей:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
TABLE_TYPE
REMARKS
Подробное описание этих полей см. в справочном руководстве по ODBC.
SQLTables;
SQLTypes
Оператор sqltypes возвращает набор полей с описанием типов источника данных ODBC или OLE DB, с которыми выполнена операция connect.
sqltypes
Эти поля можно объединить с полями, созданными командами sqlcolumns и sqltables, что позволит получить представление об определенной базе данных. Ниже перечислены 15 стандартных полей:
TYPE_NAME
DATA_TYPE
PRECISION
LITERAL_PREFIX
LITERAL_SUFFIX
CREATE_PARAMS
NULLABLE
CASE_SENSITIVE
SEARCHABLE
UNSIGNED_ATTRIBUTE
MONEY
AUTO_INCREMENT
LOCAL_TYPE_NAME
MINIMUM_SCALE
MAXIMUM_SCALE
Подробное описание этих полей см. в справочном руководстве по ODBC.
SQLTypes;
Star
Строку, которая представляет набор всех значений поля в базе данных, можно определить с помощью оператора star. Она влияет на последующие операторы LOAD и SELECT.
Star is[ string ]
Аргументы:
Аргумент | Описание |
---|---|
string |
Произвольный текст. Обратите внимание, что при наличии в строке пробелов она должна быть заключена в кавычки. Если значение не указано, то по умолчанию используется star is;; то есть символ звездочки отсутствует, если он не будет указан явным образом. Это действительно до тех пор, пока не будет создан новый оператор star. |
Пример ниже является извлечением из скрипта загрузки данных, содержащим доступ к секции.
Section Access;
LOAD * INLINE [
ACCESS, USERID, PASSWORD, OMIT
ADMIN, ADMIN, ADMIN,
USER, USER1, U1, SALES
USER, USER2, U2, WAREHOUSE
USER, USER3, U3, EMPLOYEES
USER, USER4, U4, SALES
USER, USER4, U4, WAREHOUSE
USER, USER5, U5, *
];
Section Application;
LOAD * INLINE [
SALES, WAREHOUSE, EMPLOYEES, ORDERS
1, 2, 3, 4
];
Применяется следующее:
- Знак Star — *.
- Пользователю USER1 не удается просмотреть поле SALES.
- Пользователю USER2 не удается просмотреть поле WAREHOUSE .
- Пользователю USER3 не удается просмотреть поле EMPLOYEES.
- Пользователь USER4 добавлен дважды к решению OMIT к двум полям для данного пользователя, SALES и WAREHOUSE.
- Для пользователя USER5 добавлен знак “*”, значит все поля в списке OMIT недоступны. Знак * "звезда" означает все перечисленные значения, а не все значения поля.
- Пользователю USER5 не удается просмотреть поля SALES, WAREHOUSE и EMPLOYEES ,но пользователю доступно поле ORDERS.
Store
Эта функция скрипта создает файл QVD или CSV.
Store[ *fieldlist from] table into filename [ format-spec ];
Оператор создаст файл QVD или CSV с заданным именем. Оператор может экспортировать поля только из одной таблицы данных. Если требуется экспортировать поля из нескольких таблиц, необходимо заранее сформировать явное объединение join в скрипте для создания таблицы данных, которую следует экспортировать.
Текстовые значения экспортируются в файл CSV в формате UTF-8. Можно указать разделитель. См. LOAD. Оператор store для файла CSV не поддерживает экспорт BIFF.
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist::= ( * | field ) { , field } ) |
Список полей, которые необходимо выбрать. Символ «*» в качестве списка полей обозначает все поля. field::= fieldname [asaliasname ] fieldname — это текст, идентичный имени поля в элементе table. (Обратите внимание, что для указания имени поля необходимо заключить его в прямые двойные кавычки или квадратные скобки, если имя содержит пробелы или другие нестандартные символы.) aliasname — альтернативное имя поля, которое предназначено для использования в результирующем файле QVD или CSV. |
table | Метка скрипта, представляющая уже загруженную таблицу, которую планируется использовать в качестве источника данных. |
filename |
Имя целевого файла, включающее допустимый путь.
|
format-spec ::=( ( txt | qvd ) ) | C целью указания формата используется текст txt для обозначения текстовых файлов или текст qvd — для файлов QVD. Если формат не указан, то используется qvd. |
Store * from mytable into xyz.qvd;
Store Name, RegNo from mytable into xyz.qvd;
Store Name as a, RegNo as b from mytable into xyz.qvd;
store mytable into myfile.txt (txt);
store * from mytable into myfile.txt (txt);
Tag
Эта функция скрипта предоставляет возможность присваивать теги одному или нескольким полям. Если делается попытка присвоить тег имени поля, отсутствующему в документе, то эта операция будет проигнорирована. Если обнаружены конфликты между именами полей или тегов, то используется последнее значение.
Tag fields fieldlist using mapname
Tag field fieldname with tagname
Аргументы:
Аргумент | Описание |
---|---|
fieldlist | Разделенный запятыми список полей, которые следует разметить, начиная с этой точки выполнения скрипта. |
mapname | Имя таблицы сопоставления, считанной ранее в операторе mapping Load или mapping Select. |
fieldname | Имя поля, для которого необходимо добавить тег. |
tagname | Имя тега, применяемого к полю. |
mapping LOAD * inline [
a,b
Alpha,MyTag
Num,MyTag
];
tag fields using tagmap;
Trace
Оператор trace записывает строку в окно Ход выполнения скрипта и в файл журнала скрипта, если тот используется. Он очень полезен для отладки. Расширение $, добавляемое к переменным, вычисляемым до оператора trace, позволяет настроить сообщение.
Trace string
Trace $(MyMessage);
Unmap
Оператор Unmap деактивирует значение поля mapping, заданное предыдущим оператором Map … Using для последующих загружаемых полей.
Unmap *fieldlist
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist | разделенный запятыми список полей, которые не нужно больше сопоставлять, начиная с этой точки выполнения скрипта. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. |
Пример | Результат |
---|---|
Unmap Country; | Отключает сопоставление поля Country. |
Unmap A, B, C; | Отключает сопоставление полей A, B и C. |
Unmap * ; | Отключает сопоставление всех полей. |
Unqualify
Оператор Unqualify используется для снятия уточнения имен полей, которое ранее было включено оператором Qualify.
Unqualify *fieldlist
Аргументы:
Аргумент | Описание |
---|---|
*fieldlist |
Список полей, разделенных запятыми, для которых следует включить уточнение. Символ * в качестве списка полей обозначает все поля. В именах полей разрешается использовать знаки подстановки * и ?. При использовании знаков подстановки, возможно, понадобится заключать имена полей в кавычки. Дополнительные сведения см. в документации по оператору Qualify. |
Untag
Предоставляет возможность удалить теги из одного или нескольких полей. Если делается попытка снять тег с имени поля, отсутствующего в документе, то эта операция будет проигнорирована. Если обнаружены конфликты между именами полей или тегов, то используется последнее значение.
Untag fields fieldlist using mapname
Untag field fieldname with tagname
Аргументы:
Аргумент | Описание |
---|---|
fieldlist | Список полей, разделенных запятыми, теги которых следует удалить. |
mapname | Имя таблицы сопоставления, загруженной ранее в оператор сопоставления LOAD или SELECT. |
fieldname | Имя поля, с которого необходимо снять тег. |
tagname | Имя тега, который следует снять с поля. |
mapping LOAD * inline [
a,b
Alpha,MyTag
Num,MyTag
];
Untag fields using tagmap;
Переменные скрипта
Переменная в QlikView (и Qlik Sense) является контейнером, содержащим статическое значение или вычисление, например числовое или буквенно-числовое значение. При использовании этой переменной в документе любое изменение, выполненное в переменной, применяется везде, где эта переменная используется. Переменные определяются в скрипте с помощью редактора скриптов, переменная получает свое значение от операторов управления Let, Set или других операторов управления в скрипте загрузки.
Если первый символ в значении переменной — это знак равенства «=», то программа QlikView (и Qlik Sense) рассчитывает значение по формуле (выражение QlikView (и Qlik Sense)) и выводит или возвращает результат, а не визуальное написание формулы.
При использовании вместо переменной подставляется его значение. Переменные можно использовать в скрипте для расширения со знаком доллара и в различных операторах управления. Это очень удобно, если одна и та же строка повторяется в скрипте множество раз, например путь.
В начале выполнения скрипта программа QlikView (и Qlik Sense) устанавливает некоторые особые системные переменные независимо от их предыдущих значений.
Ниже представлен синтаксис для определения переменной:
set variablename = string
или
let variable = expression
используется. Команда Set присваивает текст справа от знака равенства переменной, в то время как команда Let вычисляет выражение.
В переменных учитывается регистр.
set HidePrefix = $ ; //
, в переменной символ «$» будет получен как значение.let vToday = Num(Today()); //
возвращает серийный номер сегодняшней даты.
Вычисление переменной
Существует несколько способов использования переменных с вычисляемыми значениями в программе QlikView (и Qlik Sense). Результат зависит от того, как это будет определено и названо в выражении.
В этом примере загружаются некоторые встроенные данные:
Dim, Sales
A, 150
A, 200
B, 240
B, 230
C, 410
C, 330
];
Давайте определим две переменные.
Let vSales = 'Sum(Sales)' ;
Let vSales2 = '=Sum(Sales)' ;
Во второй переменной мы добавляем знак равенства перед выражением. В результате переменная будет вычислена до того, как она будет расширена, а выражение оценено.
При использовании неизмененной переменной vSales, например, в мере, результатом будет строка Sum(Sales), то есть вычисления не будут выполнены.
В случае добавления расширения со знаком доллара и вызова элемента $(vSales) в выражении переменная будет расширена, а сумма Sales отобразится.
Наконец, если будет вызван элемент $(vSales2), вычисление переменной будет выполнено до ее расширения. Это означает, что отображаемый результат — это итоговая сумма элементов Sales. Разницу использования элементов =$(vSales) и =$(vSales2) в качестве выражений мер можно увидеть в этой диаграмме с отображением результатов:
Dim | $(vSales) | $(vSales2) |
A | 350 | 1560 |
B | 470 | 1560 |
C | 740 | 1560 |
Как можно увидеть, элемент $(vSales) показывает частичную сумму для значения измерения, а элемент $(vSales2) показывает итоговую сумму.
Переменные ошибок
Значения всех переменных ошибок остаются после выполнения скрипта. Первая переменная, ErrorMode, — это входные данные от пользователя, а последние три — выходные данные от программы QlikView (и Qlik Sense) с информацией об ошибках в скрипте.
Пользуйтесь информацией из раскрывающегося списка по каждой функции, чтобы увидеть краткое описание и синтаксис каждой функции. Дополнительную информацию можно получить, если щелкнуть имя функции в описании синтаксиса.
ErrorMode |
Эта переменная ошибки определяет действие, которое должно быть предпринято в программе QlikView (и Qlik Sense) при обнаружении ошибки в ходе выполнения скрипта. |
ScriptError |
Эта переменная ошибки возвращает код ошибки для последнего выполненного оператора скрипта. |
ScriptErrorCount |
Эта переменная ошибки возвращает общее число операторов, которые привели к возникновению ошибки в ходе выполнения текущего скрипта. В начале выполнения скрипта для этой переменной всегда восстанавливается значение 0. |
ScriptErrorList |
Эта переменная ошибки будет содержать объединенный список всех ошибок в скрипте, возникших в ходе выполнения последнего скрипта. Каждая ошибка отделяется символом перевода строки. |
ErrorMode
Эта переменная ошибки определяет действие, которое должно быть предпринято в программе QlikView (и Qlik Sense) при обнаружении ошибки в ходе выполнения скрипта.
ErrorMode
Аргументы:
Аргумент | Описание |
---|---|
ErrorMode=1 | Настройка по умолчанию. Выполнение скрипта останавливается, и пользователь получает запрос на выполнение действия (в непакетном режиме). |
ErrorMode =0 | Программа QlikView (и Qlik Sense) просто проигнорирует ошибку и продолжит выполнение скрипта со следующего оператора скрипта. |
ErrorMode =2 |
Программа QlikView (и Qlik Sense) отобразит сообщение об ошибке «Сбой выполнения скрипта…» при возникновении ошибки без предварительного запроса о действии пользователя. |
ScriptError
Эта переменная ошибки возвращает код ошибки для последнего выполненного оператора скрипта.
ScriptError
Эта переменная сбрасывается на 0 после каждого успешно выполненного оператора скрипта. При возникновении ошибки переменной присваивается внутренний код ошибки QlikView (и Qlik Sense). Коды ошибок являются двойными значениями, включающими текстовый и числовой компонент. Существуют следующие коды ошибок:
Код ошибки | Описание |
---|---|
0 | Нет ошибки |
1 | Общая ошибка |
2 | Ошибка синтаксиса |
3 | Общая ошибка ODBC |
4 | Общая ошибка OLE DB |
5 | Общая ошибка настраиваемой базы данных |
6 | Общая ошибка XML |
7 | Общая ошибка HTML |
8 | Файл не найден |
9 | База данных не найдена |
10 | Таблица не найдена |
11 | Поле не найдено |
12 | Неверный формат файла |
13 | Ошибка BIFF |
14 | Зашифрованная ошибка BIFF |
15 | Ошибка BIFF неподдерживаемой версии |
16 | Семантическая ошибка |
LOAD * from abc.qvw;
if ScriptError=8 then
exit script;
//no file;
end if
ScriptErrorCount
Эта переменная ошибки возвращает общее число операторов, которые привели к возникновению ошибки в ходе выполнения текущего скрипта. В начале выполнения скрипта для этой переменной всегда восстанавливается значение 0.
ScriptErrorCount
ScriptErrorList
Эта переменная ошибки будет содержать объединенный список всех ошибок в скрипте, возникших в ходе выполнения последнего скрипта. Каждая ошибка отделяется символом перевода строки.
ScriptErrorList
Переменные интерпретации числа
Переменные интерпретации числа определяет система, то есть они создаются автоматически при создании нового документа в соответствии с текущими региональными настройками операционной системы. В QlikView (и Qlik Sense) Desktop это выполняется согласно настройкам операционной системы компьютера, а в QlikView (и Qlik Sense) это выполняется согласно операционной системе сервера, на котором установлена программа QlikView (и Qlik Sense).
Переменные указываются в верхней части скрипта нового документа QlikView (и Qlik Sense) и заменяют стандартные настройки операционной системы для определенных параметров формата чисел во время выполнения скрипта. Эти переменные можно свободно удалять, редактировать или копировать.
Пользуйтесь информацией из раскрывающегося списка по каждой функции, чтобы увидеть краткое описание и синтаксис каждой функции. Дополнительную информацию можно получить, если щелкнуть имя функции в описании синтаксиса.
Форматирование валюты
MoneyDecimalSep |
Указанный десятичный разделитель заменяет символ десятичного знака для валюты, используемый в операционной системе (региональные настройки). |
MoneyFormat |
Указанный символ заменяет символ валюты, используемый в операционной системе (региональные настройки). |
MoneyThousandSep |
Указанный разделитель тысяч заменяет группирующий символ знаков для валюты, используемый в операционной системе (региональные настройки). |
Форматирование чисел
DecimalSep |
Заданный десятичный разделитель заменяет символ десятичного знака, используемый в операционной системе (региональные настройки). |
ThousandSep |
Указанный разделитель тысяч заменяет группирующий символ знаков, используемый в операционной системе (региональные настройки). |
Форматирование времени
DateFormat |
Указанный формат заменяет формат даты, используемый в операционной системе (региональные настройки). |
TimeFormat |
Указанный формат заменяет формат времени, используемый в операционной системе (региональные настройки). |
TimestampFormat |
Указанный формат заменяет форматы даты и времени, используемые в операционной системе (региональные настройки). |
MonthNames |
Указанный формат заменяет обозначение имен месяцев, используемое в операционной системе (региональные настройки). |
LongMonthNames |
Указанный формат заменяет обозначение полных имен месяцев, используемое в операционной системе (региональные настройки). |
DayNames |
Указанный формат заменяет имена дней недели, используемые в операционной системе (региональные настройки). |
LongDayNames |
Указанный формат заменяет обозначение полных имен дней недели, используемое в операционной системе (региональные настройки). |
FirstWeekDay |
Целое число определяет, какой день использовать в качестве первого дня недели. |
BrokenWeeks |
этот параметр определяет, какими должны быть недели: целыми или разбитыми. |
ReferenceDay |
Этот параметр определяет, какой день в январе должен быть задан в качестве дня ссылки, чтобы определить неделю 1. По умолчанию в функциях QlikView (и Qlik Sense) используется 4 как день ссылки. Это значит, что неделя 1 должна содержать значение «январь 4» , или, другими словами, в неделе 1 всегда должно быть не меньше 4 дней в январе. Используйте следующие значения, чтобы задать день ссылки:
|
FirstMonthOfYear |
С помощью этой настройки определяется месяц, который будет использован в качестве первого месяца года. Его можно использовать для определения финансовых годов, в которых используется смещение по месяцам, например, начало будет 1 апреля. |
BrokenWeeks
этот параметр определяет, какими должны быть недели: целыми или разбитыми.
BrokenWeeks
По умолчанию в функциях QlikView (и Qlik Sense) используются целые недели. Это означает следующее:
- В одних годах 1-я неделя начинается в декабре, а в других годах 52-я или 53-я неделя заканчивается в январе.
- В 1-ой неделе всегда не менее четырех дней в январе.
В качестве альтернативы можно использовать разбиение недель.
- 52-я или 53-я неделя не будет продолжена в январе следующего года.
- 1-я неделя будет начинаться 1 января и в большинстве случаев она будет неполной.
Могут использоваться следующие значения:
- 0 (= использовать целые недели)
- 1 (= использовать разбитые недели)
Set BrokenWeeks=1; //(use broken weeks)
DateFormat
Указанный формат заменяет формат даты, используемый в операционной системе (региональные настройки).
DateFormat
Set DateFormat='DD/MM/YY'; //(UK date format)
Set DateFormat='YYYY-MM-DD'; //(ISO date format)
DayNames
Указанный формат заменяет имена дней недели, используемые в операционной системе (региональные настройки).
DayNames
DecimalSep
Заданный десятичный разделитель заменяет символ десятичного знака, используемый в операционной системе (региональные настройки).
DecimalSep
Set DecimalSep=',';
FirstWeekDay
Целое число определяет, какой день использовать в качестве первого дня недели.
FirstWeekDay
В функциях QlikView (и Qlik Sense) понедельник является первым днем недели по умолчанию. Могут использоваться следующие значения:
- 0 (= понедельник)
- 1 (= вторник)
- 2 (= среда)
- 3 (= четверг)
- 4 (= пятница)
- 5 (= суббота)
- 6 (= воскресенье)
LongDayNames
Указанный формат заменяет обозначение полных имен дней недели, используемое в операционной системе (региональные настройки).
LongDayNames
LongMonthNames
Указанный формат заменяет обозначение полных имен месяцев, используемое в операционной системе (региональные настройки).
LongMonthNames
MoneyDecimalSep
Указанный десятичный разделитель заменяет символ десятичного знака для валюты, используемый в операционной системе (региональные настройки).
MoneyDecimalSep
MoneyFormat
Указанный символ заменяет символ валюты, используемый в операционной системе (региональные настройки).
MoneyFormat
MoneyThousandSep
Указанный разделитель тысяч заменяет группирующий символ знаков для валюты, используемый в операционной системе (региональные настройки).
MoneyThousandSep
MonthNames
Указанный формат заменяет обозначение имен месяцев, используемое в операционной системе (региональные настройки).
MonthNames
ReferenceDay
Этот параметр определяет, какой день в январе должен быть задан в качестве дня ссылки, чтобы определить неделю 1. По умолчанию в функциях QlikView (и Qlik Sense) используется 4 как день ссылки. Это значит, что неделя 1 должна содержать значение «январь 4» , или, другими словами, в неделе 1 всегда должно быть не меньше 4 дней в январе.
Используйте следующие значения, чтобы задать день ссылки:
- 1 (= январь 1)
- 2 (= январь 2)
- 3 (= январь 3)
- 4 (= январь 4)
- 5 (= январь 5)
- 6 (= январь 6)
- 7 (= январь 7)
ReferenceDay
По умолчанию в функциях QlikView (и Qlik Sense) используется 4 как день ссылки. Это значит, что неделя 1 должна содержать значение «январь 4» , или, другими словами, в неделе 1 всегда должно быть не меньше 4 дней в январе.
Используйте следующие значения, чтобы задать день ссылки:
- 1 (= январь 1)
- 2 (= январь 2)
- 3 (= январь 3)
- 4 (= январь 4)
- 5 (= январь 5)
- 6 (= январь 6)
- 7 (= январь 7)
FirstMonthOfYear
С помощью этой настройки определяется месяц, который будет использован в качестве первого месяца года. Его можно использовать для определения финансовых годов, в которых используется смещение по месяцам, например, начало будет 1 апреля.
Допустимые настройки: от 1 (январь) до 12 (декабрь). Параметр по умолчанию — 1.
FirstMonthOfYear
ThousandSep
Указанный разделитель тысяч заменяет группирующий символ знаков, используемый в операционной системе (региональные настройки).
ThousandSep
Set ThousandSep=' ';
TimeFormat
Указанный формат заменяет формат времени, используемый в операционной системе (региональные настройки).
TimeFormat
TimestampFormat
Указанный формат заменяет форматы даты и времени, используемые в операционной системе (региональные настройки).
TimestampFormat
Системные переменные
Системные переменные, некоторые из которых определяются системой, предоставляют информацию о системе и документе QlikView (и Qlik Sense).
Пользуйтесь информацией из раскрывающегося списка по каждой функции, чтобы увидеть краткое описание и синтаксис каждой функции. По некоторым функциям можно получить дополнительные сведения. Для этого щелкните имя нужной функции в описании синтаксиса.
Floppy |
Возвращает буквенное обозначение первого найденного дисковода гибких дисков, обычно a:. Эта переменная определяется системой. |
CD |
Возвращает буквенное обозначение первого найденного дисковода CD-ROM. Если дисковод CD-ROM не найден, возвращается c:. Эта переменная определяется системой. |
Include |
Переменная Include/Must_Include указывает файл, содержащий текст, который необходимо включить в скрипт и который рассматривается в качестве кода скрипта. Можно сохранить часть кода скрипта в отдельный текстовый файл и использовать его в разных документах. Эта переменная определяется пользователем. $(Include=filename) $(Must_Include=filename) |
HidePrefix |
Все имена полей, начинающиеся этой строкой текста, будут скрыты так же, как и системные поля. Эта переменная определяется пользователем. |
HideSuffix |
Все имена полей, которые заканчиваются этой строкой текста, будут скрыты так же, как и системные поля. Эта переменная определяется пользователем. |
QvPath |
Возвращает строку обзора в выполняемый модуль QlikView (и Qlik Sense). Эта переменная определяется системой. |
QvRoot |
Возвращает корневой каталог выполняемого модуля QlikView (и Qlik Sense). Эта переменная определяется системой. |
QvWorkPath |
Возвращает строку обзора в текущий документ QlikView (и Qlik Sense). Эта переменная определяется системой. |
QvWorkRoot |
Возвращает корневой каталог текущего документа QlikView (и Qlik Sense). Эта переменная определяется системой. |
StripComments |
Если для этой переменной установлено значение 0, исключение комментариев /*..*/ и // в скрипте будет блокироваться. Если эта переменная не определена, всегда выполняется исключение комментариев. |
Verbatim |
Обычно предшествующие и завершающие символы пробела (ASCII 32) автоматически исключаются из всех значений поля до их загрузки в базу данных QlikView (и Qlik Sense). Установка для этой переменной значения 1 приостанавливает исключение символов пробела. Символ табуляции (ASCII 9) и твердый пробел (ANSI 160) никогда не исключаются. |
OpenUrlTimeout |
Эта переменная определяет время ожидания в секундах, которое программа QlikView (и Qlik Sense) использует при получении данных из источников URL (например, HTML-страниц). При отсутствии данной переменной время ожидания составляет 20 минут. |
WinPath |
Возвращает строку обзора в Windows. Эта переменная определяется системой. |
WinRoot |
Возвращает корневой каталог Windows. Эта переменная определяется системой. |
CollationLocale |
Указывает, какую локаль использовать для порядка сортировки и сопоставления поиска. Значением является имя культуры локали, например, «en-US».Эта переменная определяется системой. |
HidePrefix
Все имена полей, начинающиеся этой строкой текста, будут скрыты так же, как и системные поля. Эта переменная определяется пользователем.
HidePrefix
При использовании этого оператора имена полей, начинающиеся с нижнего подчеркивания, не отображаются в списках имен полей, если скрыты системные поля.
HideSuffix
Все имена полей, которые заканчиваются этой строкой текста, будут скрыты так же, как и системные поля. Эта переменная определяется пользователем.
HideSuffix
При использовании этого оператора имена полей, заканчивающиеся знаком %, не отображаются в списках имен полей, если скрыты системные поля.
Include
Переменная Include/Must_Include указывает файл, содержащий текст, который необходимо включить в скрипт и который рассматривается в качестве кода скрипта. Можно сохранить часть кода скрипта в отдельный текстовый файл и использовать его в разных документах. Эта переменная определяется пользователем.
$(Include=filename) $(Must_Include=filename)
Существует две версии переменной.
- Переменная Include не создает ошибку, если не удалось найти файл, и сообщение об ошибке не отображается.
- Переменная Must_Include создает ошибку, если не удалось найти файл.
Если не указать путь, имя файла будет отнесено к рабочему каталогу документа QlikView (и Qlik Sense). Также можно указать абсолютный путь к файлу.
$(Must_Include=abc.txt);
OpenUrlTimeout
Эта переменная определяет время ожидания в секундах, которое программа QlikView (и Qlik Sense) использует при получении данных из источников URL (например, HTML-страниц). При отсутствии данной переменной время ожидания составляет 20 минут.
OpenUrlTimeout
StripComments
Если для этой переменной установлено значение 0, исключение комментариев /*..*/ и // в скрипте будет блокироваться. Если эта переменная не определена, всегда выполняется исключение комментариев.
StripComments
В определенных драйверах базы данных используются /*..*/ в качестве подсказок по оптимизации в операторах SELECT. В таком случае комментарии не должны исключаться перед отправкой оператора SELECT в драйвер базы данных.
SQL SELECT * /* <optimization directive> */ FROM Table ;
set StripComments=1;
Verbatim
Обычно предшествующие и завершающие символы пробела (ASCII 32) автоматически исключаются из всех значений поля до их загрузки в базу данных QlikView (и Qlik Sense). Установка для этой переменной значения 1 приостанавливает исключение символов пробела. Символ табуляции (ASCII 9) и твердый пробел (ANSI 160) никогда не исключаются.
Verbatim
Значение, Обрабатывающее Переменные
В этом разделе описаны переменные, которые используются для обработки значений NULL и других значений.
Пользуйтесь информацией из раскрывающегося списка по каждой функции, чтобы увидеть краткое описание и синтаксис каждой функции. Дополнительную информацию можно получить, если щелкнуть имя функции в описании синтаксиса.
NullDisplay |
Указанным символом заменяются все значения NULL из источника данных ODBC соединители на самом нижнем уровне данных. Эта переменная определяется пользователем. |
NullInterpret |
При нахождении указанного символа в текстовом файле, файле Excel или во встроенном операторе он интерпретируется как значение NULL. Эта переменная определяется пользователем. |
NullValue |
Если используется оператор NullAsValue, определенный символ будет заменять все значения NULL в указанных полях NullAsValue указанной строкой. |
OtherSymbol |
Определяет символ, который будет обрабатываться как все другие значения перед оператором LOAD/SELECT. Эта переменная определяется пользователем. |
NullDisplay
Указанным символом заменяются все значения NULL из источника данных ODBC соединители на самом нижнем уровне данных. Эта переменная определяется пользователем.
NullDisplay
NullInterpret
При нахождении указанного символа в текстовом файле, файле Excel или во встроенном операторе он интерпретируется как значение NULL. Эта переменная определяется пользователем.
NullInterpret
set NullInterpret =;
set NullInterpret ='';не возвращает значения NULL для пустых ячеек в Excel, (в текстовом файле CSV возвращает)
возвращает значения NULL для пустых ячеек в Excel.
NullValue
Если используется оператор NullAsValue, определенный символ будет заменять все значения NULL в указанных полях NullAsValue указанной строкой.
NullValue
set NullValue='<NULL>';
OtherSymbol
Определяет символ, который будет обрабатываться как все другие значения перед оператором LOAD/SELECT. Эта переменная определяется пользователем.
OtherSymbol
LOAD * inline
[X, Y
a, a
b, b];
LOAD * inline
[X, Z
a, a
+, c];
Значение поля Y=’b’ теперь будет связано с Z=’c’ через другой символ.
Переменные Direct Discovery
Системные переменные Direct Discovery
DirectCacheSeconds |
Можно установить предел кэширования для результатов выполнения запросов Direct Discovery для диаграмм. При достижении этого предела времени QlikView (и Qlik Sense) очищает кэш, когда создаются новые запросы Direct Discovery. QlikView (и Qlik Sense) запрашивает исходные данные для выборок и создает кэш снова для указанного временного предела. Кэширование результатов для каждой комбинации выборок выполняется независимо друг от друга. Иначе говоря, кэш обновляется для каждой выборки отдельно таким образом, что одна выборка обновляет кэш только для выбранных полей, а вторая выборка обновляет кэш для соответствующих полей. Если вторая выборка включает в себя поля, обновленные в первой выборке, они не обновляются в кэше повторно, если не достигнут предел кэширования. Кэш Direct Discovery не применяется к диаграммам Таблица. Выборки таблицы каждый раз запрашивают источник данных. Предельное значение должно быть указано в секундах. Предел кэша по умолчанию составляет 1800 секунд (30 минут). Значение, используемое для DirectCacheSeconds, представляет собой значение, которое устанавливается во время выполнения оператора DIRECT QUERY. Это значение невозможно изменить во время выполнения. Пример:
SET DirectCacheSeconds=1800
|
DirectConnectionMax |
Можно выполнять асинхронные параллельные вызовы базы данных с помощью функции объединения подключений. Синтаксис загрузки скрипта для настройки функции объединения:
SET DirectConnectionMax=10
Числовой параметр указывает максимальное количество подключений к базе данных, которые можно использовать коду Direct Discovery при обновлении листа. По умолчанию параметр имеет значение 1.
Эту переменную следует использовать с осторожностью. Значение параметра больше 1 может привести к возникновению проблем при подключении к Microsoft SQL Server.
|
DirectUnicodeStrings |
Direct Discovery поддерживает выбор расширенных данных Юникода путем использования стандартного формата SQL для строковых литералов расширенных символов (N’<расширенная строка>’), как это требуют некоторые базы данных (в частности SQL Server). Этот синтаксис можно включить для Direct Discovery с помощью переменной скрипта DirectUnicodeStrings. Если установить для этой переменной значение «true», то перед строковыми литералами будет использоваться “N” — строковый маркер ANSI стандартной ширины. Не все базы данных поддерживают этот стандарт. По умолчанию параметр имеет значение «false». |
DirectDistinctSupport |
Когда значение поля DIMENSION выбрано в объекте QlikView (и Qlik Sense), для исходной базы данных создается запрос. Если для запроса требуется группировка, Direct Discovery использует ключевое слово DISTINCT для выбора только уникальных значений. Однако для некоторых баз данных необходимо ключевое слово GROUP BY. Установите для параметра DirectDistinctSupport значение 'false', чтобы создавать запросы GROUP BY вместо DISTINCT для получения уникальных значений.
SET DirectDistinctSupport='false'
Если для параметра DirectDistinctSupport установлено значение «true», будет использоваться DISTINCT. Если значение не установлено, по умолчанию используется DISTINCT. |
DirectEnableSubquery |
В многотабличных сценариях с большим количеством элементов можно создавать запросы, вложенные в запрос SQL, вместо создания длинного предложения IN. Для этого активируйте параметр DirectEnableSubquery, выбрав значение 'true'. По умолчанию установлено значение 'false'.
Если параметр DirectEnableSubquery включен, невозможно загружать таблицы, которые не в режиме Direct Discovery.
SET DirectEnableSubquery='true'
|
Переменные чередования запросов Teradata
Чередование запросов Teradata — это функция, которая позволяет корпоративным приложениям работать совместно с основной базой данных Teradata для повышения эффективности учета, определения приоритетов и управления рабочей нагрузкой. Чередование запросов позволяет переносить метаданные, такие как учетные данные пользователя, в запросе.
Доступны две переменные, которые являются строками. Они оцениваются и отправляются в базу данных.
SQLSessionPrefix |
Эта строка отправляется, когда создается подключение к базе данных. SET SQLSessionPrefix = 'SET QUERY_BAND = ' & Chr(39) & 'Who=' & OSuser() & ';' & Chr(39) & ' FOR SESSION;'; Например, если OSuser() возвращает WA\sbt, это будет оценено как |
SQLQueryPrefix |
Эта строка отправляется для каждого одиночного запроса.
SET SQLSessionPrefix = 'SET QUERY_BAND = ' & Chr(39) & 'Who=' & OSuser() & ';' & Chr(39) & ' FOR TRANSACTION;';
|
Символьные переменные Direct Discovery
DirectFieldColumnDelimiter |
Можно задать символ, используемый в качестве разделителя полей в операторах Direct Query для баз данных, где в качестве разделителя требуется символ, отличный от запятой. В операторе SETуказанный символ должен быть заключен в одинарные кавычки.
SET DirectFieldColumnDelimiter= '|'
|
DirectStringQuoteChar |
Можно задать символ, чтобы заключать строки в кавычки в созданном запросе. По умолчанию это одинарные кавычки. В операторе SETуказанный символ должен быть заключен в одинарные кавычки.
SET DirectStringQuoteChar= '"'
|
DirectIdentifierQuoteStyle |
Можно указать, что в созданных запросах можно использовать кавычки не в кодировке ANSI для идентификаторов. В настоящее время доступные кавычки не в кодировке ANSI — только GoogleBQ. По умолчанию используется элемент ANSI. Можно использовать символы в верхнем регистре, в нижнем регистре и в разных регистрах (ANSI, ansi, Ansi).
SET DirectIdentifierQuoteStyle="GoogleBQ"
Например, кавычки ANSI используются в следующем операторе SELECT:
SELECT [Quarter] FROM [qvTest].[sales] GROUP BY [Quarter]
Если для параметра DirectIdentifierQuoteStyle установлено значение "GoogleBQ", оператор SELECT будет использовать следующие кавычки:
SELECT [Quarter] FROM [qvTest.sales] GROUP BY [Quarter]
|
DirectIdentifierQuoteChar |
Можно задать символ, чтобы управлять заключением идентификаторов в кавычки в созданном запросе. Можно задать как один символ (двойные кавычки), так и два символа (квадратные скобки). По умолчанию это двойные кавычки.
SET DirectIdentifierQuoteChar='YYYY-MM-DD'
|
DirectTableBoxListThreshold |
Когда поля Direct Discovery используются в диаграмме Таблица, устанавливается пороговое значение, чтобы ограничить количество отображаемых строк. Пороговое значение по умолчанию равно 1000 записям. Пороговое значение по умолчанию можно изменить, настроив переменную DirectTableBoxListThreshold в скрипте загрузки. Например:
SET DirectTableBoxListThreshold=5000
Параметр порогового значения применим только к диаграммам Таблица, содержащим поля Direct Discovery. Диаграммы Таблица, содержащие только поля в памяти, не ограничены параметром DirectTableBoxListThreshold. В диаграмме Таблица не будут отображаться поля, пока количество записей в выборке не будет меньше порогового значения. |
Переменные интерпретации числа Direct Discovery
DirectMoneyDecimalSep |
Заданный разделитель десятичной части заменяет символ десятичного разделителя для валюты в операторе SQL, созданном для загрузки данных с помощью Direct Discovery. Этот символ должен совпадать с символом, используемом в DirectMoneyFormat. По умолчанию используется значение '.' Пример:
Set DirectMoneyDecimalSep='.';
|
DirectMoneyFormat |
Заданный разделитель заменяет формат валюты в операторе SQL, созданном для загрузки данных с помощью Direct Discovery. Символ валюты для разделителя тысяч не включается. По умолчанию используется значение '#.0000' Пример:
Set DirectMoneyFormat='#.0000';
|
DirectTimeFormat |
Заданный формат времени заменяет формат времени в операторе SQL, созданном для загрузки данных с помощью Direct Discovery. Пример:
Set DirectTimeFormat='hh:mm:ss';
|
DirectDateFormat |
Заданный формат даты заменяет формат даты в операторе SQL, созданном для загрузки данных с помощью Direct Discovery. Пример:
Set DirectDateFormat='MM/DD/YYYY';
|
DirectTimeStampFormat |
Заданный формат заменяет формат даты и времени в операторе SQL, созданном в операторе SQL для загрузки данных с помощью Direct Discovery. Пример:
Set DirectTimestampFormat='M/D/YY hh:mm:ss[.fff]';
|