使用已计算字段

多种情况下,需要调整或转换已加载的字段数据。例如,可能需要将姓和名串联成全名,提取部分产品编码,转换数据格式或让两个数字相乘。

可以添加已计算字段来管理多种上述类似情况。已计算字段使用表达式来定义字段结果。可以使用表达式中的函数、字段和运算符。只能引用正在编辑的表格中的字段。您可在自己的已计算字段中参考另一个已计算字段。

您可以在数据管理器的表格编辑器中添加和编辑已计算字段。

要了解有关编辑表的更多信息,请参阅编辑表格

添加已计算字段

执行以下操作:

  1. 单击添加字段并选择已计算字段

    随即会打开添加已计算字段编辑器。

  2. 名称中输入已计算字段的名称。
  3. 表达式中定义已计算字段的表达式。可以通过两种不同的方式来执行此操作。

    • 使用 3函数-字段)和 运算符)列表来选择项目,并将其插入表达式。

      表达式中的光标位置插入所选项目。

    • 表达式中输入已计算字段的表达式。

      输入时,您可以在建议的函数和字段以及函数语法方面获得帮助。

    已计算字段的结果示例显示在预览中。

  4. 单击创建来创建已计算字段,然后关闭已计算字段编辑器。

编辑已计算字段

可以更改已计算字段的名称或编辑已计算字段的表达式。

执行以下操作:

  1. 从字段名称旁的下拉菜单中选择编辑

    随即会打开更新已计算字段编辑器。

  2. 如果要更改字段,则在名称中编辑已计算字段的名称。
  3. 编辑已计算字段的表达式。

  4. 单击更新来更新已计算字段,然后关闭已计算字段编辑器。

可以在已计算字段表达式中使用哪些函数?

创建已计算字段表达式时,可以使用此处列出的函数。这是数据加载脚本中可用的表达式子集。表达式不能聚合多个记录的数据,或使用内部记录函数来引用其他记录中的数据。

有关更多信息,请参阅脚本表达式

可以在已计算字段表达式中使用的字符串函数

可以使用这些函数来修改或提取文本字符串格式的数据。

字符串函数
函数 说明
Capitalize Capitalize() 用于返回包含首字母大写的所有单词的字符串。
Chr Chr() 用于返回与输入整数对应的 Unicode 字符。
FindOneOf

FindOneOf() 用于搜索字符串,以便从一组提供的字符中找到任意字符出现的位置。如果不提供第三个参数(值大于 1),则返回任意字符在搜索集合中首次出现的位置。如果未找到匹配值,则返回 0

Index Index() 用于搜索字符串,以便找到所提供子字符串第 n 次出现的开始位置。可选的第三个参数用于提供值 n,如果省略,则值为 1。如果为负值,则从字符串的结尾开始搜索。字符串中的位置从 1 开始编号。
KeepChar

KeepChar() 用于返回包含第一个字符串“text”,但不包含第二个字符串“keep_chars”所包含的任何字符的字符串。

Left Left() 用于返回特定字符串,其中包含输入字符串的第一个(最左)字符,其中字符数量由第二个参数决定。
Len Len() 用于返回输入字符串的长度。
Lower Lower() 用于将输入字符串中的所有字符转换为小写字符。
LTrim LTrim() 用于返回由任何前导空格剪裁的输入字符串。
Mid Mid() 返回从第二个参数“start”定义的字符位置开始的输入字符串的一部分,并返回第三个参数“count”定义的字符数量。如果省略“count”,则返回输入字符串的剩余部分。输入字符串的第一个字符的编号为 1。
Ord Ord() 用于返回输入字符串第一个字符的 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 此函数用于返回在 startdaten 个月内发生的日期,或者如果 n 为负数,则用于返回 startdaten 个月内发生的日期。
addyears 此函数用于返回在 startdaten 年内发生的日期,或者如果 n 为负数,则用于返回 startdaten 年内发生的日期。
age age 函数用于返回某人在 date_of_birth 出生的 timestamp(完整年份)时的年龄。
converttolocaltime UTCGMT 时间戳转换为本地时间作为对偶值。此地方可为全世界任何一个城市,地方和时区。 
day

此函数用于根据标准数字解释当 expression 小数部分被解释为日期时返回一个表示某天的整数。

dayend 此函数用于返回与 time 中包含的一天的最后毫秒的时间戳对应的值。默认的输出格式为在脚本中所设置的 TimestampFormat
daylightsaving UTCGMT 时间戳转换为本地时间作为对偶值。此地方可为全世界任何一个城市,地方和时区。 
dayname 此函数用于返回一个值,显示与包含 time 当天第一毫秒的时间戳对应的基本数值的日期。
daynumberofquarter UTCGMT 时间戳转换为本地时间作为对偶值。此地方可为全世界任何一个城市,地方和时区。 
daynumberofyear 此函数用于计算时间戳所属的年份的天数。从该年度的第一天的第一毫秒开始计算,但可以偏移第一个月。
daystart

