Поделиться через


Функции конструктора моделей

Можно использовать функции конструктора моделей отчетов для вычисления новых атрибутов. Предположим, например, что нужно знать общую сумму продаж, приходящуюся на заказ на продажу. Эти цифры состоят из объема продаж плюс налог, уплаченный за заказ. Используя функцию «Добавить», можно добавить каждую сумму продаж к уплаченному налогу на каждый заказ. Следующий список содержит доступные функции, их требования и поведение.

Скалярные функции

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

Имя функции

Аргумент

Тип данных

Количество элементов

Описание

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

Тот же тип, что у выражения.