表达式函数 | Qlik Cloud帮助
跳到主要内容 跳到补充内容

表达式函数

上次更新日期:2026/10/28

在构建表达式时,使用函数来转换行值、处理缺失数据或检索相关值。有关详细信息,请参阅构建表达式。

以下函数描述了 SaaS 管理的登陆、湖登陆和复制任务中的移动任务表达式。使用编辑器中显示的函数签名。签名中的方括号表示可选参数;请勿输入方括号。

有关 CDC 存储和流式转换函数,请参阅 转换函数。对于在云数据平台上执行的存储、转换和数据集市表达式,请使用该平台的函数语法。

字符串函数

前缀和后缀函数作用于字符串的开头或结尾。字符替换作用于单个字符,而不是匹配整个前缀或后缀。

字符串函数参数、行为和示例
函数 行为与参数 示例和结果
$CONCAT(X, Y) 按此顺序连接两个字符串 X 和 Y。如果任一参数为 NULL,则返回 NULL。嵌套调用以连接两个以上的字符串。 $CONCAT('My', 'Picture') 返回 'MyPicture'。$CONCAT('My', NULL) 返回 NULL。
$INSTR(string, substring) 返回 substring 在 string 中首次出现的基于 1 的位置。如果未找到子字符串,则返回 0。 $INSTR('mystring', 'ing') 返回 6。$INSTR('mystring', 'xyz') 返回 0。
$LENGTH(string) 返回 string 中的字符数,而不是其字节大小。 $LENGTH('mystring') 返回 8。
$LOWER(string) 返回 string 的副本,其中 ASCII 字母已转换为小写。 $LOWER('ABC') 返回 'abc'。
$LTRIM(string[, characters]) 从 string 的开头移除字符。可选的 characters 参数是一组要移除的字符,而不是前缀。如果省略,则移除空格。 $LTRIM(' orders') 返回 'orders'。$LTRIM('@@orders', '@') 返回 'orders'。
$REMOVE_PREFIX(string, prefix) 返回移除了指定开头 prefix 的 string 副本。 $REMOVE_PREFIX('mystring', 'my') 返回 'string'。
$REMOVE_SUFFIX(string, suffix) 返回移除了指定结尾 suffix 的 string 副本。 $REMOVE_SUFFIX('mystring', 'ing') 返回 'mystr'。
$REPLACE(string, pattern, replacement) 将 string 中出现的每个 pattern 替换为 replacement。所有三个参数都是必需的。使用空替换字符串来删除匹配的文本。 $REPLACE('a-b-c', '-', '_') 返回 'a_b_c'。$REPLACE('a-b', '-', '') 返回 'ab'。
$REPLACE_CHARS(string, chars, replacement) 将 chars 中列出的每个字符替换为 replacement 中相同位置的字符。未列出的字符保持不变。如果缺少替换位置,则使用第一个替换字符。 $REPLACE_CHARS('mystring', 's', 'z') 返回 'myztring'。$REPLACE_CHARS('abcde', 'abcd', '123') 返回 '1231e'。
$REPLACE_PREFIX(string, prefix, replacement) 将 string 开头的 prefix 替换为 replacement。 $REPLACE_PREFIX('mystring', 'my', 'new') 返回 'newstring'。
$REPLACE_SUFFIX(string, suffix, replacement) 将 string 中末尾的 suffix 替换为 replacement,而不是替换所有匹配项。 $REPLACE_SUFFIX('mystring', 'ing', 'new') 返回 'mystrnew'。
$RTRIM(string[, characters]) 从 string 的末尾移除字符。可选的 characters 参数是一组要移除的字符,而不是后缀。如果省略,则移除空格。 $RTRIM('orders ') 返回 'orders'。$RTRIM('orders@@', '@') 返回 'orders'。
$SUBSTR(string, start[, length]) 从 string 中提取文本,从基于 1 的位置 start 开始。length 指定字符数。如果省略,则返回剩余字符。 $SUBSTR('abcdef', 2, 3) 返回 'bcd'。
$TRIM(string[, characters]) 移除 string 两端的字符。可选的 characters 参数是要移除的字符集,而不是子字符串。如果省略,则移除空格。 $TRIM(' orders ') 返回 'orders'。$TRIM('@#orders#@', '@#') 返回 'orders'。
$UNICODE(string) 返回 string 中第一个字符的 Unicode 码位数值。参数必须是字符串。 $UNICODE('ABC') 返回 65。
$UPPER(string) 返回 string 的副本,其中 ASCII 字母已转换为大写。 $UPPER('abc') 返回 'ABC'。

数字函数

使用这些函数计算当前行的数值。$MAX 和 $MIN 比较行内的参数,而不是跨行的值。