此函数用于返回与 time 参数中包含的一天的最后毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 TimestampFormat

firstworkdate firstworkdate 函数用于返回最近的起始日以获得 no_of_workdays(周一至周五),将任何列出的可选节假日考虑在内,不迟于 end_dateend_dateholiday 应为有效的日期或时间戳。
GMT 此函数用于返回来自系统时钟的当前 Greenwich Mean TimeWindows 时间设置。
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 开始考虑任何列出的可选 holidaystart_dateholiday 应是有效的日期或时间戳。 
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 此函数用于返回根据年份 YYYY、星期 WW 和星期几 D 计算的日期。
minute 此函数用于根据标准数字解释当 expression 小数部分被解释为时间时返回一个表示分钟的整数。
month 此函数用于返回包含在环境变量 MonthNames 中定义的月份名称的对偶值和一个介于 1 至 12 的整数。月份根据标准数字解释通过表达式的日期解释进行计算。

有关更多信息,请参阅MonthNames

monthend 此函数用于返回与包含 date 的月份的最后一天的最后毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat
monthname 此函数用于返回一个显示值,该值显示该月(根据 MonthNames 脚本变量的格式)以及年,伴随一个与该月第一天第一毫秒的时间戳对应的基础数值。

有关更多信息,请参阅MonthNames

monthsend 此函数用于返回与包含基准日期的一个月、两个月、季度、四个月或半年的最后毫秒的时间戳对应的值。另外,它也可以用于判断上一个或下一个时间周期的时间戳。
monthsname 此函数用于返回一个显示值,表示时段各月份(根据 MonthNames 脚本变量的格式)和年的范围。基础数值与包含基准日期的一个月、两个月、季度、四个月或半年的第一毫秒的时间戳对应。
monthsstart 此函数用于返回与包含基准日期的一个月、两个月、季度、四个月或半年的第一毫秒的时间戳对应的值。另外,它也可以用于判断上一个或下一个时间周期的时间戳。
monthstart 此函数用于返回与包含 date 的月份的第一天的第一毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat
networkdays networkdays 函数用于返回工作日的编号(周一至周五),在 start_dateend_date 之间,并将任何列出的可选 holiday考虑在内。
now 此函数用于返回系统时钟的当前时间的时间戳。默认值为 1。
quarterend 此函数用于返回与包含 date 的季度的最后毫秒的时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat
quartername 此函数用于返回一个显示值,该值显示季度的月(根据 MonthNames 脚本变量的格式)以及年,伴随一个与该季度第一天第一毫秒的时间戳对应的基础数值。
quarterstart 此函数用于返回与包含 date 的季度的第一毫秒的时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat
second 此函数用于根据标准数字解释当 expression 小数部分被解释为时间时返回一个表示秒的整数。
timezone 此函数用于返回当前时区的名称,如 Windows 所定义。
today 此函数用于返回系统时钟的当前日期。
UTC 用于返回当前 Coordinated Universal Time
week 此函数用于返回根据 ISO 8601 表示周数的整数。周数根据标准数字解释通过表达式的日期解释进行计算。
weekday 此函数用于返回包含以下名称的对偶值: 在环境变量 DayNames 中定义的日期名称。 介于 0-6 之间的整数对应于一周 (0-6) 的标定天。
weekend 此函数用于返回一个与包含 date 的日历周的最后一日(周日)最后一毫秒时间戳对应的值。默认输出格式为在脚本中设置的 DateFormat
weekname 此函数用于返回一个值,显示带有与包含 date 的周的第一天的第一毫秒时间戳对应的基本数值对应的年份和周数。
weekstart 此函数用于返回与包含 date 的日历周的第一天(周一)的第一毫秒时间戳对应的值。默认输出格式是在脚本中设置的 DateFormat
weekyear 此函数用于返回根据 ISO 8601 周数所属的年份。星期数范围在 1 和大约 52 之间。
year 此函数用于根据标准数字解释当 expression 被解释为日期时返回一个表示年份的整数。
yearend 此函数用于返回与包含 date 的年份的最后一天的最后毫秒时间戳对应的值。默认的输出格式为在脚本中所设置的 DateFormat
yearname 此函数用于返回一个四位数年份的显示值,带有与包含 date 的年份的第一天的第一毫秒时间戳对应的基本数值。
yearstart 此函数用于返回与包含 date 的年份的第一天的开始时间对应的时间戳。默认的输出格式为在脚本中所设置的 DateFormat
yeartodate 此函数用于判断输入时间戳是否在最后加载脚本的日期的年份以内,并返回 True(如果在)或返回 False(如果不在)。

可以在已计算字段表达式中使用的格式化和解释函数

格式化函数使用输入表达式的数值,并将其转换成文本值。相比之下,解释函数则相反:它们获取字符串表达式并计算其数字值,从而指定生成数字的格式。在这两种情况下,输出值是双重值,即文本值和数值。

