模型设计器函数

您可以使用报表模型设计器函数来计算新属性。例如,假设您需要了解每个销售订单的总销售额。此数值为订单的销售额加上所付税额。您可以使用 Add 函数,将每个订单的销售总额与所付税额相加。下面的列表说明了可用的函数及其要求和行为。

标量函数

通过使用标量函数,您可以依据单个参数执行计算,为字段返回新的单值。

函数名称 参数 数据类型 基数 说明

Add

Item1

Numeric

1

要加的第一项。

Item2

Numeric

1

要加的第二项。

Return

如果任意一项为 Float 类型,则为 Float 类型;或者,如果任意一项是 Decimal 类型,则为 Decimal 类型;否则,为 Integer 类型。

Subtract

Item1

Numeric

1

被减数项。

Item2

Numeric

1

减数项。

Return

如果任意一项为 Float 类型,则为 Float 类型;或者,如果任意一项是 Decimal 类型,则为 Decimal 类型;否则,为 Integer 类型。

Multiply

Item1

Numeric

1

要乘的第一项。

Item2

Numeric

1

要乘的第二项。

Return

如果任意一项为 Float 类型,则为 Float 类型;或者,如果任意一项是 Decimal 类型,则为 Decimal 类型;否则,为 Integer 类型。

Divide

Item1

Numeric

1

被除数项。

Item2

Numeric

1

除数项。

Return

如果任意一项为 Float 类型,则为 Float 类型;否则,为 Decimal 类型。

Power

Base

Numeric

1

要求幂的底。

Exponent

Numeric

1

指数。

Return

如果任意一项为 Float 类型,则为 Float 类型;或者,如果任意一项是 Decimal 类型,则为 Decimal 类型;否则,为 Integer 类型。

Negate

Item

Numeric

1

要求反的项。

Return

与 Item 的类型相同。

Mod

Item1

Integer

1

被除数项。

Item2

Integer

1

除数项。

Return

Integer

除运算的余数。

Equals

Item1

Boolean、DateTime、Integer、Decimal、Float、String 或 EntityKey

1

要比较的第一项。

Item2

1

要比较的第二项。Item1 和 Item2 必须为相同的数据类型。

Return

Boolean

指示两个项是否相同。

NotEquals

Item1

Boolean、DateTime、Integer、Decimal、Float、String 或 EntityKey

1

要比较的第一项。

Item2

1

要比较的第二项。Item1 和 Item2 必须为相同的数据类型。

Return

Boolean

指示两个项是否不相同。

GreaterThan

Item1

DateTime、Integer、Decimal、Float 或 String

1

要比较的第一项。

Item2

1

要比较的第二项。Item1 和 Item2 必须为相同的数据类型。

Return

Boolean

指示第一项是否大于第二项。

GreaterThanOrEquals

Item1

DateTime、Integer、Decimal、Float 或 String

1

要比较的第一项。

Item2

1

要比较的第二项。Item1 和 Item2 必须为相同的数据类型。

Return

Boolean

指示第一项是否大于或等于第二项。

LessThan

Item1

DateTime、Integer、Decimal、Float 或 String

1

要比较的第一项。

Item2

1

要比较的第二项。Item1 和 Item2 必须为相同的数据类型。

Return

Boolean

指示第一项是否小于第二项。

LessThanOrEquals

Item1

DateTime、Integer、Decimal、Float 或 String

1

要比较的第一项。

Item2

1

要比较的第二项。Item1 和 Item2 必须为相同的数据类型。

Return

Boolean

指示第一项是否小于或等于第二项。

And

Item1

Boolean

1

第一个条件。

Item2

Boolean

1

第二个条件。如果 Item1 为 False,则不计算 Item2。

Return

Boolean

如果 Item1 和 Item2 均为 true,则 Return 值为 true

Or

Item1

Boolean

1

第一个条件。

Item2

Boolean

1

第二个条件。如果 Item1 为 true,则不计算 Item2。

Return

Boolean

如果 Item1 和 Item2 中任意一个为 true,则 Return 值为 true

Not

Item

Boolean

1

要求反的条件。

Return

Boolean

如果 Item 为 false,则 Return 值为 true

Truncate

Item

Decimal 或 Float

1

要截断的项。

Digits

Integer

1

要将项截至的小数位数。例如,如果指定 3,则表示在小数点右侧第三位后将项截断。

Return

Return 的值类型与截断项的类型相同。

Round

Item

Decimal 或 Float

1

要舍入的项。

Digits

Integer

1

要将项舍入至的小数位数。例如,如果指定 3,则表示将项舍入至小数点右侧的第三位。

Return

Return 的值类型与舍入项的类型相同。

Integer

Item

Numeric 或 String

1

要转换的项。在报表生成器中,Integer 在“函数”选项卡上列为 INT。

Return

Integer

转换为整数的项。如果项是数值,则将其截断。请注意,将使用固定的区域设置转换数值字符串。句点为小数点分隔符。不允许使用逗号分隔千位。

Decimal

