Above — функция диаграммы

Функция Above() оценивает выражение в строке над текущей строкой в сегменте столбца в таблице. Строка, для которой выполняется вычисление, зависит от значения элемента offset, если таковой имеет место, по умолчанию принимается строка непосредственно над текущей строкой. Для диаграмм, за исключением таблиц, функция Above() используется для оценки строки над текущей строкой в эквиваленте прямой таблицы диаграммы.

Синтаксис:  

Above([TOTAL] expr [ , offset [,count]])

Тип возвращаемого значения: dual

Аргументы:  

Аргумент Описание
expr Выражение или поле, содержащее данные для измерения.
offset

Если задать значение offsetnбольше 0, можно будет переместить оценку выражения n по строкам выше текущей строки.

Если задать смещение равным 0, оценка выражения будет выполнена в текущей строке.

Если задать отрицательное число смещения, функция Above будет работать как функция Below с соответствующим положительным числом смещения.

count

Если задать для третьего аргумента count значение больше 1, функция вернет диапазон значений элемента count: по одному для каждой строки таблицы элемента count, считая вверх от исходной ячейки.

В данной форме функция может использоваться в качестве аргумента для любой специальной функции интервала. Функции над выборкой

TOTAL

Если таблица имеет одно измерение, или если в качестве аргумента используется префикс TOTAL, текущий сегмент столбца всегда равен всему столбцу.

См.: Определение объема агрегирования

В первой строке сегмента столбца возвращено значение NULL, так как над этой строкой нет других строк.

Примечание: Сегмент столбца определяется как последовательное подмножество ячеек с теми же значениями для измерений в текущем порядке сортировки. Функции диаграмм между записями выполняют вычисления в сегменте столбца за исключением крайнего правого измерения в эквивалентной диаграмме прямой таблицы. Если в диаграмме есть только одно измерение, или если указан квалификатор TOTAL, выражение оценивается по всей таблице.
Примечание: Если таблица или эквивалент таблицы имеют несколько вертикальных измерений, текущий сегмент столбца будет включать только строки с теми же значениями, что и текущая строка во всех столбцах измерений, кроме столбца с последним измерением в межполевом порядке сортировки.

Ограничения:  

Рекурсивные вызовы возвращают значение NULL.

Примеры и результаты:  

Пример 1:  

Customer Sum(Sales) Above(Sum(Sales)) Sum(Sales) + Above(Sum(Sales)) Above offset 3 Higher?
  2566 - - - -
Astrida 587 - - - -
Betacab 539 587 1126 - -
Canutility 683 539 1222 - Higher
Divadip 757 683 1440 1344 Higher
Диаграмма таблицы для примера 1.

В представлении диаграммы таблицы, показанном в этом примере, таблица создана из измерения Customer и мер: Sum(Sales) и Above(Sum(Sales)).

Столбец Above(Sum(Sales)) возвращает значение NULL для строки Customer, содержащей элемент Astrida, так как над этой строкой нет других строк. В результате для строки Betacab показано значение элемента Sum(Sales) для элемента Astrida, в результате для строкиCanutility показано значение для элемента Sum(Sales) для строки Betacab и так далее.

Для столбца, помеченного как Sum(Sales)+Above(Sum(Sales)), в строке для элемента Astrida показан результат добавления значений Sum(Sales) в строки Betacab + Betacab (539+587). В результате для строки Betacab будет показан результат добавления значений Sum(Sales) в строки Canutility + Canutility (683+539).

Меры, помеченные как Above offset 3, созданные с помощью выражения Sum(Sales)+Above(Sum(Sales), 3), имеют аргумент offset, установленный на 3, и эффект выбора значения в строке на три строки выше текущей строки. Таким образом, добавляется значение Sum(Sales) для текущего элемента Customer к значению для элемента Customer на три строки выше. Значения, возвращенные для первых трех строк Customer, являются нулевыми.

В таблице также показаны более сложные меры: одна, созданная из элемента Sum(Sales)+Above(Sum(Sales)), а другая, помеченная как Higher?, созданная из элемента IF(Sum(Sales)>Above(Sum(Sales)), 'Higher').

Подсказка: Эту функцию можно также использовать в диаграммах, кроме таблиц, например, в линейчатых диаграммах.
Подсказка: Для других типов диаграмм преобразуйте диаграмму в эквивалент прямой таблицы, чтобы можно было легко интерпретировать соотношение строк и функций.

