Функции конструктора моделей
Можно использовать функции конструктора моделей отчетов для вычисления новых атрибутов. Предположим, например, что нужно знать общую сумму продаж, приходящуюся на заказ на продажу. Эти цифры состоят из объема продаж плюс налог, уплаченный за заказ. Используя функцию «Добавить», можно добавить каждую сумму продаж к уплаченному налогу на каждый заказ. Следующий список содержит доступные функции, их требования и поведение.
Скалярные функции
С помощью скалярных функций можно производить вычисления над одним из аргументов, имея на выходе одно новое значение для поля.
Имя функции |
Аргумент |
Тип данных |
Количество элементов |
Описание |
---|---|---|---|---|
Add |
Item1 |
Numeric |
1 |
Первый элемент для сложения. |
Item2 |
Numeric |
1 |
Второй элемент для сложения. |
|
Возвращает |
Значение имеет тип Float, если один из элементов имеет тип Float, и Decimal, если один из элементов имеет тип Decimal. В прочих случаях используется тип Integer. |
|||
Subtract |
Item1 |
Numeric |
1 |
Уменьшаемый элемент. |
Item2 |
Numeric |
1 |
Вычитаемый элемент. |
|
Возвращает |
Значение имеет тип Float, если один из элементов имеет тип Float, и Decimal, если один из элементов имеет тип Decimal. |
|||
Multiply |
Item1 |
Numeric |
1 |
Первый элемент для умножения. |
Item2 |
Numeric |
1 |
Второй элемент для умножения. |
|
Возвращает |
Значение имеет тип Float, если один из элементов имеет тип Float, и Decimal, если один из элементов имеет тип Decimal. В прочих случаях используется тип Integer. |
|||
Divide |
Item1 |
Numeric |
1 |
Элемент-числитель. |
Item2 |
Numeric |
1 |
Элемент-знаменатель. |
|
Возвращает |
Значение имеет тип Float, если один из элементов имеет тип Float, в остальных случаях — Decimal. |
|||
Power |
Base |
Numeric |
1 |
Основание степени. |
Exponent |
Numeric |
1 |
Показатель степени. |
|
Возвращает |
Значение имеет тип Float, если один из элементов имеет тип Float, и Decimal, если один из элементов имеет тип Decimal. В прочих случаях используется тип Integer. |
|||
Negate |
Item |
Numeric |
1 |
Отрицаемое число. |
Возвращает |
Тот же тип, что у элемента. |
|||
Mod |
Item1 |
Integer |
1 |
Элемент-числитель. |
Item2 |
Integer |
1 |
Элемент-знаменатель. |
|
Возвращает |
Integer |
Остаток от деления. |
||
Equals |
Item1 |
Boolean, DateTime, Integer, Decimal, Float, String или EntityKey |
1 |
Первый элемент для сравнения. |
Item2 |
1 |
Второй элемент для сравнения. Item1 и Item2 должны иметь один тип данных. |
||
Возвращает |
Boolean |
Показывает, совпадают ли элементы. |
||
NotEquals |
Item1 |
Boolean, DateTime, Integer, Decimal, Float, String или EntityKey |
1 |
Первый элемент для сравнения. |
Item2 |
1 |
Второй элемент для сравнения. Item1 и Item2 должны иметь одинаковый тип данных. |
||
Возвращает |
Boolean |
Показывает несовпадение элементов. |
||
GreaterThan |
Item1 |
DateTime, Integer, Decimal, Float или String |
1 |
Первый элемент для сравнения. |
Item2 |
1 |
Второй элемент для сравнения. Item1 и Item2 должны иметь одинаковый тип данных. |
||
Возвращает |
Boolean |
Показывает, превосходит ли первый элемент второй. |
||
GreaterThanOrEquals |
Item1 |
DateTime, Integer, Decimal, Float или String |
1 |
Первый элемент для сравнения. |
Item2 |
1 |
Второй элемент для сравнения. Item1 и Item2 должны иметь одинаковый тип данных. |
||
Возвращает |
Boolean |
Указывает на то, что первый элемент больше второго или равен ему. |
||
LessThan |
Item1 |
DateTime, Integer, Decimal, Float или String |
1 |
Первый элемент для сравнения. |
Item2 |
1 |
Второй элемент для сравнения. Item1 и Item2 должны иметь одинаковый тип данных. |
||
Возвращает |
Boolean |
Указывает на то, что первый элемент меньше второго. |
||
LessThanOrEquals |
Item1 |
DateTime, Integer, Decimal, Float или String |
1 |
Первый элемент для сравнения. |
Item2 |
1 |
Второй элемент для сравнения. Item1 и Item2 должны иметь одинаковый тип данных. |
||
Возвращает |
Boolean |
Указывает на то, что первый элемент меньше второго или равен ему. |
||
And |
Item1 |
Boolean |
1 |
Первое условие. |
Item2 |
Boolean |
1 |
Второе условие. Если первый элемент получил значение False, то второй не вычисляется. |
|
Возвращает |
Boolean |
Если и первый, и второй элементы равны true, возвращает true. |
||
Or |
Item1 |
Boolean |
1 |
Первое условие. |
Item2 |
Boolean |
1 |
Второе условие. Если первый элемент имеет значение true, то второй не вычисляется. |
|
Возвращает |
Boolean |
Если первый или второй элемент равен true, возвращает true. |
||
Not |
Item |
Boolean |
1 |
Отрицаемая величина. |
Возвращает |
Boolean |
Если элемент равен false, возвращает true. |
||
Truncate |
Item |
Decimal или Float |
1 |
Усекаемый элемент. |
Digits |
Integer |
1 |
Число десятичных знаков, до которого нужно усечь элемент. Например, укажите «три», чтобы усечь элемент справа после третьего знака. |
|
Возвращает |
Тип возвращаемого значения тот же, что и у аргумента. |
|||
Round |
Item |
Decimal или Float |
1 |
Округляемый элемент. |
Digits |
Integer |
1 |
Число десятичных знаков, до которого нужно округлить элемент. Например, укажите «три», чтобы округлить элемент до третьего знака. |
|
Возвращает |
Тип возвращаемого значения тот же, что и у аргумента. |
|||
Integer |
Item |
Numeric или String |
1 |
Приводимый элемент. В построителе отчетов Integer значится на вкладке «Функции» как INT. |
Возвращает |
Integer |
Элемент приводится к целому типу. Если элемент является численным значением, оно усекается. Обратите внимание, что для приведения числовых строк используется постоянный стандарт. Точка — это десятичный разделитель. Нельзя использовать запятую для отделения тысяч. |
||
Decimal |
Item |
Numeric или String |
1 |
Приводимый элемент. |
Возвращает |
Decimal |
Элемент приводится к десятичному. |
||
Float |
Item |
Numeric или String |
1 |
Приводимый элемент. |
Возвращает |
Float |
Элемент приводится к типу данных float. |
||
String |
Item |
Numeric |
1 |
Приводимый элемент. В построителе отчетов String значится на вкладке «Функции» как TEXT. |
Возвращает |
String |
Элемент для приведения к строке. |
||
Length |
String |
String |
1 |
Строка, используемая для определения длины. |
Возвращает |
Integer |
Длина строки, указанная как число символов в строке. |
||
Find |
String |
String |
1 |
Строка, в которой ищется подстрока. |
Substring |
String |
1 |
Подстрока для поиска. |
|
Возвращает |
Integer |
Позиция первого экземпляра подстроки в строке. Если подстрока не найдена, возвращается 0. |
||
Substring |
String |
String |
1 |
Строка, из которой извлекается подстрока. |
Start |
Integer |
1 |
Начальная позиция в строке (нумерация начинается с единицы). |
|
Length |
Integer |
1 |
Число символов. |
|
Возвращает |
String |
Подстрока, извлеченная из строки, содержащей символы от Start до Start+Length. |
||
Left |
String |
String |
1 |
Стока, из которой получаем левые символы. |
Length |
Integer |
1 |
Число символов. |
|
Возвращает |
String |
Подстрока строки, содержащая символы от 1 до Length. |
||
Right |
String |
String |
1 |
Строка, из которой получаем правые символы. |
Length |
Integer |
1 |
Число символов. |
|
Возвращает |
String |
Подстрока строки от Length(String)-Length+1 до Length(String). |
||
Concat |
String1 |
String |
1 |
Первая строка для сцепления. |
String2 |
String |
1 |
Вторая строка для сцепления. |
|
Возвращает |
String |
Вторая строка, прицепленная к концу первой. |
||
Lower |
String |
String |
1 |
Строка для перевода в нижний регистр. |
Возвращает |
String |
Строка, в которой все символы верхнего регистра преобразованы к нижнему. |
||
Upper |
String |
String |
1 |
Строка для капитализации. |
Возвращает |
String |
Строка, в которой все символы нижнего регистра преобразованы к верхнему. |
||
LTrim |
String |
String |
1 |
Строка, в которой обрезаются начальные пробелы. |
Возвращает |
String |
Строка с удаленными начальными пробелами. |
||
RTrim |
String |
String |
1 |
Строка, в которой обрезаются конечные пробелы. |
Возвращает |
String |
Строка с удаленными конечными пробелами. |
||
Replace |
String |
String |
1 |
Строка, в которой необходимо заменить все экземпляры подстроки на другую подстроку. |
Find |
String |
1 |
Подстрока для поиска. |
|
Replace |
String |
1 |
Подстрока, которая заменит искомую. |
|
Возвращает |
String |
Строка, в которой все экземпляры искомой подстроки заменены на новые. |
||
Date |
Year |
Integer |
1 |
Год даты. |
Month |
Integer |
1 |
Месяц (1-12) даты. |
|
Day |
Integer |
1 |
День (1-31) даты, который должен быть допустимым днем месяца в указанном году. |
|
Возвращает |
DateTime |
Дата-время в данном году, месяце и дне в полночь. |
||
DateTime |
Year |
Integer |
1 |
Год даты. |
Month |
Integer |
1 |
Месяц (1-12) даты. |
|
Day |
Integer |
1 |
День (1-31) даты, который должен быть допустимым днем месяца в указанном году. |
|
Hour |
Integer |
1 |
Час (0-23) даты. |
|
Minute |
Integer |
1 |
Минута (0-59) даты. |
|
Second |
Decimal |
1 |
Секунда (0-60) даты. |
|
Возвращает |
DateTime |
Дата и время с соответствующими годом, месяцем, днем, часами, минутами и секундами. |
||
Time |
DateTime |
DateTime |
1 |
Значение datetime для извлечения времени. Возвращает час, минуту и секунду из значения datetime. |
Возвращает |
Time |
Время, извлеченное из значения datetime. |
||
Year |
DateTime |
DateTime |
1 |
Дата, из которой извлекается год. |
Возвращает |
Integer |
Год даты. |
||
Quarter |
DateTime |
DateTime |
1 |
Дата, из которой извлекается квартал. |
Возвращает |
Integer |
Квартал (1-4) даты. |
||
Month |
DateTime |
DateTime |
1 |
Дата, из которой извлекается месяц. |
Возвращает |
Integer |
Месяц (1-12) даты. |
||
Day |
DateTime |
DateTime |
1 |
Дата, из которой извлекается день. |
Возвращает |
Integer |
День (1-31) даты. |
||
Hour |
DateTime |
DateTime или Time |
1 |
Дата или время, из которого извлекается час. |
Возвращает |
Integer |
Час (0-23) даты. |
||
Minute |
DateTime |
DateTime или Time |
1 |
Дата или время, из которого извлекается минута. |
Возвращает |
Integer |
Минута (0-59) даты. |
||
Second |
DateTime |
DateTime или Time |
1 |
Дата или время, из которого извлекается секунда. |
Возвращает |
Integer |
Секунда (0-60) даты. |
||
DayofYear |
DateTime |
DateTime |
1 |
Дата, из которой извлекается день года. |
Возвращает |
Integer |
День (1-366) даты. |
||
Week |
DateTime |
DateTime |
1 |
Дата, из которой извлекается неделя. |
Возвращает |
Integer |
Неделя (1-53) даты. Первым днем недели считается по умолчанию тот, который связан с культурой семантической модели. |
||
DayofWeek |
DateTime |
DateTime |
1 |
Дата, из которой извлекается день недели. |
Возвращает |
Integer |
День недели (1-7) даты. Значения идут от «Понедельник» (1) до «Воскресенье» (7). |
||
Date |
DateTime |
DateTime |
1 |
Дата, из которой удаляется время. В построителе отчетов функция «Дата» значится на вкладке «Функции» как DATEONLY. |
Возвращает |
Integer |
Дата с обнуленным временем (00:00:00). |
||
Now |
Возвращает |
DateTime |
Текущие дата-время. Now — это статическая функция. |
|
Today |
Возвращает |
DateTime |
Текущие дата-время с обнуленным временем (00:00:00). Today — это статическая функция. |
|
DateDiff |
Interval |
String |
1 |
Единица измерения разницы во времени. Должна быть одной из следующих: Year, Quarter, Month, Day, Hour, Minute, Second или Week. Должно быть литералом. Если формула вычисляет различие между начальным и конечным временем, для измерения этого интервала могут использоваться ЧАСЫ, МИНУТЫ И СЕКУНДЫ. |
Start |
DateTime или Time |
1 |
Начальная дата или время. |
|
End |
DateTime или Time |
1 |
Конечная дата или время. Должна иметь тот же тип данных, что и начальное время. |
|
Возвращает |
Integer |
Разница между начальным и конечным временем в единицах, указанных в поле «Интервал». Если начальное время идет после конечного, результат будет отрицательным. |
||
DateAdd |
Interval |
String |
1 |
Единицы измерения разницы во времени. Должна быть одной из следующих: Year, Quarter, Month, Day, Hour, Minute, Second или Week. Должно быть литералом. Если формула прибавляет к начальному времени ряд единиц измерения интервалов времени, такими единицами могут быть только ЧАСЫ, МИНУТЫ И СЕКУНДЫ. |
Number |
Integer |
1 |
Число единиц интервала для прибавления к дате или времени. |
|
DateTime |
DateTime или Time |
1 |
Дата или время, к которому осуществляется прибавление. |
|
Возвращает |
DateTime |
Дата или время, содержащие результат сложения указанной даты или времени и указанного числа интервалов. Должны иметь тот же тип данных, что и исходные дата и время или поле времени. |
Статистические функции
С помощью статистических функций можно производить вычисления над набором значений или единственным значением выражения, а затем возвратить одно значение для выражения.
Имя функции |
Аргумент |
Тип данных |
Количество элементов |
Описание |
---|---|---|---|---|
Sum |
Items |
Numeric |
N |
Суммируемые элементы. |
Возвращает |
1 |
Сумма значений всех элементов. Возвращаемое значение принадлежит к тому же типу данных, что и элементы. |
||
Avg |
Items |
Numeric |
N |
Усредняемые элементы. В построителе отчетов Avg значится на вкладке «Функции» как AVERAGE. |
Возвращает |
1 |
Среднее арифметическое значений элементов, отличных от NULL. Возвращаемый тип Decimal, если элементы типа Decimal или Integer; в остальных случаях возвращаемый тип — Float. |
||
Max |
Items |
DateTime, Integer, Decimal, Float или String |
N |
Элементы для поиска максимума. |
Возвращает |
1 |
Максимальное значение для элементов, отличных от NULL. Возвращаемое значение принадлежит к тому же типу данных, что и элементы. |
||
Min |
Items |
DateTime, Integer, Decimal, Float или String |
N |
Элементы для поиска минимума. |
Возвращает |
1 |
Минимальное значение для элементов, отличных от NULL. Возвращаемое значение принадлежит к тому же типу данных, что и элементы. |
||
Count |
Items |
Любой |
N |
Элементы для расчета. |
Возвращает |
Integer |
1 |
Число значений элементов, отличных от NULL. |
|
CountDistinct |
Items |
Любой |
N |
Элементы для расчета. Элементы не должны иметь тип EntityKey. |
Возвращает |
Integer |
1 |
Число различных значений элементов, отличных от NULL. |
|
StDev |
Items |
Numeric |
N |
Элементы для вычисления среднеквадратичного отклонения. |
Возвращает |
Float |
1 |
Среднеквадратичное отклонение значений элементов, отличных от NULL. |
|
StDevP |
Items |
Numeric |
N |
Элементы для вычисления среднеквадратичного отклонения заполнения. |
Возвращает |
Float |
1 |
Среднеквадратичное отклонение заполнения для значений элементов, отличных от NULL. |
|
Var |
Items |
Numeric |
N |
Строка, используемая для определения дисперсии. |
Возвращает |
Float |
1 |
Дисперсия значений элементов, отличных от NULL. |
|
VarP |
Items |
Numeric |
N |
Строка, используемая для определения дисперсии заполнения. |
Возвращает |
Float |
1 |
Дисперсия заполнения значений элементов, отличных от NULL. |
Информационные функции
С помощью информационных функций можно получить основные сведения о своих пользователях.
Имя функции |
Аргумент |
Тип данных |
Количество элементов |
Описание |
---|---|---|---|---|
GetUserID |
Возвращает |
String |
1 |
Идентификатор пользователя. GetUserID — это статическая функция. |
GetUserCulture |
Возвращает |
Language |
1 |
Язык или языковой стандарт пользователя. GetUserCulture — это статическая функция. |
Прочие функции
В дополнение к описанным выше функциям в языке определения семантической модели присутствуют и следующие.
Имя функции |
Аргумент |
Тип данных |
Количество элементов |
Описание |
---|---|---|---|---|
Filter |
Filter Items |
Любой |
N |
Фильтруемые значения. Чтобы отфильтровать элементы, используйте диалоговое окно «Фильтр». |
Filter Condition |
Boolean |
1 |
Показывает, включать ли соответствующий экземпляр. |
|
Возвращает |
N |
Возвращаемое значение принадлежит к тому же типу данных, что и элементы фильтра. |
||
In |
Item |
Boolean, DateTime, Integer, Decimal, Float, String или EntityKey |
1 |
Элемент, проверяемый на членство во множестве. |
Set |
N |
Это должно быть литеральное выражение без пути. Типы данных набора и элемента должны совпадать. |
||
Возвращает |
Boolean |
1 |
Показывает, присутствует ли элемент в наборе. |
|
If |
Condition |
Boolean |
1 |
Условие для проверки. |
TrueCase |
Любой |
1 |
Значение, возвращаемое при выполнении условия. Если условие ложное, то TrueCase не вычисляется. Не может относиться к типу EntityKey. |
|
FalseCase |
Любой |
1 |
Значение, возвращаемое при невыполнении условия. FalseCase должен быть того же типа, что и TrueCase. Если условие верное, то FalseCase не вычисляется. |
|
Возвращает |
1 |
Тип должен быть тот же, что и у TrueCase. |
||
Switch |
Condition1 |
Boolean |
1 |
Условие для проверки. Список может содержать ноль или более дополнительных пар условие-значение. |
Value1 |
Любой |
1 |
Значение, возвращаемое при выполнении condition1. |
|
Condition/N |
Boolean |
1 |
Условие для проверки. Не вычисляется при выполнении одного из предыдущих условий. |
|
Value/N |
Boolean |
1 |
Значение, возвращаемое при выполнении Condition/N. Должно быть того же типа, что и Value1. Не вычисляется, если Condition/N не вычислялось или было ложным. |
|
Возвращает |
Boolean |
1 |
Тот же тип, что у Value1. Возвращает Null, если все условия оказались ложными. |
|
Evaluate |
Expression |
Любой |
N |
Выражение для вычисления. Эта функция используется для контроля над контекстом сущности, в котором вычисляется выражение. Например, следующее выражение усредняет цены по различным продуктам, заказанным покупателем: Avg([customer->order->product]Price). Следующее выражение усредняет цены (полученные от сущности продукта) для каждого размещенного покупателем заказа: Avg([customer->order]Evaluate([order->product]Price)). Существуют различные точки, в которых расположение вычисления может контролировать различие объединения; могут присутствовать различные независимые применения функции «Evaluate». Вот пример различных независимых применений функции «Evaluate» в модели, где каждый продукт может быть произведен различными производителями: Average([customer->order]Evaluate([order->product]Evaluate([product->manufacturer->city]population))) |
Возвращает |
N |
Тот же тип, что у выражения. |
||
Aggregate |
Expression |
Любой |
N |
Статистическое выражение для вычисления. Эта функция используется для контроля контекста сущности, в котором вычисляется статистическая функция. Например, рассмотрим атрибут TotalSales, описанный в сущности Order. Выражение, показывающее общие продажи в контексте заказа, просто: TotalSales. Выражение, вычисляющее полные продажи в контексте заказчика, должно иметь вид: Aggregate([customer->order]TotalSales). Аргумент выражения должен содержать незакрепленное выражение или одну и более вложенную сквозную функцию (которая должна принимать любой тип данных), причем внутренний сквозной аргумент должен иметь незакрепленный ExpressionNode. Например: Aggregate([customer->order]Filter([order->product]Sum(UnitPrice),=(Shipped, "True")). |
Возвращает |
1 |
Тот же тип, что у выражения. |