Item

Numeric 或 String

1

要转换的项。

Return

Decimal

转换为十进制的项。

Float

Item

Numeric 或 String

1

要转换的项。

Return

Float

转换为浮点值的项。

String

Item

Numeric

1

要转换的项。在报表生成器中,String 在“函数”选项卡上列为 TEXT。

Return

String

转换为字符串的项。

Length

String

String

1

用于确定长度的字符串。

Return

Integer

字符串长度,指定为字符串中的字符数。

Find

String

String

1

在其中搜索所包含字符串的字符串。

Substring

String

1

要搜索的子字符串。

Return

Integer

字符串内该子字符串第一个实例的位置。如果找不到该子字符串,则返回 0。

Substring

String

String

1

从中提取子字符串的字符串。

Start

Integer

1

字符串内的起始位置(从 1 开始)。

Length

Integer

1

字符数。

Return

String

从字符串中提取包含从 Start 位置到 Start+Length 位置之间字符的子字符串。

Left

String

String

1

从中提取最左侧的一些字符的字符串。

Length

Integer

1

字符数。

Return

String

字符串中包含从 1 位置到 Length 位置之间字符的子字符串。

Right

String

String

1

从中提取最右侧的一些字符的字符串。

Length

Integer

1

字符数。

Return

String

字符串中包含从 Length(String)-Length+1 位置到 Length(String) 位置之间字符的子字符串。

Concat

String1

String

1

要连接的第一个字符串。

String2

String

1

要连接的第二个字符串。

Return

String

连接至第一个字符串末尾的第二个字符串。

Lower

String

String

1

要转换为小写的字符串。

Return

String

全部大写字符都转换为小写字符的字符串。

Upper

String

String

1

要转换为大写的字符串。

Return

String

全部小写字符都转换为大写字符的字符串。

LTrim

String

String

1

从中剪裁前导空格的字符串。

Return

String

删除了全部前导空格的字符串。

RTrim

String

String

1

从中剪裁尾随空格的字符串。

Return

String

删除了尾随空格的字符串。

Replace

String

String

1

在其中将一个子字符串的全部实例替换为另一个子字符串的字符串。

Find

String

1

要搜索的子字符串。

Replace

String

1

替换 Find 字符串的子字符串。

Return

String

用 Replace 字符串替换了 Find 字符串的全部实例的字符串。

Date

Year

Integer

1

日期的年份。

Month

Integer

1

日期的月份 (1-12)。

Day

Integer

1

日期 (1-31),必须是指定年份和月份的有效日期。

Return

DateTime

给定年、月、日的 00:00:00 的日期时间值。

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)。

Return

DateTime

所指定年、月、日、小时、分钟和秒的日期时间。

Year

DateTime

DateTime

1

从中提取“年”的日期。

Return

Integer

日期时间的年份。

Quarter

DateTime

DateTime

1

从中提取“季度”的日期。

Return

Integer

日期时间的季度 (1-4)。

Month

DateTime

DateTime

1

从中提取“月”的日期。

Return

Integer

日期时间的月份 (1-12)。

Day

DateTime

DateTime

1

从中提取“日”的日期。

Return

Integer

日期时间的“日”部分 (1-31)。

Hour

DateTime

DateTime

1

从中提取“时”的日期。

Return

Integer

日期时间的“时”部分 (0-23)。

Minute

DateTime

DateTime

1

从中提取“分”的日期。

Return

Integer

日期时间的“分”部分 (0-59)。

Second

DateTime

DateTime

1

从中提取“秒”的日期。

Return

Integer

日期时间的“秒”部分 (0-60)。

DayofYear

DateTime

DateTime

1

从中提取“一年中的第几天”的日期。

Return

Integer

日期时间在一年中的第几天 (1-366)。

Week

DateTime

DateTime

1

从中提取“周”的日期。

Return

Integer

日期时间在一年中的第几周 (1-53)。与语义模型区域性相关的默认的每周第一天将确定每周的第一天。

DayofWeek

DateTime

DateTime

1

从中提取“星期几”的日期。

Return

Integer

日期时间为星期几 (1-7)。值从 Monday=1 开始到 Sunday=7。

Date

DateTime

DateTime

1

从中删除时间的日期。在报表生成器中,此 Date 函数在“函数”选项卡上列为 DATEONLY。

Return

Integer

时间清零 (00:00:00) 的日期时间。

Now

Return

DateTime

当前日期/时间。Now 是一个静态函数。

Today

Return

DateTime

时间清零 (00:00:00) 的当前日期/时间。Today 是一个静态函数。

DateDiff

Interval

String

1

用于指定日期之差的单位。必须是以下单位之一:年、季度、月、天、小时、分钟、秒或星期。必须是文字值。

Start

DateTime

1

起始日期时间。

End

DateTime

1

结束日期时间。

Return

Integer

Start 日期时间和 End 日期时间之差,以 Interval 所指定的相同单位表示。如果起始日期时间在结束日期时间之后,结果将为负。

