Синтаксис сценария Qlik Sense – формализм Бэкуса-Наура
1. Цель
Сегодня мы поговорим о синтаксисе сценария Qlik Sense. В этом уроке мы узнаем, как таблицы данных загружаются или записываются в скрипте загрузки данных Qlik Sense. Кроме того, мы рассмотрим стандартную нотацию сценария (BNF), которая используется для написания кода в сценарии. Более того, мы увидим, какие типы операторов сценария и ключевые слова используются в сценарии и как написано выражение сценария.
Итак, перейдем к рассмотрению синтаксиса скриптов Qlik Sense
Синтаксис скрипта Qlik Sense – формализм Бэкуса-Наура
2. Что такое синтаксис сценария Qlik Sense?
В сценарии загрузки данных выполняются различные операции, для которых требуются операторы сценария и ключевые слова. Код сценария должен быть написан в таком формате или в таких обозначениях, которые являются приемлемыми и удобочитаемыми для машины. Операторы сценария выполняются последовательно, если синтаксис кода не содержит ошибок. Вы всегда должны помнить, что оператор сценария и каждая строка кода должны заканчиваться точкой с запятой ‘;’ Операции, выполняемые с помощью сценария: установление подключения к данным, загрузка таблицы данных, загрузка имен полей и значений и т. д.
При создании нового файла, настройке всех основных свойств, таких как переменные интерпретации чисел, форматы и т. д создается определенный начальный фрагмент кода. Два основных ключевых слова, используемых для загрузки данных – это LOAD и SELECT. В операторе LOAD вы можете использовать выражения и функции для управления данными по своему усмотрению.
3. Что такое формализм Бэкуса-Наура?
Форма Бэкус-Наур – это метаязык. Метаязыки – это языки, которые используются для объяснения других естественных или компьютерных языков. Любой метаязык следует определенной технике нотации или метасинтаксису, с помощью которого определяются и объясняются правила языка. В мире вычислительной техники существует несколько широко используемых метаязыков: форма Бэкуса-Наура (BNF), расширенная форма Бэкуса-Наура (EBNF), расширенная форма Бэкуса-Наура (ABNF).
Формулирование языка для компьютеров с четко определенной и отформатированной структурой очень важно для правильного преобразования языка в машинный язык во время выполнения.
Форма Бэкуса-Наура разработана особым образом, и содержит набор правил вывода, выраженных в виде,
<symbol> ::= __expression__
Каждый оператор BNF следует этому правилу, где символ – это значение, определенное с помощью знака «::=», а __expression__ - возможные и допустимые переменные, которые могут использоваться для определенного значения. Давайте разберем это, разделив приведенное выше утверждение на правую и левую половины. В правой половине – Нетерминальное значение, а в левой половине – Терминальное значение.
a. Нетерминалы. Нетерминалы – это синтаксические или лексические объекты, которые используются для определения символа, который будет использоваться в языке, подчиняющемся формальным правилам грамматики. Они всегда заключены в <>.
b. Терминалы. Терминалы - это символы/значения, которые являются вероятными результатами определенного (нетерминального объекта/символа) в соответствии с определенным правилом. Эти значения не могут быть изменены правилом.
В выражении предположим, что мы определяем объект <digit>, тогда с правой стороны выражения будут все конечные значения, то есть возможные значения, которые могут быть приняты системой как цифры, например 0,1,2, 3 .. и т. д.
Синтаксис скрипта – формализм Бэкуса-Наура
В случае наличия более одного значения, эти значения или последовательности символов, определенные справа, разделяются знаком «|». Нетерминал также можно определить, или заменить одним или несколькими нетерминалами с правой стороны. Например, если после определения <digits> мы хотим определить <integer>, мы можем сделать это, создав правило, чтобы целое число заменялось одной или несколькими цифрами.
<integer> ::= <digit> | <digit><digit>
Здесь и <integer>, и <digit> являются нетерминальными и выдадут такой результат,
<integer> ::= 5 <integer> ::= 86
4. Операторы сценария и ключевые слова
Операторы и ключевые слова сценария – это слова или символы, назначение или действие которых заранее определено в сценарии. Всего существует три типа операторов сценария, то есть обычные операторы сценария, операторы управления сценарием и префиксы сценария.
a. Обычные операторы скрипта используются для управления данными некоторыми общими способами. Эти операторы можно применять к многочисленным строкам кода. Вы всегда должны заканчивать обычный оператор скрипта точкой с запятой «;». Ниже представлены все стандартные функции скрипта, используемые в скрипте Qlik Sense.
- Alias
- AutoNumber
- Binary
- Comment field
- Comment table
- Connect
- Declare
- Derive
- Direct Query
- Directory
- Disconnect
- Drop field
- Drop table
- Execute
- FlushLog
- Force
- Load
- Let
- Loosen Table
- Map
- NullAsNull
- NullAsValue
- Qualify
- Rem
- Rename field
- Rename table
- Search
- Section
- Select
- Set
- Sleep
- SQL
- SQLColumns
- SQLTables
- SQLTypes
- Star
- Store
- Tag
- Trace
- Unmap
- Unqualify
- Untag
b. Операторы управления сценарием отвечают за управление потоком выполнения инструкции сценария. То есть они решают, какой оператор выполнить перед другим. Такие операторы следует хранить в строке сценария и исключать с помощью точки с запятой или конца строки. Ниже представлены некоторые из часто используемых операторов управления сценариями в Qlik Sense.
- Call
- Do..loop
- Exit script
- For..next
- For each..next
- If..then..elseif..else..end if
- Sub..end sub
- Switch..case..default..end switch
c. Префиксы сценария используются перед операторами сценария. Хотя эти префиксы могут использоваться только с обычными операторами сценария и в качестве суффикса (when и unless) для некоторых операторов управления. Ниже приведены префиксы, используемые в операторах сценария Qlik Sense.
- Add
- Buffer
- Concatenate
- Crosstable
- First
- Generic
- Hierarchy
- HierarchyBelongsTo
- Inner
- IntervalMatch
- Join
- Keep
- Left
- Mapping
- NoConcatenate
- Outer
- Replace
- Right
- Sample
- Semantic
- Unless
- When
5. Переменные в редакторе загрузки данных
Переменные подобны местам хранения или контейнерам для числовых, буквенно-цифровых или строковых значений. Переменная определяется в начале и может соответственно изменять свое значение, что будет отражаться во всех местах, где эта переменная используется в скрипте. Переменные определяются либо в разделе обзора переменных, либо в скрипте в редакторе загрузки данных. Вы можете определить переменную и присвоить ей значение с помощью операторов Let и Set в скрипте загрузки данных.
Каждый раз, когда вы присваиваете значение переменной, а затем при выполнении скрипта, это значение отображается как окончательный результат. Но если вы используете знак «=», тогда значение переменной оценивается как выражение и возвращается результат оценки. Значения переменных оцениваются по формуле, и затем возвращается результат. Переменные используются, когда вы хотите использовать одно и то же значение или один и тот же тип строки или текста много раз в строке, например, вы можете сохранить путь к файлу в переменной и использовать его позже в любом месте строки.
i. Определение переменной
set variablename = string
Переменная определяется с помощью двух операторов Set и Let.
set variablename = string
То есть Set используется для присвоения переменной строкового значения.
Set name = Chris; or let variable = expression
Let используется для присвоения числового значения или значения, которое может использоваться в вычислениях переменной. Например,
пусть let Days = Count(Today()); // возвращает общее количество записей, сделанных в поле «Today», и присваивает значение переменной Day.
ii. Расчет переменных
Вычисление переменных происходит, когда вы определяете переменные с помощью оператора Let и функций, которые вы используете в операторах. Чтобы лучше понять это, посмотрите на образцы данных, приведенные ниже. Используя эти данные, мы проведем расчеты.
LOAD * INLINE [ Customer, Sales A, 150 A, 200 B, 240 B, 230 C, 410 C, 330 ];
Теперь рассчитаем здесь две разные вещи: одна будет вычислять сумму продаж для каждого клиента, то есть индивидуально для клиентов A, B и C. Вторая инструкция будет оценивать общие продажи всех клиентов.
Let cSales = 'Sum(Sales)' ; Let tSales = '=Sum(Sales)' ;
Чтобы получить результат оценки в таблице, мы будем использовать знаки доллара перед каждым выражением Sum (Sales), например = $(cSales) и = $(tSales). Таким образом, переменная вычисляется, а затем расширяется, и возвращается результат оценки. Если вы не используете знак доллара, то инструкция будет возвращать только строки.
Клиент |
$(cSales) |
$(tSales) |
A |
350 |
1560 |
B |
470 |
1560 |
C |
740 |
1560 |
Если вы хотите удалить переменную, вы можете сделать это, удалив ее из обзора переменных.
6. Выражения сценария Qlik Sense
Выражения сценария представляют собой фрагмент кода, который содержит комбинацию функций, полей и операторов, записанных в стандартной нотации или синтаксисе. Во время выполнения сценария оцениваются элементы выражения сценария, и результат возвращается в виде строки или числа. Если выражение сценария содержит логическую функцию, результатом будет «0» для False или «1» для True.
Expression ::=(constant | fieldref | operator1 expression | expression operator2 expression | function | ( expression ))
Если constant может быть строкой или числом, заключенным в одинарные кавычки. Строка может быть текстом, датой или временем, тогда как число может состоять из n цифр, но оно не должно разделяться десятичным разделителем или разделителем тысяч.
Fieldref – это имя поля таблицы, которая будет загружена.
Operator1 – это унарный оператор, который будет работать с выражением справа от него.
Operator2 - это бинарный оператор, который работает с выражениями с обеих сторон.
function ::= functionname( parameters
parameters ::= expression { , expression }
Вложенность функций и выражений может выполняться, если это не выходит за рамки понимания логики системы.
Ну вот и все, что мы хоте рассказать о синтаксисе сценария Qlik Sense. Надеемся, вам понравилось наше объяснение.
7. Заключение
На этом мы завершаем наш урок по синтаксису скрипта Qlik Sense. Мы надеемся, что урок поможет вам лучше понять работу со скриптом загрузки данных в Qlik Sense.