“定义公式”对话框(模型设计器)

使用**“筛选数据”对话框可以限制查询返回的数据。若要打开“筛选数据”对话框,请单击工具栏上的“筛选”**按钮。

该对话框具有**“字段”“函数”**选项卡。

  • 使用**“字段”**选项卡可以查找报表模型内要包含在公式中的字段。

  • 使用**“函数”**选项卡可以选择要在公式中使用的函数。

“字段”选项卡上的选项

  • 实体
    列出实体。单击实体可在**“字段”**列表中显示其字段。

  • 字段
    列出实体中的字段。您可以将字段拖到**“公式”文本框,或双击该字段将其添加到“公式”**文本框。

  • 新建字段
    单击此项可添加新字段。值**“新建 <实体名称> 字段”显示在“字段名称”**中。

  • 字段名称
    为正在创建的新字段输入名称。

  • 公式
    使用此项可编写和编辑公式。

  • 搜索
    单击此项可启动**“搜索”**对话框。

  • 高级模式
    单击此项可显示实体之间的其他关系。通过这些关系可以生成复杂的查询。单击“高级模式”按钮时,将显示角色的其他三种类型:

    • 反向角色。反向角色显示与刚才所在的实体的反向关系。

    • 查找实体。查找实体是仅包含一个相关字段的角色。

    • 从选定实体的直接祖先继承的实体并非当前实体的直接祖先。

  • 聚合到此处
    如果双击**“公式”**文本框中显示的字段名称,则会显示主实体与字段的实体之间的关系。单击此项可在模型路径上的任意位置对表达式应用聚合。

  • 函数快捷方式
    单击此项可向**“公式”文本框中显示的公式添加运算符。“定义公式”对话框提供了最常用的一些函数的快捷方式;不过,您也可以从“函数”**选项卡中选择这些运算符。下面是对每个快捷方式的说明:

    + 用于将两个值相加。

    - 用于将一个值减去另一个值。

    * 用于将两个值相乘。

    / 用于将两个值相除。

    & 用于连接两个值。

    ( 用于开始一个计算。

    ) 用于结束一个计算。

  • 展开的公式
    如果双击**“公式”**文本框中显示的字段名称,则会显示主实体与字段的实体之间的关系。您可以在模型路径上的任意位置对表达式应用筛选器。

    • 单击**“未应用任何筛选器”,然后单击“创建新筛选器”**可以创建字段的新筛选器。

    • 如果该字段已具有筛选器,则单击该筛选器,然后单击**“编辑筛选器”**。

    • 若要删除现有筛选器,请单击该筛选器,然后单击**“删除”**。

  • 将此公式另存为新的 <实体名称> 字段
    选中该复选框可以指示要作为字段添加的公式。

“函数”选项卡上的选项

以下信息对**“定义公式”对话框的“函数”**选项卡上包含的每个函数进行了说明:

聚合函数

若要汇总一定范围的数值,请使用以下函数:

  • SUM
    返回表达式中所有值的总和。

    语法

    SUM(aggregate)

    SUM 只能与包含数值的字段一起使用。将忽略 Null 值。

  • AVERAGE
    返回表达式中所有非 Null 值的平均值(算术平均值)。

    语法

    AVERAGE(aggregate)

    AVERAGE 只能与包含数值的字段一起使用。将忽略 Null 值。

  • MAX
    返回表达式中的最大值。

    语法

    MAX(aggregate)

    对于字符列,MAX 将按排序顺序来查找最大值。将忽略 Null 值。

  • MIN
    返回表达式中的最小值。

    语法

    MIN(aggregate)

    对于字符列,MIN 将按排序顺序来查找最小值。将忽略 Null 值。

  • COUNT
    返回组中非空项的数目。

    语法

    COUNT(aggregate)

    COUNT 始终返回 Int 数据类型值。

  • COUNTDISTINCT
    返回组中某项的非空非重复实例数。

    语法

    COUNTDISTINCT(aggregate)

  • STDEV
    返回某项的非 Null 值的标准偏差。

    语法

    STDEV(aggregate)

  • STDEVP
    返回某项的非 Null 值的总体标准偏差。

    语法

    STDEVP(aggregate)

  • VAR
    返回某项的非 Null 值的方差。

    语法

    VAR(aggregate)

  • VARP
    返回某项的非 Null 值的总体方差。

    语法

    VARP(aggregate)

