Поля ввода
QlikView поддерживает особый тип поля, которое можно изменить без выполнения скрипта — поле ввода.
Поле ввода является обычным полем QlikView, с той разницей, что его значения — в том виде, в каком они считываются в скрипте — можно изменить позже без повторного запуска скрипта. Поля ввода могут использоваться как обычные поля во всех типах объектов листа.
При использовании полей ввода скрипт создает метку-заполнитель для каждого значения поля, которое может впоследствии редактироваться для размещения в нем новых данных. Любое поле можно сделать полем ввода путем его внесения в оператор inputfield в скрипте до того, как он появится в операторе LOAD или SELECT.
Значения поля ввода можно изменить в ячейках списка, ячейках простой таблицы и в ячейках выражений табличной диаграммы. Редактировать можно только те списки и столбцы таблицы, которые содержат поля ввода. При наведении курсора на редактируемую ячейку можно увидеть значок ввода. Нажатием на значок можно установить ячейку в режим редактирования ввода. Для перемещения по ячейкам во время нахождения в режиме редактирования ввода можно использовать клавиши со стрелками вверх/вниз. Каждый раз при вводе новых значений весь документ QlikView будет пересчитан в автоматическом режиме.
Ячейка выражений диаграммы таблицы может содержать специальную функцию агрегирования поля ввода и, тем не менее, разрешать ввод данных. В таком случае изменение будет перераспределено назад в исходные значения поля на основе предопределенных алгоритмов, например «развернуть одинаково» или «развернуть пропорционально».
Можно указать относительное изменение.
Применяется следующий синтаксис (n — число):
Синтаксис | Описание |
---|---|
%+n | увеличивает текущее значение на n% |
%-n | уменьшает текущее значение на n% |
+=n | увеличивает текущее значение на n |
-=n | уменьшает текущее значение на n |
*=n | умножает текущее значение на n |
/=n | делит текущее значение на n |
Пример:
%+10 увеличивает текущее значение на 10%.
+=56 увеличивает текущее значение на 56.
*=2 умножает текущее значение на 2.
/=2 делит текущее значение на 2.
/=0 не приводит к изменениям.
Для извлечения и установки значений программным путем существуют также API автоматизации.
Ограничения
- Вычисляемое поле и ключевые поля не могут использоваться в качестве полей ввода. Функции поля ввода будут автоматически отключены.
- Поля ввода не предназначены для большого количества данных, т.к. данные в них хранятся значительно менее эффективно, чем в обычных полях.
- Ключ между полем ввода и логическим полем должен быть уникальным: он не может содержать дублирующихся значений.
Пример поля ввода
В этом примере поле ввода добавляется к данным и показывает, как можно обновлять значения в интерактивном режиме.
-
Загрузите следующие данные в скрипт загрузки.
Inputfield Value;
Table1:
LOAD * INLINE
[
Key, Attribute, Value
Bob, Jan, 100
Bob, Feb, 200
Bob, Mar, 300
Kate, Jan, 400
Kate, Feb, 500
Kate, Mar, 600
];
- После загрузки данных создайте простую таблицу и добавьте все три поля.
-
Создайте диаграмму Прямая таблица и добавьте Key в качестве измерения. Добавьте следующие выражения:
- Sum(Value)
- InputSum(Value)
Оба выражения будут показывать одно и то же значение, но в прямой таблице можно обновить только InputSum(Value), не Sum(Value).
Теперь можно изменить Value в простой таблице в интерактивном режиме. Агрегированные значения выражений в прямой таблице будут обновлены соответствующим образом.
Также можно обновить значения выражения InputSum(Value) в прямой таблице. Базовые значения будут обновлены в простой таблице. Изменение распределяется одинаково на все значения, но можно изменить режим распределения в функции InputSum().