使用已计算字段
多种情况下,需要调整或转换已加载的字段数据。例如,可能需要将姓和名串联成全名,提取部分产品编码,转换数据格式或让两个数字相乘。
可以添加已计算字段来管理多种上述类似情况。已计算字段使用表达式来定义字段结果。可以使用表达式中的函数、字段和运算符。只能引用正在编辑的表格中的字段。您可在自己的已计算字段中参考另一个已计算字段。
您可以在数据管理器的表格编辑器中添加和编辑已计算字段。
要了解有关编辑表的更多信息,请参阅编辑表格。
添加已计算字段
执行以下操作:
-
单击添加字段并选择已计算字段。
随即会打开添加已计算字段编辑器。
- 在名称中输入已计算字段的名称。
-
在表达式中定义已计算字段的表达式。可以通过两种不同的方式来执行此操作。
-
使用
(函数)
(字段)和
(运算)列表来选择项目,并将其插入表达式。
在表达式中的光标位置插入所选项目。
-
在表达式中输入已计算字段的表达式。
输入时,您可以在建议的函数和字段以及函数语法方面获得帮助。
已计算字段的结果示例显示在预览中。
-
-
单击创建来创建已计算字段,然后关闭已计算字段编辑器。
编辑已计算字段
可以更改已计算字段的名称或编辑已计算字段的表达式。
执行以下操作:
-
从字段名称旁的下拉菜单中选择编辑。
随即会打开更新已计算字段编辑器。
- 如果要更改字段,则在名称中编辑已计算字段的名称。
-
编辑已计算字段的表达式。
-
单击更新来更新已计算字段,然后关闭已计算字段编辑器。
可以在已计算字段表达式中使用哪些函数?
创建已计算字段表达式时,可以使用此处列出的函数。这是数据加载脚本中可用的表达式子集。表达式不能聚合多个记录的数据,或使用内部记录函数来引用其他记录中的数据。
有关详细信息,请参阅脚本表达式。
可以在已计算字段表达式中使用的字符串函数
可以使用这些函数来修改或提取文本字符串格式的数据。
| 函数 | 说明 |
|---|---|
| Capitalize | Capitalize() 函数将文本字符串中每个单词的第一个字符转换为大写,并将所有其他字符转换为小写。 |
| Chr | Chr() 返回与输入整数对应的 Unicode 字符,也称为码位。 |
| FindOneOf |
FindOneOf() 用于搜索字符串,以便从一组提供的字符中找到任意字符出现的位置。返回搜索集中任何字符的第 N 次出现的位置,其中 N 是函数的可选第三个参数。如果没有提供第三个参数,则返回第一个参数。如果未找到匹配值,则返回 0。 |
| Index | Index() 用于搜索字符串,以便找到所提供子字符串第 n 次出现的开始位置。可选的第三个参数用于提供值 n,如果省略,则值为 1。如果为负值,则从字符串的结尾开始搜索。字符串中的位置从左至右从 1 开始编号。 |
| KeepChar |
KeepChar() 返回一个字符串,该字符串由第一个字符串中与第二个字符串中的字符匹配的任何字符组成。该函数要区分大小写。 |
| Left | Left() 用于返回特定字符串,其中包含输入字符串的第一个 (leftmost) 字符,其中字符数量由第二个参数决定。 |
| Len | Len() 用于返回输入字符串的长度。 |
| Lower | Lower() 用于将输入字符串中的所有字符转换为小写字符。 |
| LTrim | LTrim() 用于返回由任何前导空格剪裁的输入字符串。 |
| Mid | Mid() 返回从第二个参数“start”定义的字符位置开始的输入字符串的一部分,并返回第三个参数“count”定义的字符数量。如果省略“count”,则返回输入字符串的剩余部分。输入字符串的第一个字符的编号为 1。 |
| Ord | Ord() 返回字符串第一个字符的数字(ASCII 或 Unicode)值。此函数可用于根据字符串的底层字符代码对其进行评估或比较,例如,在对包含非标准字符的字符串进行排序或筛选时。 |
| PurgeChar | PurgeChar() 返回包含输入字符串(“text”)中的字符,但不包括第二个参数(“remove_chars”)中的字符的字符串。 |
| Repeat | Repeat() 用于构成特定字符串,其中包含重复的输入字符串,重复次数由第二个参数定义。 |
| Replace | Replace() 用于使用另一个子字符串替换输入字符串内出现的所有给定子字符串后,返回一个字符串。该函数为非递归函数,从左至右工作。 |
| Right |
Right() 用于返回特定字符串,其中包含输入字符串末尾(最右边)的字符,其中字符数量由第二个参数决定。 |
| RTrim | RTrim() 用于返回由任何尾部空格剪裁的输入字符串。 |
| SubStringCount | SubStringCount() 用于返回指定子字符串在输入字符串文本中出现的次数。如果不匹配,则返回 0。 |
| TextBetween |
TextBetween() 用于返回输入字符串中作为分隔符出现在指定字符之间的文本。 |
| Trim | Trim() 用于返回由任何前导和尾部空格剪裁的输入字符串。 |
| Upper | Upper() 用于将输入字符串中表达式所定义的所有文本字符转换为大写。忽略数字和符号。 |
可以在已计算字段表达式中使用的日期函数
Qlik Sense 日期和时间函数用于变换和转换日期和时间值。
这些函数基于日期-时间序列号(等于从 1899 年 12 月 30 日开始的天数)。整数部分表示天数,分数部分表示一天的时间。
Qlik Sense 使用该参数的数值,所以数字即使没有格式化为日期或时间,也可以作为参数的有效值。例如,如果参数与数值不对应(因为它是一个字符串),则 Qlik Sense 会尝试根据日期和时间环境变量解释此字符串。
如果参数中使用的日期格式与 DateFormat 系统变量中设置的不一致,Qlik Sense 将无法正确解释该日期。要解决此问题,可更改设置或使用解释功能。
有关详细信息,请参阅DateFormat。
| 函数 | 说明 |
|---|---|
| addmonths | 此函数用于返回在 startdate 后 n 个月内发生的日期,或者如果 n 为负数,则用于返回 startdate 前 n 个月内发生的日期。 |
| addyears | 此函数用于返回在 startdate 后 n 年内发生的日期,或者如果 n 为负数,则用于返回 startdate 前 n 年内发生的日期。 |
| age | age 函数用于返回某人在 date_of_birth 出生的 timestamp(完整年份)时的年龄。 |
| converttolocaltime | 将 UTC 或 GMT 时间戳转换为本地时间作为对偶值。此地方可为全世界任何一个城市,地方和时区。 |
| day |
此函数用于根据标准数字解释当 expression 小数部分被解释为日期时返回一个表示某天的整数。 |
| dayend | 此函数用于返回与 time 中包含的一天的最后毫秒的时间戳对应的值。默认的输出格式为在脚本中所设置的 TimestampFormat。 |
| daylightsaving | 将 UTC 或 GMT 时间戳转换为本地时间作为对偶值。此地方可为全世界任何一个城市,地方和时区。 |
| dayname | 此函数用于返回一个值,显示与包含 time 当天第一毫秒的时间戳对应的基本数值的日期。 |
| daynumberofquarter | 将 UTC 或 GMT 时间戳转换为本地时间作为对偶值。此地方可为全世界任何一个城市,地方和时区。 |
| daynumberofyear | 此函数用于计算时间戳所属的年份的天数。从该年度的第一天的第一毫秒开始计算,但可以偏移第一个月。 |
| daystart |
此函数用于返回与 time 参数中包含的一天的最后毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 TimestampFormat。 |
| firstworkdate | firstworkdate 函数用于返回最近的起始日以获得 no_of_workdays(周一至周五),将任何列出的可选节假日考虑在内,不迟于 end_date。end_date 和 holiday 应为有效的日期或时间戳。 |
| GMT | 此函数用于返回来自地区设置的当前 Greenwich Mean Time。 |
| hour | 此函数用于根据标准数字解释当 expression 小数部分被解释为时间时返回一个表示小时的整数。 |
| inday | 此函数用于返回 True,如果 timestamp 位于包含 base_timestamp 的一天以内。 |
| indaytotime | 此函数用于返回 True,如果 timestamp 位于包含 base_timestamp 为止以及包括 base_timestamp 精确毫秒的日子部分以内。 |
| inlunarweek | 此函数用于判断 timestamp 是否位于包含 base_date 的阴历周以内。Qlik Sense 中的农历周定义为将 1 月 1 日计算为一周的第一天。除了一年中的最后一周外,每周都会有七天。 |
| inlunarweektodate | 此函数用于判断 timestamp 是否位于截止以及包括 base_date 最后毫秒的阴历周的某部分以内。Qlik Sense 中的农历周定义为将 1 月 1 日计算为一周的第一天,除一年的最后一周外,将正好包含七天。 |
| inmonth | 此函数用于返回 True,如果 timestamp 位于包含 base_date 的月份以内。 |
| inmonths | 此函数用于查找时间戳是否在作为基准日期的同一个月、两个月、季度、四个月期间或半年内。另外,它也可以用于判断时间戳是否位于上一个或下一个时间周期以内。 |
| inmonthstodate | 此函数用于判断时间戳是否位于截止以及包括 base_date 的最后毫秒的某个月、两个月、季度、四个月期间或半年周期的一部分以内。另外,它也可以用于判断时间戳是否位于上一个或下一个时间周期以内。 |
| inmonthtodate | 用于返回 True,如果 date 位于包含 basedate 为止以及包括 basedate 最后毫秒的月份部分以内。 |
| inquarter | 此函数用于返回 True,如果 timestamp 位于包含 base_date 的季度以内。 |
| inquartertodate | 此函数用于返回 True,如果 timestamp 位于包含 base_date 为止以及包括 base_date 最后毫秒的季度部分以内。 |
| inweek | 此函数用于返回 True,如果 timestamp 位于包含 base_date 的星期以内。 |
| inweektodate | 此函数用于返回 True,如果 timestamp 位于包含 base_date 为止以及包括 base_date 最后毫秒的星期部分以内。 |
| inyear | 此函数用于返回 True,如果 timestamp 位于包含 base_date 的年份以内。 |
| inyeartodate | 此函数用于返回 True,如果 timestamp 位于包含 base_date 为止以及包括 base_date 最后毫秒的年份部分以内。 |
| lastworkdate | lastworkdate 函数用于返回最早的结束日以获得 no_of_workdays(周一至周五),如果在 start_date 开始考虑任何列出的可选 holiday。start_date 和 holiday 应是有效的日期或时间戳。 |
| localtime | 此函数用于返回指定时区的当前时间戳。 |
| lunarweekend | 此函数用于返回与包含 date 的阴历周的最后毫秒的时间戳对应的值。Qlik Sense 中的农历周定义为将 1 月 1 日计算为一周的第一天,除一年的最后一周外,将正好包含七天。 |
| lunarweekname | 此函数用于返回一个显示值,显示与包含 date 的阴历周的第一天的第一毫秒时间戳对应的年份和阴历周数。Qlik Sense 中的农历周定义为将 1 月 1 日计算为一周的第一天,除一年的最后一周外,将正好包含七天。 |
| lunarweekstart | 此函数用于返回与包含 date 的阴历周第一天的第一毫秒的时间戳对应的值。Qlik Sense 中的农历周定义为将 1 月 1 日计算为一周的第一天,除一年的最后一周外,将正好包含七天。 |
| makedate | 此函数用于返回根据年份 YYYY、月份 MM 和日期 DD 计算的日期。 |
| maketime | 此函数用于返回根据小时 hh、分钟 mm 和秒 ss 计算的时间。 |
| makeweekdate | 此函数返回根据年、周数和星期几计算的日期。 |
| minute | 此函数用于根据标准数字解释当 expression 小数部分被解释为时间时返回一个表示分钟的整数。 |
| month | 此函数用于返回包含在环境变量 MonthNames 中定义的月份名称的对偶值和一个介于 1 至 12 的整数。月份根据标准数字解释通过表达式的日期解释进行计算。 有关详细信息,请参阅MonthNames。 |
| monthend | 此函数用于返回与包含 date 的月份的最后一天的最后毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat。 |
| monthname | 此函数用于返回一个显示值,该值显示该月(根据 MonthNames 脚本变量的格式)以及年,伴随一个与该月第一天第一毫秒的时间戳对应的基础数值。 有关详细信息,请参阅MonthNames。 |
| monthsend | 此函数用于返回与包含基准日期的一个月、两个月、季度、四个月期间或半年的最后毫秒的时间戳对应的值。另外,它也可以用于判断上一个或下一个时间周期的时间戳。 |
| monthsname | 此函数用于返回一个显示值,表示时段各月份(根据 MonthNames 脚本变量的格式)和年的范围。基础数值与包含基准日期的一个月、两个月、季度、四个月期间或半年的第一毫秒的时间戳对应。 |
| monthsstart | 此函数用于返回与包含基准日期的一个月、两个月、季度、四个月期间或半年的第一毫秒的时间戳对应的值。另外,它也可以用于判断上一个或下一个时间周期的时间戳。默认的输出格式是脚本中 DateFormat 设置的格式。 |
| monthstart | 此函数用于返回与包含 date 的月份的第一天的第一毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat。 |
| networkdays | networkdays 函数用于返回工作日的编号(周一至周五),在 start_date 和 end_date 之间,并将任何列出的可选 holiday考虑在内。 |
| now | 此函数用于返回当前时间的时间戳。函数以 TimeStamp 系统变量格式返回值。timer_mode 默认值为 1。 |
| quarterend | 此函数用于返回与包含 date 的季度的最后毫秒的时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat。 |
| quartername | 此函数用于返回一个显示值,该值显示季度的月(根据 MonthNames 脚本变量的格式)以及年,伴随一个与该季度第一天第一毫秒的时间戳对应的基础数值。 |
| quarterstart | 此函数用于返回与包含 date 的季度的第一毫秒的时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat。 |
| second | 此函数用于根据标准数字解释当 expression 小数部分被解释为时间时返回一个表示秒的整数。 |
| timezone | 此函数返回在 Qlik 引擎运行的计算机上定义的时区。 |
| today | 此函数用于返回当前日期。函数以 DateFormat 系统变量格式返回值。 |
| UTC | 用于返回当前 Coordinated Universal Time。 |
| week | 此函数用于返回根据 ISO 8601 表示周数的整数。周数根据标准数字解释通过表达式的日期解释进行计算。 |
| weekday | 此函数用于返回包含以下名称的对偶值: 在环境变量 DayNames 中定义的日期名称。 介于 0-6 之间的整数对应于一周 (0-6) 的标定天。 |
| weekend | 此函数返回一个值,该值对应于包含 date 的日历周的最后一天的最后一毫秒的时间戳。默认的输出格式为在脚本中所设置的 DateFormat。 |
| weekname | 此函数用于返回一个值,显示带有与包含 date 的周的第一天的第一毫秒时间戳对应的基本数值对应的年份和周数。 |
| weekstart | 此函数用于返回与包含 date 的日历周的第一天的第一毫秒时间戳对应的值。默认输出格式是在脚本中设置的 DateFormat。 |
| weekyear | 此函数用于返回根据环境变量周数所属的年份。星期数范围在 1 和大约 52 之间。 |
| year | 此函数用于根据标准数字解释当 expression 被解释为日期时返回一个表示年份的整数。 |
| yearend | 此函数用于返回与包含 date 的年份的最后一天的最后毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat。 |
| yearname | 此函数用于返回一个四位数年份的显示值,带有与包含 date 的年份的第一天的第一毫秒时间戳对应的基本数值。 |
| yearstart | 此函数用于返回与包含 date 的年份的第一天的开始时间对应的时间戳。默认的输出格式为在脚本中所设置的 DateFormat。 |
| yeartodate | 此函数用于判断输入时间戳是否在最后加载脚本的日期的年份以内,并返回 True(如果在)或返回 False(如果不在)。 |
可以在已计算字段表达式中使用的格式化和解释函数
格式化函数使用输入表达式的数值,并将其转换成文本值。相比之下,解释函数则相反:它们获取字符串表达式并计算其数字值,从而指定生成数字的格式。在这两种情况下,输出值是双重值,即文本值和数值。
例如,考量 Date 和 Date# 函数之间的输出的差异。
| 函数 | Output (text) | Output (numeric) |
|---|---|---|
| Date#('20140831', 'YYYYMMDD') | 20140831 | 41882 |
| Date(41882, 'YYYY.MM.DD') | 2014.08.31 | 41882 |
当数据包含因日期格式与 Qlik Sense 中设置的日期格式不一致而未解释为日期的日期字段时,这些函数非常有用。在这种情况下,可用于嵌套以下函数:
Date(Date#(DateInput, 'YYYYMMDD'),'YYYY.MM.DD')
此操作会根据输入格式 YYYYMMDD 解释 DateInput 字段,然后以要使用的 YYYY.MM.DD 格式返回。
| 函数 | 说明 |
|---|---|
| Date | Date() 用于使用数据加载脚本的系统变量、操作系统或格式字符串(如果提供)中设置的格式,将表达式的格式设置为日期格式。 |
| date_hash |
Date# 用于使用在第二个参数(如果提供)中指定的格式计算表达式的日期值。 |
| Dual |
Dual() 用于将数字和字符串组合为单个记录,以便此记录的数字呈现形式可用于排序和计算,同时字符串值可用于显示。 |
| Interval | Interval() 用于使用数据加载脚本的系统变量、操作系统或格式字符串(如果提供)中的格式,将数字的格式设置为时间间隔格式。 |
| interval_hash | Interval#() 用于使用操作系统中设置的格式(默认情况下)或第二个参数(如果提供)中指定的格式,计算文本表达式的时间间隔值。 |
| Money | Money() 用于使用数据加载脚本中设置的系统变量或操作系统(如果不提供格式字符串)中设置的格式,以及可选的小数位和千分位分隔符,将表达式的格式设置为数字形式的货币值格式。 |
| money_hash |
Money#() 用于使用在加载脚本或操作系统(如果不提供格式字符串)中设置的格式,将文本字符串转换为货币值。自定义小数位和千分位分隔符的符号为可选参数。 |
| Num | Num() 格式化数字,即使用第二个参数中指定的格式将输入的数值转换为显示文本。如果省略第二个参数,它将使用数据加载脚本中设置的小数点和千位分隔符。自定义小数位和千分位分隔符的符号为可选参数。 |
| num_hash |
Num() 将文本字符串解释为数值,即使用第二个参数中指定的格式将输入字符串转换为数字。如果省略第二个参数,它将使用数据加载脚本中设置的小数点和千位分隔符。自定义小数位和千分位分隔符的符号为可选参数。 |
| Text | Text() 用于强制将表达式作文本进行处理,即使可能解释为数字。 |
| Time | Time() 用于使用数据加载脚本的系统变量或操作系统(如果不提供格式字符串)中设置的时间格式,将表达式的格式设置为时间值格式。 |
| time_hash |
Time#() 用于使用数据加载脚本或操作系统(如果不提供格式字符串)中设置的时间格式,计算表达式的时间值。 |
| Timestamp | TimeStamp() 用于使用数据加载脚本的系统变量或操作系统(如果不提供格式字符串)中设置的时间戳格式,将表达式的格式设置为日期和时间值格式。 |
| timestamp_hash | Timestamp#() 用于使用数据加载脚本或操作系统(如果不提供格式字符串)中设置的时间戳格式,计算表达式的日期和时间值。 |
可以在已计算字段表达式中使用的数字函数
您可以使用这些函数对数值取整。
| 函数 | 说明 |
|---|---|
| ceil | Ceil() 将数值向上取整到通过 offset 数值偏移的 step 的最接近倍数。 |
| div | Div() 用于返回第一个参数算术除以第二个参数的整数部分。两个参数都解释为真实数字,即它们不必是整数。 |
| even | Even() 用于返回 True (-1)(如果 integer_number 为偶整数或零)。用于返回 False (0)(如果 integer_number 为奇整数),返回 NULL(如果 integer_number 不是整数)。 |
| fabs | Fabs() 用于返回 x 的绝对值。结果为正数。 |
| fact | Fact() 用于返回正整数 x 的阶乘。 |
| floor |
Floor() 将数值向下取整到通过 offset 数值偏移的 step 的最接近倍数。 |
| fmod | fmod() 是一个广义模函数,用于返回第一个参数(被除数)整除第二个参数(除数)的余数部分。结果为实数。两个参数都解释为实数,即它们不必是整数。 |
| frac | Frac() 用于返回 x 的小数部分。 |
| mod | Mod() 是一个数学模函数,用于返回整数除法的非负余数。第一个参数是被除数,第二个参数是除数,这两个参数均必须是整数值。 |
| odd | Odd() 用于返回 True (-1)(如果 integer_number 为奇整数或零)。用于返回 False (0)(如果 integer_number 为偶整数),返回 NULL(如果 integer_number 不是整数)。 |
| round |
Round() 用于返回通过偏移 offset 数值向上或向下取整到 step 最接近倍数的结果。 |
| sign | Sign() 用于根据 x 是正数、0 或负数分别返回 1,0 或 -1。 |
可以在已计算字段表达式中使用的条件函数
您可以使用这些函数评估条件,然后根据条件值返回不同的答案。
| 函数 | 说明 |
|---|---|
| alt | alt 函数用于返回首个具有有效数表示法的参数。如果未找到此类匹配,则将返回最后一个参数。可使用任何数目的参数。 |
| class | class 函数用于将第一个参数赋值给类别间隔。结果是一个 a<=x<b 的双值作为文本值,其中 a 和 b 为 bin 的上限值和下限值,且下界为数值。 |
| if | if 函数用于返回一个值,具体取决于函数提供的条件的计算结果是否为 True 或 False。 |
| match |
match 函数用于将第一个参数与所有以下参数进行比较,并返回匹配表达式的数值位置。比较区分大小写。 |
| mixmatch | mixmatch 函数将第一个参数与以下所有参数进行比较,并返回匹配表达式的数字位置。该比较不区分大小写,对日语平假名和片假名字符系统不会进行区分。 |
| pick | pick 函数用于返回列表中的第 n 个表达式。 |
| wildmatch | wildmatch 函数用于将第一个参数与所有以下参数进行比较,并返回匹配表达式的数量。它允许在比较字符串中使用通配符( * 和 ?)。 * 匹配任何字符序列。? 匹配任何单个字符。该比较不区分大小写,对日语平假名和片假名字符系统不会进行区分。 |
可以在已计算字段表达式中使用的 NULL 函数
您可使用这些函数以返回或检测空值。
可以在已计算字段表达式中使用的数学函数
您可将这些函数用于数学计算。
可以在已计算字段表达式中使用的指数和对数函数
您可将这些函数用于指数和对数计算。
可以在已计算字段表达式中使用的分布函数
您可将这些函数用于统计分布计算。
| 函数 | 说明 |
|---|---|
| ChiDist |
ChiDist()返回 chi2 分布的单尾概率。chi2 分布与 chi2 检测相关联。 |
| ChiInv |
ChiInv() 用于返回单尾 chi2 分布概率的相反值。 |
| FDist | FDist() 返回累计 F 概率分布。 |
| FInv | FInv() 返回累计 F 概率分布的倒数。 |
| NormDist | NormDist() 用于返回指定方式及标准误差的累积正态分布。如果 mean = 0 和 standard_dev = 1,则此函数返回标准正态分布。 |
| NormInv | NormInv() 用于返回指定方式及标准误差的累积正态分布的相反值。 |
| TDist | TDist() 用于返回学生 t 分布的概率,其中数值是一个将要为其计算概率的 t 的计算值。 |
| TInv | TInv() 用于作为一个概率和自由度函数返回学生 t 分布的 t 值。 |
可以在已计算字段表达式中使用的地理空间函数
您可将该函数用于处理地理空间数据。
| 函数 | 说明 |
|---|---|
| GeoMakePoint |
GeoMakePoint() 可在脚本和图表表达式中用于通过经度和纬度创建和标记某个点。 |
可以在已计算字段表达式中使用的颜色函数
您可将这些函数用于设置和计算颜色属性。
可以在已计算字段表达式中使用的逻辑函数
您可将这些函数用于处理逻辑运算。
可以在已计算字段表达式中使用的系统函数
您可将这些函数用于访问系统、设备和 Qlik Sense 应用程序属性。
| 函数 | 说明 |
|---|---|
| system-functions |
此函数返回包含当前连接的用户的名称的字符串。 此函数均可用于数据加载脚本和图表表达式。 |
| 重新加载时间 |
此函数返回上次完成数据加载的时间戳。 此函数均可用于数据加载脚本和图表表达式。 |