条件函数

若要测试条件,请使用以下函数:

  • IF
    如果指定了计算结果为 TRUE 的条件,将返回一个值;如果指定了计算结果为 FALSE 的条件,则返回另一个值。

    语法

    IF(condition, value_if_true, value_if_false)

    条件必须是计算结果为 TRUE 或 FALSE 的值或表达式。如果条件为 True,则 Value_if_true 表示返回的值。如果条件为 False,则 Value_if_false 表示返回的值。

  • IN
    确定项是否为集的成员。

    语法

    IN(item, set)

  • SWITCH
    对一系列表达式求值并返回与其中第一个为 True 的表达式相关联的表达式的值。Switch 可以有一个或多个条件/值对。

    语法

    Switch(condition1, value1)

转换

若要将值从一种数据类型转换为另一种数据类型,请使用以下函数:

  • INT
    将值转换为整数。

    语法

    INT(value)

  • DECIMAL
    将值转换为十进制数字。

    语法

    DECIMAL(value)

  • FLOAT
    将值转换为 float 数据类型。

    语法

    FLOAT(value)

  • TEXT
    将数值转换为文本。

    语法

    TEXT(value)

日期和时间函数

若要显示日期或时间,请使用以下函数:

  • DATE
    返回给定年、月、日的上午 12:00:00 的日期时间值。

    语法

    DATE(year, month, day)

  • DATEONLY
    从日期时间值返回年、月和日。

    语法

    DATEONLY(datetime)

  • DATETIME
    返回给定年、月、日、小时、分钟和秒的日期时间。

    语法

    DATETIME(year, month, day, hour, minute, second)

  • YEAR
    返回日期时间的年份值。

    语法

    YEAR(datetime)

  • QUARTER
    返回日期时间的日历季度 (1-4)。

    语法

    QUARTER(datetime)

  • MONTH
    返回日期时间中的月。

    语法

    MONTH(datetime)

  • DAY
    从日期时间中提取“日”。

    语法

    DAY(datetime)

  • HOUR
    从日期时间中提取小时。

    语法

    HOUR(datetime)

  • MINUTE
    从日期时间中提取分钟。

    语法

    MINUTE(datetime)

  • SECOND
    从日期时间中提取秒。

    语法

    SECOND(datetime)

  • DAYOFYEAR
    返回日期时间中一年中的第几天。1 月 1 日 = 1 到 12 月 31 日 = 366(假定是闰年)。

    语法

    DAYOFYEAR(datetime)

  • WEEK
    返回日历年中该周的数值。

    语法

    WEEK(datetime)

  • DAYOFWEEK
    返回星期几,从星期一开始。星期一 = 1 到星期日 = 7。

    语法

    DAYOFWEEK(datetime)

  • NOW
    返回当前日期和时间。

    语法

    NOW( )

  • TODAY
    返回当前日期。

    语法

    TODAY( )

  • DATEDIFF
    返回开始日期时间和结束日期时间之间的差。

    语法

    DATEDIFF(interval, datetime, datetime)

  • DATEADD
    返回将指定数目的时间间隔单位添加到原始日期时间后得到的日期时间。

    语法

    DATEADD(interval, units, datetime)

逻辑函数

若要测试条件的逻辑,请使用以下函数:

  • AND
    如果所有参数都为 TRUE,则返回 TRUE;如果一个或多个参数为 FALSE,则返回 FALSE。

    语法

    AND(logical, logical)

    参数的计算结果必须是逻辑值(例如 TRUE 或 FALSE),或者参数必须是包含逻辑值的数组或引用。如果数组或引用参数包含文本或空单元,则忽略这些值。

  • OR
    如果任一参数为 TRUE,则返回 TRUE;如果所有参数均为 FALSE,则返回 FALSE。

    语法

    OR(logical, logical)

    参数的计算结果必须是逻辑值(例如 TRUE 或 FALSE),或者是包含逻辑值的数组或引用。如果数组或引用包含文本或空单元,则忽略这些值。

  • NOT
    颠倒其参数的值。如果希望确保某子句不等于特定的值,请使用 NOT。

    语法

    NOT(logical)

    如果值为 False,NOT 将返回 True;如果值为 True,NOT 将返回 False。

