Предыдущий разделСледующий раздел


Класс Total

Класс Total применяется для работы со сводными данными. В его состав входят несколько функций для расчета сводных данных. Эти функции представляют собой выражения JavaScript BIRT для подсчета сводных значений по строкам отчета. Механизм создания отчетов BIRT реализует функцию на следующих этапах:

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

(balance / Total.sum( balance, Total.OVERALL ) ) * 100.0 

В данном примере выражение Total.OVERALL указывает на то, что BIRT должен вычислить сумму значений по всем строкам, даже несмотря на то, что это выражение используется в сводных результатах для группы. При обработке выражения из предыдущего примера BIRT делает один проход для вычисления общего баланса, а затем второй проход для вычисления значений по всем счетам.

Для класса Total действуют следующие общие правила:

Группировка и фильтрование данных

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

Total.<aggregate function> ( ..., filter, group ) 

Об аргументе filter

Аргумент filter представляет собой логическое выражение, которое BIRT вычисляет для каждой строки. При расчете сводного значения во внимание принимаются только те строки, которые соответствуют указанному фильтру. Например, можно вычислить сумму размеров кредита активных клиентов, чтобы определить максимальную возможную величину суммарного кредита.

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

Total.sum( row["CreditLimit"], row["Active"] == 'Y' ); 

Пустое или неопределенное значение аргумента filter, а также значение Total.NO_FILTER указывает на то, что фильтр не применяется. Если фильтр не будет задан приложением, он не будет применяться. Если задан аргумент group, для отключения фильтра нужно присвоить аргументу filter пустое значение или значение Total.NO_FILTER.

Об аргументе group

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

Total.sum( row["price"] * row["quantity"] ) 

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

Иногда возникает потребность в сводном значении для группы другого уровня. Например, может потребоваться удельный вес текущего заказа среди всех заказов данного клиента. Для расчета этой величины нужно знать сумму по всем группам в дополнение к сумме по текущей группе. Для этого можно воспользоваться следующим аргументом:

Total.sum( row.CreditLimit, null, "Customer" ); 

Аргументу 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

Эта функция вычисляет среднее арифметическое значение. Если выражение является числом, данная функция возвращает среднее арифметическое для множества чисел. Если выражение является датой, данная функция возвращает среднюю дату.

Синтаксис