DateAdd

Interval

String

1

用于指定日期之和的单位。必须是以下单位之一:年、季度、月、天、小时、分钟、秒或星期。必须是文字值。

Number

Integer

1

要加至日期时间的 Interval 的单位数。

DateTime

DateTime

1

要加上 Interval 的日期时间。

Return

DateTime

原始日期时间加上指定的 Interval 单位数所得的日期时间。

聚合函数

通过使用聚合函数,您可以对一组值或单个值执行计算,再根据表达式返回单个值。

函数名称 参数 数据类型 基数 说明

Sum

Items

Numeric

N

要求和的项。

Return

1

项的值之和。返回值的数据类型和项的数据类型相同。

Avg

Items

Numeric

N

要求平均值的项。在报表生成器中,Avg 在“函数”选项卡上列为 AVERAGE。

Return

1

项的非空值的平均值。如果项为 Decimal 或 Integer 类型,则数据类型为 Decimal;否则,为 Float 类型。

Max

Items

DateTime、Integer、Decimal、Float 或 String

N

要确定最大值的排序项。

Return

1

项中的非空值的最大值。返回值的数据类型和项的数据类型相同。

Min

Items

DateTime、Integer、Decimal、Float 或 String

N

要确定最小值的排序项。

Return

1

项中的非空值的最小值。返回值的数据类型和项的数据类型相同。

Count

Items

任意

N

要计数的项。

Return

Integer

1

项的非空值计数。

CountDistinct

Items

任意

N

要计数的项。项的数据类型不能为 EntityKey

Return

Integer

1

项的非重复非空值的计数。

StDev

Items

Numeric

N

用于确定标准偏差的项。

Return

Float

1

项的非空值的标准偏差。

StDevP

Items

Numeric

N

用于确定总体标准偏差的项。

Return

Float

1

项的非空值的总体标准偏差。

Var

Items

Numeric

N

用于确定方差的项。

Return

Float

1

项的非空值的方差。

VarP

Items

Numeric

N

用于确定总体方差的项。

Return

Float

1

项的非空值的总体方差。

信息函数

通过使用信息函数,您可以获得用户的基本信息。

函数名称 参数 数据类型 基数 说明

GetUserID

Return

String

1

用户的 ID。GetUserID 是一个静态函数。

GetUserCulture

Return

Language

1

用户的语言或区域设置。GetUserCulture 是一个静态函数。

其他函数

除了上述函数外,语义模型定义语言中还使用了以下函数:

函数名称 参数 数据类型 基数 说明

Filter

Filter Items

任意

N

要筛选的值。若要筛选项,请使用“筛选器”对话框。

Filter Condition

Boolean

1

指示是否包含相应的实例。

Return

N

返回值的数据类型与 Filter Items 的类型相同。

In

Item

Boolean、DateTime、Integer、Decimal、Float、String 或 EntityKey

1

要检查集成员身份的项。

Set

N

此参数必须是不带 Path 的 Literal 表达式。Item 和 Set 必须具有相同的数据类型。

Return

Boolean

1

指示项是否在该集中。

If

Condition

Boolean

1

要测试的条件。

TrueCase

任意

1

条件为 True 时返回的值。如果条件为 False,则不对 TrueCase 进行求值。不能为 EntityKey 数据类型。

FalseCase

任意

1

条件为 False 时返回的值。FalseCase 与 TrueCase 必须具有相同的值类型。如果条件为 True,则不对 FalseCase 进行求值。

Return

1

必须与 TrueCase 的类型相同。

Switch

Condition1

Boolean

1

要测试的条件。Switch 可以有零个或多个附加 Condition/Value 对:

Value1

任意

1

Condition1 为 True 时返回的值。

Condition/N

Boolean

1

要测试的条件。如果前面任何条件为 True,则不求值。

Value/N

Boolean

1

Condition/N 为 True 时返回的值。它必须与 Value1 具有相同的数据类型。如果未对 Condition/N 求值或 Condition/N 为 False,则不求值。

Return

Boolean

1

与 Value1 的类型相同。如果所有条件均为 False,则返回 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)))

Return

N

类型与表达式相同。

Aggregate

Expression

任意

N

要求值的聚合表达式。使用此函数可控制在其中对聚合进行求值的实体上下文。例如,假设在 Order 实体中定义了一个 TotalSales 属性。表示订单上下文中总销售额的表达式很简单:TotalSales。计算客户上下文中总销售额的表达式应为:

Aggregate([customer->order]TotalSales).

该表达式参数必须包含一个非定位表达式或者一个或多个嵌套的传递函数(必须采用任意数据类型),其中最内层的传递参数应具有非定位的 ExpressionNode。例如:

Aggregate([customer->order]Filter([order->product]Sum(UnitPrice),=(Shipped, "True")).

Return

1

类型与表达式相同。

请参阅

概念

模型设计器对象属性
模型设计器查询属性
模型设计器数据类型
使用函数(报表生成器)

帮助和信息

获取 SQL Server 2005 帮助