数值函数参数、行为及示例
函数 行为与参数 示例和结果
$ABS(X) 返回数值参数 X 的绝对值。 $ABS(-20) 返回 20。
$MAX(arg1, arg2, ...) 返回所提供的数值参数中的最大值。至少提供两个参数。 $MAX(10, 4, 20, 9) 返回 20。
$MIN(arg1, arg2, ...) 返回所提供数值参数中的最小值。至少提供两个参数。 $MIN(10, 4, 20, 9) 返回 4。
$RANDOM() 返回一个伪随机有符号整数。不接受任何参数。 $RANDOM() 返回一个整数,该整数可以为负数、零或正数。其值在各次调用之间会有所不同。
$ROUND(value[, digits]) 将 value 四舍五入到 digits 位小数,并返回一个浮点值。如果省略 digits,则舍入到 0 位小数。 $ROUND(3.141592, 3) 返回 3.142。

LOB 函数

这些函数用于处理二进制大对象 (BLOB)。size 参数 N 指定的是字节,而非字符。

二进制值函数
函数 行为与参数 示例和结果
$HEX(blob) 返回表示 blob 的字节的大写十六进制文本。数值输入首先转换为文本;结果并非该数字的机器表示。 $HEX(X'4142') 返回 '4142'。
$RANDOM_BLOB(N) 返回 N 个伪随机字节。如果 N 小于 1,则返回一个字节。请勿使用此函数来保证密码学随机性。 $RANDOM_BLOB(4) 返回一个 4 字节的 BLOB。其值在各次调用之间会有所不同。
$ZERO_BLOB(N) 返回包含 N 个零字节的 BLOB。 $HEX($ZERO_BLOB(3)) 返回 '000000'。

Null 检查函数

Null 检查函数参数、行为和示例
函数 行为与参数 示例和结果
$COALESCE(X, Y, ...) 按参数顺序返回第一个非 NULL 参数。至少提供两个参数。如果所有参数均为 NULL,则结果为 NULL。空字符串不是 NULL。 $COALESCE(NULL, 'Unknown') 返回 'Unknown'。$COALESCE('', 'Unknown') 返回空字符串。
$IFNULL(X, Y) 如果 X 不为 NULL,则返回该值;否则返回 Y。如果两个参数都为 NULL,则返回 NULL。请提供恰好两个参数。 $IFNULL(NULL, 'Unknown') 返回 'Unknown'。$IFNULL('Known', 'Unknown') 返回 'Known'。
$NULLIF(X, Y) 如果 X 和 Y 相等,则返回 NULL;否则返回 X。请提供恰好两个参数。 $NULLIF('Unknown', 'Unknown') 返回 NULL。$NULLIF('Known', 'Unknown') 返回 'Known'。

日期和时间函数

提供日期、时间或日期时间字符串,例如 '2026-10-08'、'12:34:56' 或 '2026-10-08 12:34:56'。将日期常量放在引号内,这样连字符就不会被解释为减法。

日期计算与格式化
函数 行为与参数 示例和结果
$DATE(date_string) 以 YYYY-MM-DD 格式将 date_string 中的日期作为文本返回。 $DATE('2026-10-08') 返回 '2026-10-08'。
$DATETIME(datetime_string) 以 YYYY-MM-DD HH:MM:SS 格式将 datetime_string 中的日期和时间作为文本返回。 $DATETIME('2026-10-08 12:34:56') 返回 '2026-10-08 12:34:56'。
$JULIANDAY(datetime_string) 返回自公元前 4714 年 11 月 24 日格林尼治正午以来的小数天数。将两个儒略日值相减以计算经过的天数。 $JULIANDAY('2000-01-01 12:00:00') 返回 2451545.0。$JULIANDAY('2026-10-09') - $JULIANDAY('2026-10-08') 返回 1.0。
$STRFTIME(format, datetime_string) 返回使用 format 格式化的文本。格式位于日期或日期时间输入之前。 $STRFTIME('%Y-%m', '2026-10-08') 返回 '2026-10'。
$TIME(time_string) 以 HH:MM:SS 格式将 time_string 中的时间作为文本返回。 $TIME('12:34:56') 返回 '12:34:56'。

格式替换

在 $STRFTIME 中将以下替换项与字面分隔符组合。例如,'%Y-%m-%d %H:%M:%S' 会同时格式化日期和时间。不支持的替换返回 NULL。

日期和时间格式替换
替换 含义
%d 月中的日期,01-31。
%H 小时,00-24。
%f 带小数部分的秒,SS.SSS。
%j 一年中的第几天,001-366。
%J 儒略日数。
%m 月份,01-12。
%M 分钟,00-59。
%s 自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。
%S 秒,00-59。
%w 星期几,0-6;星期日为 0。
%W 一年中的周数,00-53;每周从星期一开始。
%Y 年份,0000-9999。
%% 百分号字面量。

数据丰富函数

使用查找从源端点或目标端点中的表中添加关联值(例如部门名称)。