例如,考量 DateDate# 函数之间的输出的差异。

日期和 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 的双值作为文本值,其中 ab 为 bin 的上限值和下限值,且下界为数值。
if if 函数用于返回一个值,具体取决于函数提供的条件的计算结果是否为 TrueFalse
match

match 函数用于将第一个参数与所有以下参数进行比较,并返回匹配表达式的数值位置。比较区分大小写。

mixmatch mixmatch 函数用于将第一个参数与所有以下参数进行比较,并返回匹配表达式的数值位置。比较不区分大小写。
pick pick 函数用于返回列表中的第 n 个表达式。
wildmatch wildmatch 函数用于将第一个参数与所有以下参数进行比较,并返回匹配表达式的数量。它允许在比较字符串中使用通配字符( *?)。 * 匹配任何字符序列。? 匹配任意单个字符。比较不区分大小写。

可以在已计算字段表达式中使用的 NULL 函数

您可使用这些函数以返回或检测空值。

NULL 函数
函数 说明
Null

Null 函数用于返回 NULL 值。

IsNull

IsNull 函数用于检验表达式的值是否为 NULL,如果是,则返回 -1 (True),否则返回 0 (False)。

可以在已计算字段表达式中使用的数学函数

您可将这些函数用于数学计算。

数学函数
函数 说明
e

该函数返回自然对数 e ( 2.71828...) 的基数。

rand

该函数返回 0 与 1 之间的随机数字。并且,该函数也可用于创建样本数据。

可以在已计算字段表达式中使用的指数和对数函数

您可将这些函数用于指数和对数计算。

指数和对数函数
函数 说明
exp

自然指数函数 e^x,使用自然对数 e 作为底数。结果为正数。

log

x 的自然对数。仅在 x> 0 时才可定义此函数。结果为数字。

log10

x 的常用对数(以 10 为底)。仅在 x> 0 时才可定义此函数。结果为数字。

pow

返回 xy 次幂。结果为数字。

sqr

x 平方(x 的 2 次幂)。结果为数字。

sqrt

x 的平方根。仅在 x >= 0 时才可定义此函数。结果为正数。

可以在已计算字段表达式中使用的分布函数

您可将这些函数用于统计分布计算。

分布函数
函数 说明
CHIDIST

CHIDIST() 用于返回单尾 chi2 分布概率。chi2 分布与 chi2 检验相关联。

CHIINV

CHIINV() 用于返回单尾 chi2 分布概率的相反值。

FDIST FDIST() 用于返回 F 概率分布。
FINV FINV() 用于返回 F 概率分布的相反值。
NORMDIST NORMDIST() 用于返回指定方式及标准误差的累积正态分布。如果 mean = 0standard_dev = 1,则此函数返回标准正态分布。
NORMINV NORMINV() 用于返回指定方式及标准差的累积正态分布的相反值。
TDIST TDIST() 用于返回学生 t 分布的概率,其中数值是一个将要为其计算概率的 t 的计算值。
TINV TINV() 用于作为一个概率和自由度函数返回学生 t 分布的 t 值。

可以在已计算字段表达式中使用的地理空间函数

您可将该函数用于处理地理空间数据。

地理空间函数
函数 说明
GeoMakePoint

GeoMakePoint() 可在脚本和图表表达式中用于通过经度和纬度创建和标记某个点。

可以在已计算字段表达式中使用的颜色函数

您可将这些函数用于设置和计算颜色属性。

颜色函数
函数 说明
ARGB

ARGB() 用于在表达式中设置或评估图表对象的颜色属性,其中用红色成分 r、绿色成分 g 和蓝色成分 b,以及透明度系数(不透明度)alpha 定义颜色。

HSL

HSL() 用于在表达式中设置或评估图表对象的颜色属性,其中 huesaturationluminosity 值介于 0 与 1 之间,用于定义颜色。

RGB RGB() 用于在表达式中设置或评估图表对象的颜色属性,其中用红色成分 r、绿色成分 g 和蓝色成分 b,以及介于 0 和 255 之间的值定义颜色。

可以在已计算字段表达式中使用的逻辑函数

您可将这些函数用于处理逻辑运算。

逻辑函数
函数 说明
IsNum

返回 -1 (True)(如果将表达式解释为数字),否则返回 0 (False)。

IsText

返回 -1 (True)(如果表达式显示为文本),否则返回 0 (False)。

可以在已计算字段表达式中使用的系统函数

您可将这些函数用于访问系统、设备和 Qlik Sense 应用程序属性。

系统函数
函数 说明
system-functions

此函数返回包含当前连接的用户的名称的字符串。 此函数均可用于数据加载脚本和图表表达式。

ReloadTime

此函数返回上次完成数据加载的时间戳。 此函数均可用于数据加载脚本和图表表达式。