数学函数

若要进行数值操作,请使用以下函数:

  • MOD
    返回数字除以除数后得到的余数。除数不能为 0。

    语法

    MOD(number, divisor)

  • TRUNC
    按指定的位数截断数字。如果数字为正,则从小数点右侧截断数字。如果数字为负,则从小数点左侧截断数字。

    语法

    TRUNC(number, digits)

  • ROUND
    将数字舍入到指定的位数。

    语法

    ROUND(number, digits)

    如果位数大于 0(零),则将数字舍入到指定的小数位数。如果位数为 0,则将数字舍入到最接近的整数。如果数字小于 0,则将数字舍入到小数点左侧。

运算符

算术运算符

若要执行基本的数学运算(例如加法、减法或乘法)、组合数字以及生成数值结果,请使用以下运算符:**“函数快捷方式”**包含最常用的算术运算符。

  • + 加
    用于将两个或多个项相加。

    语法

    value+value

  • - 减
    用于从一个项减去另一个项。

    语法

    value- value

  • * 乘
    用于将多个项相乘。

    语法

    value*value

  • / 除
    用于对项进行除运算。除数不能为 0。

    语法

    value/divisor

  • - 求反
    更改值的符号。

    语法

    -value

  • ^ 求幂
    用于对值进行幂运算(求幂)。

    语法

    value^power

  • = 等于
    用于使两个值相等。如果 value1 等于 value2,则为 True。

    语法

    value1 = value2

  • <> 不等于
    用于指示两个值不相等。如果 value1 不等于 value2,则为 True。

    语法

    value1 <> value2

  • > 大于
    用于指示一个值大于另一个值。如果 value1 大于 value2,则为 True。

    语法

    value1 > value2

  • >= 大于或等于
    用于指示一个值大于或等于另一个值。如果 value1 大于或等于 value2,则为 True。

    语法

    value1 >= value2

  • < 小于
    用于指示一个值小于另一个值。如果 value1 小于 value2,则为 True。

    语法

    value1 < value2

  • <= 小于或等于
    用于指示一个值小于或等于另一个值。如果 value1 小于或等于 value2,则为 True。

    语法

    value1 <= value2

文本

若要进行文本操作,请使用以下函数:

  • CONCAT (&)
    将两个字符串组合为一个字符串。第二个字符串追加到第一个字符串的末尾。

    语法

    string & string

  • FIND
    第一个字符串实例的位置。

    语法

    FIND(string, substring)

  • LEFT
    返回字符串的最左侧字符。如果在函数内指定的长度参数值小于零,则这种行为未定义。

    语法

    LEFT(string, length)

  • LENGTH
    返回字符串中的字符数。

    语法

    LENGTH(string)

  • LOWER
    将字符串从大写字符转换为小写字符。

    语法

    LOWER(string)

  • LTRIM
    返回删除了前导空格的字符串。

    语法

    LTRIM(string)

  • REPLACE
    返回一个字符串,其中某子字符串的所有实例均替换为另一个子字符串。

    语法

    REPLACE(find, replace, string)

  • RIGHT
    返回字符串的最右侧字符。如果在函数内指定的长度参数值小于零,则这种行为未定义。

    语法

    RIGHT(string, length)

  • RTRIM
    返回删除了尾随空格的字符串。

    语法

    RTRIM(string)

  • TEXT
    将数值转换为字符串。

    语法

    TEXT(value)

  • SUBSTRING
    返回字符串中的子字符串。如果在函数内指定的长度参数值小于零,则这种行为未定义。

    语法

    SUBSTRING(string, start, length)

  • UPPER
    将字符串从小写字符转换为大写字符。

    语法

    UPPER(string)

信息函数

若要返回有关用户的全局信息,请使用以下函数:

  • GETUSERID
    返回用户用来访问数据的 ID。

    语法

    GETUSERID()

  • GETUSERCULTURE
    返回用户的语言或区域设置。

    Syntax

    GETUSERCULTURE()

请参阅

概念