数据富化函数参数、行为和示例
函数 行为与参数 示例和结果
$SOURCE_LOOKUP(time_to_live, schema, table, expression, condition, condition_params) 针对与 condition 匹配的记录,从 schema 中源端点的 table 检索 expression 的值。条件参数按顺序为其占位符提供值。 $SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID) 从源中检索匹配的部门名称。
$TARGET_LOOKUP(time_to_live, schema, table, expression, condition, condition_params) 针对与 condition 匹配的记录,从目标端点的 table(位于 schema 中)检索 expression 的值。条件参数按顺序为其占位符提供值。 $TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID) 从目标中检索匹配的部门名称。

condition_params 表示以逗号分隔的参数列表,而不是单个数组参数。这两个函数都使用以下参数:

查找参数及其关系
参数 含义
time_to_live

必需的缓存生命周期,无默认值。提供以秒为单位的缓存生命周期,'NO_CACHING' 用于禁用缓存,或 'NO_EXPIRATION' 用于保留缓存结果且永不过期。

较短的生命周期可刷新频繁更改的数据。更长的生命周期可以减少端点查询,但在查找数据发生更改后可能会返回缓存值。仅对不会更改的数据使用永不过期。

schema 包含查找表的架构,以文本形式提供。
table 该架构内要查询的表,以文本形式提供。
expression 选择单个列值的 SQL 表达式,例如 'DEPARTMENT_NAME' 或 'PRICE * 1.2'。使用所访问端点的 SQL 方言,而不是外层表达式的函数语法。
condition 用于标识查找记录的 SQL 条件。使用所访问端点的方言和占位符语法:例如,Oracle 使用 :1 和 :2,或者适用于 Microsoft SQL Server 的 ?。
condition_params 按顺序绑定到条件占位符的值。诸如 $COMPANY_ID 和 $DEPARTMENT_ID 等列参数提供来自当前行的值。

为查找字段创建索引以降低查询成本。选择用于标识目标记录的条件,并将添加的列的数据类型设置为与所选值匹配。

信息注释不支持测试对 $SOURCE_LOOKUP 和 $TARGET_LOOKUP 的调用。请参阅 测试表达式。

源查找示例

对于 Oracle 数据源,以下表达式从 HR.DEPARTMENTS 检索 DEPARTMENT_NAME 并将结果缓存 60 秒:

$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)

如果当前行包含 DEPARTMENT_ID 10,且匹配的查找记录包含 'Sales',则结果为 'Sales'。

对于 Microsoft SQL Server 源,请使用其条件占位符语法。本示例按此顺序绑定公司和部门的值:

$SOURCE_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'COMPANY_ID=? AND DEPARTMENT_ID=?', $COMPANY_ID, $DEPARTMENT_ID)

目标查找示例

对于 Microsoft SQL Server 目标,使用其 SQL 方言查询目标表:

$TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID)

如果部门 10 的目标查找记录包含 'Sales',则输入值为 10 的结果为 'Sales'。

运算函数

操作函数参数、行为和示例
函数 行为与参数 示例和结果
$OPERATION_INDICATOR(value_on_delete, value_on_update, value_on_insert) 返回您为每个源操作指定的标志。参数顺序为删除、更新,然后是插入。使用专用列存储标志,并提供与其数据类型匹配的标志值。 $OPERATION_INDICATOR('Deleted', 'Updated', 'Inserted') 在更新时返回 'Updated'。

在 Qlik Replicate 中,此函数还会更改删除处理方式:它会保留相应的目标记录,并使用 value_on_delete 对其进行标记。对于 Qlik Talend Cloud Data Integration,此删除处理行为需要确认。

逻辑函数

条件值选择
函数 行为与参数 示例和结果
$IFF(boolean_expression, true_value, false_value) 如果 boolean_expression 的计算结果为 true,则返回 true_value;否则返回 false_value。首先提供条件,后跟两个结果值。 $IFF(10 > 5, 'High', 'Low') 返回 'High'。$IFF(3 > 5, 'High', 'Low') 返回 'Low'。

其他功能

模式匹配与值类型
函数 行为与参数 示例和结果
$LIKE(pattern, string[, escape_character]) 匹配时返回 1,不匹配时返回 0;输入 NULL 则返回 NULL。% 匹配零个或多个字符;_ 匹配一个字符。匹配默认忽略 ASCII 字母大小写。可选的转义符为一个字符。与 LIKE 运算符不同,模式排在前面。 $LIKE('A%', 'Alice') 返回 1。$LIKE('10!%', '10%', '!') 返回 1。
$TYPEOF(expression) 返回值的存储类:'null'、'integer'、'real'、'text' 或 'blob'。这不是配置的输出列类型。 $TYPEOF(12.5) 返回 'real'。

哈希函数

哈希函数参数、行为和示例
函数 行为与参数 示例和结果
$SHA256(string) 返回输入字符串的十六进制 SHA-256 哈希值。 $SHA256('abc') 返回 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad。

哈希不是加密。可预测的输入值仍然可以通过比较其哈希值来识别。

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!