Total.ave( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает среднее арифметическое значение указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.

Пример

Следующее выражение возвращает средний возраст студентов в группе:

Total.ave( row.Age ) 

Следующее выражение возвращает среднюю дату рождения студентов в группе:

Total.ave( row.BirthDate ) 

См. также

Сводная функция Total.median

Сводная функция Total.mode

Сводная функция Total.movingAve

Сводная функция Total.stdDev

Сводная функция Total.variance

Сводная функция Total.weightedAve

Total.count

Данная функция возвращает количество строк в группе.

Синтаксис

Total.count( [ filter [, group ]] )

Аргументы

Пример

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

Total.sum( row.sex == 'M' ); 

Второму элементу данных нужно присвоить следующее значение:

Total.sum( row.sex == 'F' ); 

См. также

Сводная функция Total.countDistinct

Сводная функция Total.sum

Total.countDistinct

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

Синтаксис

Total.countDistinct ( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Количество различных значений в группе или наборе данных. Если нет ни одной строки, данная функция возвращает значение 0.

Пример

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

Total.countDistinct( row.Country ) 

В данном выражении row.Country - столбец, в котором указано название или код страны студента. Предположим, что для некоторых студентов значение этого столбца не задано (то есть, их страна неизвестна). С помощью следующего оператора можно исключить такие строки из подсчета:

Total.countDistinct( row.Country, row.Country != null ) 

См. также

Сводная функция Total.count

Total.first

Данная сводная функция возвращает первое значение в наборе данных. Это самое первое значение, полученное для набора данных при выборке строк в соответствии с условиями сортировки, заданными для таблицы или списка.

Синтаксис

Total.first( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает первое значение из множества строк набора данных или пустое значение, если в наборе данных нет ни одной строки.

Пример

Предположим, что отчет содержит список операций с определенной ценной бумагой за период времени. С помощью следующего оператора можно получить информацию о дате первоначальной покупки ценной бумаги.

Total.first( row.TransDate, row.Action == 'Buy' ); 

См. также

Сводная функция Total.isBottomNPercent

Сводная функция Total.max

Сводная функция Total.min

Total.isBottomN

Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в число n минимальных значений.

Синтаксис

Total.isBottomN( expr, n, [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает значение true или false. Значение true возвращается в случае, если значение числового поля входит в число n минимальных значений в указанном столбце.

Пример

Предположим, что в отчете пять строк, и в определенном столбце в этих строках находятся значения 1, 2, 3, 4 и 5. Выражение Total.isBottomN(expr, 2) позволяет проверить, содержит ли поле, указанное выражением expr, значение 1 или 2, т.е. одно из 2 минимальных значений в столбце.

См. также

Total.isBottomNPercent

Total.isTopN

Total.isTopNPercent

Total.isBottomNPercent

Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в 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% минимальных значений в столбце.

См. также

Total.isBottomN

Total.isTopN

Total.isTopNPercent

Total.isTopN

Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в число n максимальных значений.

Синтаксис

Total.isTopN( expr, n, [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает значение true или false. Значение true возвращается в случае, если значение числового поля входит в число n максимальных значений в указанном столбце.

Пример

Предположим, что в отчете пять строк, и в определенном столбце в этих строках находятся значения 1, 2, 3, 4 и 5. Выражение Total.isTopN(expr, 2) позволяет проверить, содержит ли поле, указанное выражением expr, значение 4 или 5, т.е. одно из 2 максимальных значений в столбце.

См. также

Total.isTopNPercent

Total.isBottomN

Total.isBottomNPercent

Total.isTopNPercent

Данная функция возвращает логическое значение, указывающее, входит ли значение указанного числового поля в 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.isTopN

Total.isBottomN

Total.isBottomNPercent

Total.last

Данная функция возвращает последнее значение в наборе данных. Это самое последнее значение, полученное для набора данных при выборке строк в соответствии с условиями сортировки, заданными для таблицы или списка.

Синтаксис

Total.last( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает последнее значение из множества строк набора данных или пустое значение, если в наборе данных нет ни одной строки.

Пример

Предположим, что отчет содержит список операций с определенной ценной бумагой за период времени. С помощью следующего оператора можно получить информацию о дате последней продажи ценной бумаги.

Total.last( row.TransDate, row.Action == 'Sell' ); 

См. также

Сводная функция Total.first

Сводная функция Total.max

Сводная функция Total.min

Total.max

Данная функция возвращает максимальное значение указанного выражения. Выражение вычисляется для каждой строки, и максимальный из полученных результатов возвращается. Допустимые типы данных: числа, даты и строки.

Синтаксис

Total.max( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

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

Пример

Следующее выражение позволяет найти самого старшего студента в группе:

Total.max( row.Age ) 

См. также

Сводная функция Total.first

Сводная функция Total.isBottomNPercent

Сводная функция Total.min

Total.median

Эта функция вычисляет арифметическую медиану. Медиана - это центральное значение в наборе данных (т.е. такое значение, для которого равны количества значений больше него и меньше него).

Синтаксис

Total.median( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает медиану для указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.

Пример

Следующее выражение возвращает возраст среднего по возрасту студента в группе:

Total.median( row.Age ) 

Следующее выражение возвращает дату рождения среднего по возрасту студента в группе:

Total.median( row.BirthDate ) 

См. также

Сводная функция Total.ave

Сводная функция Total.mode

Сводная функция Total.movingAve

Сводная функция Total.stdDev

Сводная функция Total.variance

Сводная функция Total.weightedAve

Total.min

Данная функция возвращает минимальное значение указанного выражения. Выражение вычисляется для каждой строки, и минимальный из полученных результатов возвращается. Допустимые типы данных: числа, даты и строки.

Синтаксис

Total.min( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

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

Пример

Следующее выражение возвращает возраст самого юного студента в группе:

Total.min( row.Age ) 

См. также

Сводная функция Total.first

Сводная функция Total.isBottomNPercent

Сводная функция Total.max

Total.mode

Эта функция вычисляет моду для набора данных. Модой называется значение, встречающееся в наборе данных чаще всего. Например, в множестве {1, 2, 3, 2, 4, 7} модой является число 2, поскольку оно встречается дважды, тогда как остальные числа встречаются только один раз. Если в наборе данных несколько мод, например, если набор данных содержит элементы {1,2,3,2,3}, данная функция возвращает пустое значение.

Синтаксис

Total.mode( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

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

Пример

Следующее выражение возвращает наиболее часто встречающийся возраст студентов в группе:

Total.mode( row.Age ) 

См. также

Сводная функция Total.ave

Сводная функция Total.median

Сводная функция Total.movingAve

Сводная функция Total.stdDev

Сводная функция Total.variance

Сводная функция Total.weightedAve

Total.movingAve

Эта функция вычисляет скользящее среднее значение. Аргумент expr задает выражение для вычисления скользящего среднего, а аргумент window - количество строк. Скользящее среднее вычисляется для того порядка следования строк, который будет получен в запросе. Обычно этот порядок задается условием сортировки элемента List или Table.

Синтаксис

Total.movingAve( expr, window [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает скользящее среднее для указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.

Пример

Предположим, что в отчете указаны исторические данные о цене акции. Для просмотра скользящего среднего значения для цены акции за последние 5 дней введите следующий оператор:

Total.movingAve( row.price, 5 ); 

См. также

Сводная функция Total.ave

Сводная функция Total.median

Сводная функция Total.mode

Сводная функция Total.stdDev

Сводная функция Total.variance

Сводная функция Total.weightedAve

Total.percentile

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

Синтаксис

Аргументы

Возвращаемое значение

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

Пример

Следующий оператор позволяет вычислить пятидесятый процентиль результатов экзамена:

Total.percentile( row.TestScore, 0.5) 

Если в набор результатов экзамена входят значения 10, 20, 30, 40 и 50, данный оператор вернет значение 30.

См. также

Total.percentRank

Total.percentSum

Total.quartile

Total.percentRank

Данная функция вычисляет процентный ранг значения в указанном поле.

Синтаксис

percentRank( expr, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает процентный ранг значения в указанном поле. Диапазон возвращаемых значений - от 0 до 1.

Пример

Следующий оператор возвращает процентный ранг определенного результата экзамена среди всех результатов в столбце:

Total.percentRank( row.Scores ) 

Если в набор данных входят результаты 10, 10, 20 и 50, а в ячейке данного оператора находится значение 30, функция вернет значение 0.5, т.к. половина результатов больше 20, а половина - меньше 20.

См. также

Total.percentile

Total.percentSum

Total.quartile

Total.percentSum

Данная функция вычисляет значение t.

Синтаксис

percentSum( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает процентную долю данного значения в сумме всех значений диапазона.

Пример

Следующий оператор позволяет оценить объем данного заказа по отношению к суммарному объему всех заказов:

Total.percentSum( row.OrderAmt ) 

См. также

Total.percentile

Total.percentRank

Total.quartile

Total.quartile

Данная функция вычисляет значение, по отношению к которому можно сказать, что 0%, 25%, 50%, 75% или 100% значений набора данных превосходят его.

Синтаксис

quartile( expr, quartile, [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает значение указанного квартиля.

Пример

Следующий оператор позволяет определить объем заказа, превышающий по объему 75% заказов и уступающий 25% заказов.

Total.quartile( row.OrderAmt, 3) 

См. также

Total.percentile

Total.percentRank

Total.percentSum

Total.rank

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

Синтаксис

rank( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает целое число в диапазоне от 1 до количества элементов во множестве, представляющее собой ранг указанного числа во множестве.

Пример

Следующий оператор возвращает ранг значения поля OrderAmt среди всех объемов заказов в столбце OrderAmt.

Total.rank( row.OrderAmt ) 

См. также

Total.percentRank

Total.runningCount

Данная функция вычисляет скользящее число строк.

Синтаксис

runningCount( filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает скользящее число строк.

Пример

Следующий оператор позволяет вычислить скользящее число строк в отчете:

Total.runningCount( ) 

См. также

Сводная функция Total.count

Сводная функция Total.percentRank

Total.stdDev

Данная функция вычисляет среднеквадратичное отклонение множества чисел. Среднеквадратичное отклонение характеризует степень рассеяния набора чисел.

Синтаксис

Total.stdDev( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает среднеквадратичное отклонение для указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.

См. также

Сводная функция Total.ave

Сводная функция Total.median

Сводная функция Total.mode

Сводная функция Total.movingAve

Сводная функция Total.variance

Сводная функция Total.weightedAve

Total.sum

Данная функция возвращает сумму значений во всех строках группы. Для каждой строки вычисляется выражение, указанное в аргументе expr. Сумма вычисляется путем суммирования всех полученных значений.

Синтаксис

Total.sum( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Сумму значений указанного выражения. Если нет ни одной строки, данная функция возвращает значение 0.

Пример

Следующий оператор позволяет вычислить суммарный объем заказов определенного клиента:

Total.sum( row.OrderAmt ) 

См. также

Сводная функция Total.count

Сводная функция Total.percentRank

Total.variance

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

Синтаксис

Total.variance( expr [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает дисперсию указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.

См. также

Сводная функция Total.ave

Сводная функция Total.median

Сводная функция Total.mode

Сводная функция Total.movingAve

Сводная функция Total.stdDev

Сводная функция Total.weightedAve

Total.weightedAve

Эта функция вычисляет средневзвешенное значение. Если выражение expr или weight дает пустой результат, строка не учитывается.

Синтаксис

Total.weightedAve( expr, weight [, filter [, group ]] )

Аргументы

Возвращаемое значение

Данная функция возвращает среднее взвешенное значение указанного выражения. Если нет ни одной строки данных, функция возвращает пустое значение.

Пример

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

Total.weightedAve( row.purchasePrice, row.shareCount ) 

См. также

Сводная функция Total.ave

Сводная функция Total.median

Сводная функция Total.mode

Сводная функция Total.movingAve

Сводная функция Total.stdDev

Сводная функция Total.variance


(c) Copyright Actuate Corporation 2006

Предыдущий разделСледующий раздел