![]() ![]() |
Класс Total применяется для работы со сводными данными. В его состав входят несколько функций для расчета сводных данных. Эти функции представляют собой выражения JavaScript BIRT для подсчета сводных значений по строкам отчета. Механизм создания отчетов BIRT реализует функцию на следующих этапах:
BIRT разбивает все сценарии, в которых используются сводные данные, на два этапа. Это обстоятельство важно только на этапе отладки выражений со сводными функциями. Например, предположим, что в нижнем колонтитуле группы нужно показать вклад данной группы в общую сумму в процентах. Для этого можно задать следующее выражение:
В данном примере выражение Total.OVERALL указывает на то, что BIRT должен вычислить сумму значений по всем строкам, даже несмотря на то, что это выражение используется в сводных результатах для группы. При обработке выражения из предыдущего примера BIRT делает один проход для вычисления общего баланса, а затем второй проход для вычисления значений по всем счетам.
Для класса Total действуют следующие общие правила:
Все сводные функции поддерживают два необязательных аргумента для управления фильтрацией и группировкой:
Аргумент filter представляет собой логическое выражение, которое BIRT вычисляет для каждой строки. При расчете сводного значения во внимание принимаются только те строки, которые соответствуют указанному фильтру. Например, можно вычислить сумму размеров кредита активных клиентов, чтобы определить максимальную возможную величину суммарного кредита.
Выражение вычисляется на этапе преобразования данных. В выражении можно использовать столбцы строки, параметры, пользовательские функции и другие ресурсы контекста, описанного выше. Пример:
Пустое или неопределенное значение аргумента filter, а также значение Total.NO_FILTER указывает на то, что фильтр не применяется. Если фильтр не будет задан приложением, он не будет применяться. Если задан аргумент group, для отключения фильтра нужно присвоить аргументу filter пустое значение или значение Total.NO_FILTER.
Довольно часто в отчетах требуется вычислять сводные значения для групп элементов. Например, отчет может быть сгруппирован по клиентам и заказам, и в строках данных могут находиться элементы данных. Для каждого элемента можно задать цену за единицу и количество, как показано в следующем примере:
Данная сводная функция суммирует значения текущей группы. Если она будет помещена в нижний колонтитул заказа, в результате будет получена сумма для всех элементов отдельного заказа. Если она будет помещена в нижний колонтитул клиента, будет показана сумма по всем элементам и всем заказам клиента. Если она будет помещена в нижний колонтитул отчета, будет показана сумма по всем клиентам.
Иногда возникает потребность в сводном значении для группы другого уровня. Например, может потребоваться удельный вес текущего заказа среди всех заказов данного клиента. Для расчета этой величины нужно знать сумму по всем группам в дополнение к сумме по текущей группе. Для этого можно воспользоваться следующим аргументом:
Аргументу group можно присвоить одно из следующих значений:
Применение аргумента group проиллюстрировано на следующих примерах:
Total.sum( row["myCol"] null, null ); // текущая группа Total.sum( row["myCol"], null, "Customer" ); // по имени Total.sum( row["myCol"], null, "row[`custID']" ); // по ключу Total.sum( row["myCol"], null, 1 ); // по номеру Total.sum( row["myCol"], null, "Overall" ); // по набору данных Total.sum( row["myCol"], null, 0 ); // по набору данных
Вместе с аргументом grouping должен быть указан аргумент filter. Если фильтр не нужен, присвойте аргументу filter пустое значение. Номера не нужно заключать в кавычки. Он должен быть указан в виде числа. Значение 1 - это группа первого уровня, тогда как "1" - группа с именем "1".
OVERALL
Эта функция вычисляет среднее арифметическое значение. Если выражение является числом, данная функция возвращает среднее арифметическое для множества чисел. Если выражение является датой, данная функция возвращает среднюю дату.
Total.ave( expr [, filter [, group ]] )
Данная функция возвращает среднее арифметическое значение указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Следующее выражение возвращает средний возраст студентов в группе:
Следующее выражение возвращает среднюю дату рождения студентов в группе:
Сводная функция Total.median
Сводная функция Total.mode
Сводная функция Total.movingAve
Сводная функция Total.stdDev
Сводная функция Total.variance
Сводная функция Total.weightedAve
Данная функция возвращает количество строк в группе.
Total.count( [ filter [, group ]] )
В следующем примере данная функция применяется для подсчета количества студентов мужского и женского пола в группе. Необходимо создать два элемента данных. Первому элементу данных нужно присвоить следующее значение:
Второму элементу данных нужно присвоить следующее значение:
Сводная функция Total.countDistinct
Сводная функция Total.sum
Данная функция подсчитывает количество различных значений в группе или наборе данных. Аргумент expr позволяет задать выражение для группировки значений. В данном выражении должен использоваться столбец данных. Все пустые значения рассматриваются как одно и то же значение.
Total.countDistinct ( expr [, filter [, group ]] )
Количество различных значений в группе или наборе данных. Если нет ни одной строки, данная функция возвращает значение 0.
Предположим, что требуется узнать, сколько стран мира представляют студенты группы. Для этого можно создать элемент данных с помощью следующего выражения:
В данном выражении row.Country - столбец, в котором указано название или код страны студента. Предположим, что для некоторых студентов значение этого столбца не задано (то есть, их страна неизвестна). С помощью следующего оператора можно исключить такие строки из подсчета:
Сводная функция Total.count
Данная сводная функция возвращает первое значение в наборе данных. Это самое первое значение, полученное для набора данных при выборке строк в соответствии с условиями сортировки, заданными для таблицы или списка.
Total.first( expr [, filter [, group ]] )
Данная функция возвращает первое значение из множества строк набора данных или пустое значение, если в наборе данных нет ни одной строки.
Предположим, что отчет содержит список операций с определенной ценной бумагой за период времени. С помощью следующего оператора можно получить информацию о дате первоначальной покупки ценной бумаги.
Сводная функция Total.isBottomNPercent
Сводная функция Total.max
Сводная функция Total.min
Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в число n минимальных значений.
Total.isBottomN( expr, n, [, filter [, group ]] )
Данная функция возвращает значение true или false. Значение true возвращается в случае, если значение числового поля входит в число n минимальных значений в указанном столбце.
Предположим, что в отчете пять строк, и в определенном столбце в этих строках находятся значения 1, 2, 3, 4 и 5. Выражение Total.isBottomN(expr, 2) позволяет проверить, содержит ли поле, указанное выражением expr, значение 1 или 2, т.е. одно из 2 минимальных значений в столбце.
Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в n процентов минимальных значений.
Total.isBottomNPercent( expr, n, [, filter [, group ]] )
Данная функция возвращает значение true или false. Значение true возвращается в случае, если значение числового поля входит в число n процентов минимальных значений в указанном столбце.
Предположим, что в отчете пять строк, и в определенном столбце в этих строках находятся значения 1, 2, 3, 4 и 5. Выражение Total.isBottomNPercent(expr, 60) позволяет проверить, содержит ли поле, указанное выражением expr, значение 1, 2 или 3, т.е. одно из 60% минимальных значений в столбце.
Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в число n максимальных значений.
Total.isTopN( expr, n, [, filter [, group ]] )
Данная функция возвращает значение true или false. Значение true возвращается в случае, если значение числового поля входит в число n максимальных значений в указанном столбце.
Предположим, что в отчете пять строк, и в определенном столбце в этих строках находятся значения 1, 2, 3, 4 и 5. Выражение Total.isTopN(expr, 2) позволяет проверить, содержит ли поле, указанное выражением expr, значение 4 или 5, т.е. одно из 2 максимальных значений в столбце.
Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в n процентов максимальных значений.
Total.isTopNPercent( expr, n, [, filter [, group ]] )
Данная функция возвращает значение true или false. Значение true возвращается в случае, если значение числового поля входит в число n процентов максимальных значений в указанном столбце.
Предположим, что в отчете пять строк, и в определенном столбце в этих строках находятся значения 1, 2, 3, 4 и 5. Выражение Total.isTopNPercent(expr, 60) позволяет проверить, содержит ли поле, указанное выражением expr, значение 3, 4 или 5, т.е. одно из 60% максимальных значений в столбце.
Данная функция возвращает последнее значение в наборе данных. Это самое последнее значение, полученное для набора данных при выборке строк в соответствии с условиями сортировки, заданными для таблицы или списка.
Total.last( expr [, filter [, group ]] )
Данная функция возвращает последнее значение из множества строк набора данных или пустое значение, если в наборе данных нет ни одной строки.
Предположим, что отчет содержит список операций с определенной ценной бумагой за период времени. С помощью следующего оператора можно получить информацию о дате последней продажи ценной бумаги.
Сводная функция Total.first
Сводная функция Total.max
Сводная функция Total.min
Данная функция возвращает максимальное значение указанного выражения. Выражение вычисляется для каждой строки, и максимальный из полученных результатов возвращается. Допустимые типы данных: числа, даты и строки.
Total.max( expr [, filter [, group ]] )
Данная функция возвращает максимальное значение указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Следующее выражение позволяет найти самого старшего студента в группе:
Сводная функция Total.first
Сводная функция Total.isBottomNPercent
Сводная функция Total.min
Эта функция вычисляет арифметическую медиану. Медиана - это центральное значение в наборе данных (т.е. такое значение, для которого равны количества значений больше него и меньше него).
Total.median( expr [, filter [, group ]] )
Данная функция возвращает медиану для указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Следующее выражение возвращает возраст среднего по возрасту студента в группе:
Следующее выражение возвращает дату рождения среднего по возрасту студента в группе:
Сводная функция Total.ave
Сводная функция Total.mode
Сводная функция Total.movingAve
Сводная функция Total.stdDev
Сводная функция Total.variance
Сводная функция Total.weightedAve
Данная функция возвращает минимальное значение указанного выражения. Выражение вычисляется для каждой строки, и минимальный из полученных результатов возвращается. Допустимые типы данных: числа, даты и строки.
Total.min( expr [, filter [, group ]] )
Данная функция возвращает минимальное значение указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Следующее выражение возвращает возраст самого юного студента в группе:
Сводная функция Total.first
Сводная функция Total.isBottomNPercent
Сводная функция Total.max
Эта функция вычисляет моду для набора данных. Модой называется значение, встречающееся в наборе данных чаще всего. Например, в множестве {1, 2, 3, 2, 4, 7} модой является число 2, поскольку оно встречается дважды, тогда как остальные числа встречаются только один раз. Если в наборе данных несколько мод, например, если набор данных содержит элементы {1,2,3,2,3}, данная функция возвращает пустое значение.
Total.mode( expr [, filter [, group ]] )
Данная функция возвращает моду для указанного выражения. Если нет ни одной строки данных или во множестве несколько мод, функция возвращает пустое значение.
Следующее выражение возвращает наиболее часто встречающийся возраст студентов в группе:
Сводная функция Total.ave
Сводная функция Total.median
Сводная функция Total.movingAve
Сводная функция Total.stdDev
Сводная функция Total.variance
Сводная функция Total.weightedAve
Эта функция вычисляет скользящее среднее значение. Аргумент expr задает выражение для вычисления скользящего среднего, а аргумент window - количество строк. Скользящее среднее вычисляется для того порядка следования строк, который будет получен в запросе. Обычно этот порядок задается условием сортировки элемента List или Table.
Total.movingAve( expr, window [, filter [, group ]] )
Данная функция возвращает скользящее среднее для указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Предположим, что в отчете указаны исторические данные о цене акции. Для просмотра скользящего среднего значения для цены акции за последние 5 дней введите следующий оператор:
Сводная функция Total.ave
Сводная функция Total.median
Сводная функция Total.mode
Сводная функция Total.stdDev
Сводная функция Total.variance
Сводная функция Total.weightedAve
Данная функция анализирует набор значений и возвращает значение указанного процентиля для набора данных. Например, с помощью этой функции можно узнать 90-й процентиль результатов экзамена.
Данная функция возвращает значение, соответствующее указанному процентилю для набора значений.
Следующий оператор позволяет вычислить пятидесятый процентиль результатов экзамена:
Если в набор результатов экзамена входят значения 10, 20, 30, 40 и 50, данный оператор вернет значение 30.
Данная функция вычисляет процентный ранг значения в указанном поле.
percentRank( expr, filter [, group ]] )
Данная функция возвращает процентный ранг значения в указанном поле. Диапазон возвращаемых значений - от 0 до 1.
Следующий оператор возвращает процентный ранг определенного результата экзамена среди всех результатов в столбце:
Если в набор данных входят результаты 10, 10, 20 и 50, а в ячейке данного оператора находится значение 30, функция вернет значение 0.5, т.к. половина результатов больше 20, а половина - меньше 20.
Данная функция вычисляет значение t.
percentSum( expr [, filter [, group ]] )
Данная функция возвращает процентную долю данного значения в сумме всех значений диапазона.
Следующий оператор позволяет оценить объем данного заказа по отношению к суммарному объему всех заказов:
Данная функция вычисляет значение, по отношению к которому можно сказать, что 0%, 25%, 50%, 75% или 100% значений набора данных превосходят его.
quartile( expr, quartile, [, filter [, group ]] )
Данная функция возвращает значение указанного квартиля.
Следующий оператор позволяет определить объем заказа, превышающий по объему 75% заказов и уступающий 25% заказов.
Данная функция вычисляет ранг значения во множестве. Ранг может принимать значение от 1 до количества элементов в наборе. Если два значения одинаковы, их ранг одинаков.
rank( expr [, filter [, group ]] )
Данная функция возвращает целое число в диапазоне от 1 до количества элементов во множестве, представляющее собой ранг указанного числа во множестве.
Следующий оператор возвращает ранг значения поля OrderAmt среди всех объемов заказов в столбце OrderAmt.
Данная функция вычисляет скользящее число строк.
runningCount( filter [, group ]] )
Данная функция возвращает скользящее число строк.
Следующий оператор позволяет вычислить скользящее число строк в отчете:
Сводная функция Total.count
Сводная функция Total.percentRank
Данная функция вычисляет среднеквадратичное отклонение множества чисел. Среднеквадратичное отклонение характеризует степень рассеяния набора чисел.
Total.stdDev( expr [, filter [, group ]] )
Данная функция возвращает среднеквадратичное отклонение для указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Сводная функция Total.ave
Сводная функция Total.median
Сводная функция Total.mode
Сводная функция Total.movingAve
Сводная функция Total.variance
Сводная функция Total.weightedAve
Данная функция возвращает сумму значений во всех строках группы. Для каждой строки вычисляется выражение, указанное в аргументе expr. Сумма вычисляется путем суммирования всех полученных значений.
Total.sum( expr [, filter [, group ]] )
Сумму значений указанного выражения. Если нет ни одной строки, данная функция возвращает значение 0.
Следующий оператор позволяет вычислить суммарный объем заказов определенного клиента:
Сводная функция Total.count
Сводная функция Total.percentRank
Данная функция вычисляет дисперсию множества чисел. Дисперсия характеризует степень рассеяния набора чисел.
Total.variance( expr [, filter [, group ]] )
Данная функция возвращает дисперсию указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Сводная функция Total.ave
Сводная функция Total.median
Сводная функция Total.mode
Сводная функция Total.movingAve
Сводная функция Total.stdDev
Сводная функция Total.weightedAve
Эта функция вычисляет средневзвешенное значение. Если выражение expr или weight дает пустой результат, строка не учитывается.
Total.weightedAve( expr, weight [, filter [, group ]] )
Данная функция возвращает среднее взвешенное значение указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.
Предположим, что финансовое приложение контролирует покупку пакетов определенных акций. Все пакеты приобретаются по разной цене и содержат разное число акций. Следующий оператор позволяет определить средневзвешенную цену покупки акций:
Сводная функция Total.ave
Сводная функция Total.median
Сводная функция Total.mode
Сводная функция Total.movingAve
Сводная функция Total.stdDev
Сводная функция Total.variance
![]() ![]() |