Пример 2:  

В представлениях диаграмм таблиц, показанных в этом примере, к диаграммам добавлено больше измерений: Month и Product. Для диаграмм с несколькими измерениями результаты выражений, содержащих функции Above, Below, Top и Bottom, зависят от порядка, в котором измерения столбцов сортируются QlikView. Программа QlikView оценивает функции на основе сегментов столбца, полученных из измерения, отсортированного последним. Контроль за порядком сортировки столбцов осуществляется при помощи параметра Сортировка. Этот порядок не обязательно соответствует порядку отображения столбцов в таблице.

В следующем представлении диаграммы таблицы для примера 2 последним отсортированным измерением является Month, поэтому функция Above выполняет оценку на основе месяцев. Существует серия результатов для каждого значения Product для каждого месяца (от Jan до Aug) — сегмент столбца. За этим сегментом следует серия для другого сегмента столбца: для каждого элемента Month для следующего элемента Product. Будет указан сегмент столбца для каждого значения Customer для каждого элемента Product.

Customer Product Month Sum(Sales) Above(Sum(Sales))
      2566 -
Astrida AA Jan 46 -
Astrida AA Feb 60 46
Astrida AA Mar 70 60
Astrida AA Apr 13 70
Astrida AA May 78 13
Astrida AA Jun 20 78
Astrida AA Jul 45 20
Astrida AA Aug 65 45
Диаграмма таблицы для примера 2.

Пример 3:  

В представлении диаграммы таблицы для примера 3 последним отсортированным измерением является Product. Это выполняется путем перемещения измерения Product в позицию 3 на вкладке «Сортировка» на панели свойств. Функция Above оценивается для каждого элемента Product, и поскольку существует только два продукта, AA и BB, в каждой серии будет выдан только один результат, не являющийся нулевым. В строке BB для месяца Jan значение для элемента Above(Sum(Sales)) равно 46. Для строки AA значение нулевое. Значение в каждой строке AA для любого месяца всегда будет нулевым, поскольку отсутствует значение элемента Product над строкой AA. Вторая серия оценивается в строках AA и BB для месяца Feb для значения Customer, Astrida. Если все месяцы для значения Astrida оценены, эта последовательность повторяется для второго значения CustomerBetacab и так далее.

Customer Product Month Sum(Sales) Above(Sum(Sales))
      2566 -
Astrida AA Jan 46 -
Astrida BB Jan 46 46
Astrida AA Feb 60 -
Astrida BB Feb 60 60
Astrida AA Mar 70 -
Astrida BB Mar 70 70
Astrida AA Apr 13 -
Astrida BB Apr 13 13
Диаграмма таблицы для примера 3.

Пример 4:  

Результат

Функцию Above можно использовать как ввод в функции над выборкой. Например: RangeAvg (Above(Sum(Sales),1,3)).

В аргументах для функции Above() для элемента offset задано значение 1, а для элемента count задано значение 3. Функция находит результаты выраженияSum(Sales) в трех строках непосредственно над текущей строкой в сегменте столбца (если есть строка). Эти три значения используются как ввод в функцию RangeAvg(), которая находит среднее значение в предоставленном диапазоне чисел.

Таблица с элементом Customer в виде измерения выдает следующие результаты для выражения RangeAvg().

Astrida
Betacab
Canutility
Divadip:
-
587
563
603

Данные, используемые в примерах:

Monthnames:

LOAD * INLINE [

Month, Monthnumber

Jan, 1

Feb, 2

Mar, 3

Apr, 4

May, 5

Jun, 6

Jul, 7

Aug, 8

Sep, 9

Oct, 10

Nov, 11

Dec, 12

];

Sales2013:

crosstable (Month, Sales) LOAD * inline [

Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec

Astrida|46|60|70|13|78|20|45|65|78|12|78|22

Betacab|65|56|22|79|12|56|45|24|32|78|55|15

Canutility|77|68|34|91|24|68|57|36|44|90|67|27

Divadip|57|36|44|90|67|27|57|68|47|90|80|94

] (delimiter is '|');

Чтобы выполнить сортировку месяцев в правильном порядке, при создании диаграмм перейдите на вкладку Sort в свойствах диаграммы и установите флажок Expression для параметра Sort by. В поле выражения напишите Monthnumber.