映射数据流中的表达式函数

适用于:Azure 数据工厂 Azure Synapse Analytics

数据流在 Azure 数据工厂管道和 Azure Synapse Analytics 管道中都可用。 本文适用于映射数据流。 如果你不熟悉转换,请参阅介绍性文章: 使用映射数据流转换数据

本文提供有关映射数据流中 Azure 数据工厂和 Azure Synapse Analytics 支持的表达式函数的详细信息。

表达式函数列表

在 Azure 数据工厂和 Azure Synapse Analytics 管道中,使用映射数据流功能的表达式语言来配置数据转换。

表达式函数 任务
abs 提供数字的绝对值。
acos 计算反余弦值。
add 添加一对字符串或数字。 将日期添加到日期数。 向时间戳添加时长。 将类似类型的数组追加到另一个数组。 与 + 运算符相同。
and 使用逻辑 AND 运算符。 与 &&相同。
asin 计算反正弦值。
assertErrorMessages 返回所有断言消息的映射。
atan 计算反正切值。
atan2 返回平面正 X 轴与给定坐标点之间的弧角。
between 检查第一个值是否在两个其他值之间(含这两个值)。 可以比较数值、字符串和 datetime 值。
bitwiseAnd 跨整数类型使用位运算符And。 与 & 运算符相同。
bitwiseOr 跨整数类型使用位运算符Or。 与 | 运算符相同。
bitwiseXor 跨整数类型使用位运算符Or。 与 | 运算符相同。
blake2b 当给定位长度时,计算一组不同原始数据类型字段的 Blake2 摘要。 位长度只能介于 8 到 512 之间,且是 8 的倍数。 可以用它来计算数据行的指纹。
blake2bBinary 当给定一个位长度时,计算一组不同基元数据类型的列的 Blake2 摘要,该长度只能是 8 到 512 之间的 8 倍数。 可以用它来计算数据行的指纹。
case 根据交替条件应用一个值或另一个值。 如果输入数为偶数,另一个输入在最后一种情况下会默认设为NULL
cbrt 计算一个数的立方根。
ceil 返回不小于该数字的最小整数。
coalesce 返回一组输入中的第一个非 NULL 值。 所有输入应属于同一类型。
columnNames 获取流的所有输出列的名称。 可以将可选流名称作为第一个参数传递,并传递可选的第二个参数以仅返回架构偏移列。
获取流的所有输出列的值。 可以将可选流名称作为第二个参数传递。
compare 比较同一类型的两个值。 如果 value1 < 小于 value2,则返回负整数;如果 value1 等于 value2,则返回 0;如果 value1 > 大于 value2,则返回正值。
concat 将字符串的可变数字连接在一起。 与包含字符串的 + 运算符相同。
concatWS 使用分隔符将字符串的可变数字连接在一起。 第一个参数是分隔符。
cos 计算余弦值。
cosh 计算某个值的双曲余弦值。
crc32 给定一定长度的位时,计算一组不同基元数据类型的列的 CRC32 哈希值。 位长度必须为值 0256)、 224256384512。 可以用它来计算数据行的指纹。
degrees 将弧度转换为度。
divide 将两个数字相除。 与 / 运算符相同。
dropLeft 删除字符串左侧指定的字符数。 如果请求删除的字符数超过了该字符串的长度,则返回空字符串。
dropRight 从字符串右侧删除任意数量的字符。 如果请求删除的字符数超过了该字符串的长度,则返回空字符串。
endsWith 检查字符串是否以提供的字符串结尾。
equals 使用比较等于运算符。 与 == 运算符相同。
equalsIgnoreCase 使用比较等于运算符并忽略大小写。 与 <=> 运算符相同。
escape 根据格式转义字符串。 可接受的格式为jsonxmlecmascripthtmljava
expr 通过字符串生成一个表达式。 等效于以非精简形式编写表达式。 可以使用它将参数作为字符串表示形式传递。
阶乘 计算一个数的阶乘。
false 始终返回 false 值。 如果存在名为syntax(false())的列,请使用函数false
floor 返回不大于该数字的最大整数。
fromBase64 解码特定的 base64 编码字符串。
greater 使用大于运算符的比较。 与 > 运算符相同。
greaterOrEqual 使用大于或等于运算符的比较。 与 >= 运算符相同。
greatest 返回输入值列表中的最大值,跳过 NULL 值。 如果所有输入均为 NULL,则返回 NULL。
hasColumn 在流中按名称检查列值。 可以将可选流名称作为第二个参数传递。 设计时已知的列名应仅使用其名称进行寻址。 不支持计算输入,但可以使用参数替换。
hasError 检查带提供的 ID 的断言是否标记为错误。
iif 根据条件应用一个值或另一个值。 如果未指定另一个值,则会考虑 NULL该值。 这两个值都必须兼容(例如数字或字符串)。
iifNull 当给定两个或多个输入时,返回第一个非 null 项。 此函数等效于 coalesce
initCap 将每个单词的第一个字母转换为大写。 通过空格分隔符识别单词。
instr 查找字符串中子字符串的位置(基于 1)。 如果未找到,则返回0
isDelete 检查该行是否标记为删除。 对于处理多个输入流的转换,可以传递流的索引(以1为基点)。 流索引应为或 12,默认值为 1
isError 检查该行是否标记为错误。 对于处理多个输入流的转换,可以传递流的索引(以1为基点)。 流索引应为 1 或是 2。 默认值为 1
isIgnore 检查是否应忽略该行。 对于处理多个输入流的转换,可以传递流的索引(以1为基点)。 流索引应为 1 或是 2。 默认值为 1
isInsert 检查该行是否标记为插入。 对于处理多个输入流的转换,可以传递流的索引(以1为基点)。 流索引应为 1 或是 2。 默认值为 1
isMatch 检查查找时是否匹配该行。 对于处理多个输入流的转换,可以传递流的索引(以1为基点)。 流索引应为 1 或是 2。 默认值为 1
isNull 检查该值是否为 NULL
isUpdate 检查该行是否标记为更新。 对于处理多个输入流的转换,可以传递流的索引(以1为基点)。 流索引应为 1 或是 2。 默认值为 1
isUpsert 检查该行是否标记为插入。 对于处理多个输入流的转换,可以传递流的索引(以1为基点)。 流索引应为 1 或是 2。 默认值为 1。
jaroWinkler 获取两个字符串之间的 JaroWinkler 距离。
least 使用小于或等于运算符的比较。 与 <= 运算符相同。
left 从索引 1 处开始提取包含字符数的子字符串。 与 SUBSTRING(str, 1, n)相同。
length 返回字符串的长度。
lesser 使用比较较少的运算符。 与 < 运算符相同。
lesserOrEqual 使用小于或等于运算符的比较。 与 <= 运算符相同。
levenshtein 获取两个字符串之间的 levenshtein 距离。
like 使用与字符串完全匹配的模式。 例外是与输入中的任何一个字符匹配的特殊符号 _ (类似于正则表达式中的 posix .* )。
locate 在启动特定位置的字符串中查找子字符串的位置(基于 1)。 如果省略位置,请从字符串的开头开始。 如果未找到,则返回0
log 计算日志值。 可以使用可选基数,或者提供 Euler 编号(如果已使用)。
log10 基于 10 个基数计算日志值。
lower 将字符串小写。
lpad 将字符串从左侧填充指定的填充物,直到达到特定长度。 如果字符串等于或大于长度,则字符串将被剪裁为长度。
ltrim 在左侧裁剪掉前导和尾随字符的字符串。 如果未指定第二个参数,它将剪裁空格。 否则,它会剪裁第二个参数中指定的任何字符。
md5 计算一组不同基元数据类型的列的 MD5 摘要,并返回 32 个字符的十六进制字符串。 可以用它来计算数据行的指纹。
minus 减去数字。 减去日期中的天数。 从时间戳中减去持续时间。 减去两个时间戳以获取毫秒的差异。 与 - 运算符相同。
mod 提供一对数字的模数。 与 % 运算符相同。
multiply 将一对数字相乘。 与 * 运算符相同。
negate 对数字求反。 将正数转换为负数,或反之。
nextSequence 返回下一个唯一序列。 该数字仅在分区内连续,并且以分区 ID 为前缀。
规范化 规范化字符串值以分隔重音 Unicode 字符。
not 使用逻辑求反运算符。
notEquals 使用比较不等于运算符。 与 != 运算符相同。
null 返回一个 NULL 值。 如果存在名为syntax(null())的列,请使用函数null。 使用它的任何操作都会导致NULL
or 使用逻辑 OR 运算符。 与 ||相同。
pMod 提供一对数字的正模数。
partitionId 返回输入行位于的当前分区 ID。
power 以一个数为底、另一数为幂求值。
radians 将度转换为弧度。
random 当给定分区中的可选种子时,返回一个随机数。 种子应为固定值,并与分区 ID 一起使用以生成随机值。
regexExtract 提取特定正则表达式模式的匹配子字符串。 最后一个参数标识匹配组,如果省略,则默认为 1。 使用 `<regex>` 来匹配字符串而无需进行转义。
regexMatch 检查字符串是否与特定的正则表达式模式匹配。 使用 `<regex>` 来匹配字符串而无需进行转义。
regexReplace 将正则表达式模式的所有匹配项替换为特定字符串中的另一个子字符串。 使用 `<regex>` 来匹配字符串而无需进行转义。
regexSplit 基于分隔符和正则表达式拆分字符串,并返回字符串数组。
replace 将特定字符串中所有出现的子字符串替换为另一个子字符串。 如果省略最后一个参数,则默认为空字符串。
reverse 反转字符串。
right 从右侧提取包含字符数的子字符串。 与 SUBSTRING(str, LENGTH(str) - n, n)相同。
rlike 检查字符串是否与特定的正则表达式模式匹配。
round 在提供可选刻度和可选舍入模式时对数字进行舍入。 如果省略刻度,则默认为 0。 如果省略模式,则默认为 ROUND_HALF_UP(5).
rpad 使用提供的填充字符在字符串右侧进行填充,直到达到指定长度。 如果字符串等于或大于长度,则字符串将被剪裁为长度。
rtrim 在右侧裁剪掉尾随字符的字符串。 如果未指定第二个参数,它将剪裁空格。 否则,它会剪裁第二个参数中指定的任何字符。
sha1 计算一组不同基元数据类型的列的 SHA-1 摘要,并返回 40 个字符的十六进制字符串。 可以用它来计算数据行的指纹。
sha2 当给定一个位长时,计算一组具有不同基元数据类型的列的 SHA-2 摘要,该长度只能是值0256)、224256384或者512。 可以用它来计算数据行的指纹。
sin 计算正弦值。
sinh 计算双曲正弦值。
soundex 获取字符串的 soundex 代码。
split 基于分隔符拆分字符串,并返回字符串数组。
sqrt 计算一个数的平方根。
startsWith 检查字符串是否以提供的字符串开头。
substring 从某个位置提取特定长度的子字符串。 位置从 1 开始。 如果省略长度,则默认为字符串的末尾。
substringIndex 提取第 count 次出现的分隔符之前的子字符串。 如果 count 为正,则返回最终的分隔符左侧的所有内容(从左侧开始计算)。 如果 count 为负,则返回最终的分隔符右侧的所有内容(从右侧开始计算)。
tan 计算正切值。
tanh 计算双曲正切值。
translate 将一组字符替换为字符串中的另一组字符。 字符可以一对一替换。
trim 裁剪掉前导和尾随字符的字符串。 如果未指定第二个参数,它将剪裁空格。 否则,它会剪裁第二个参数中指定的任何字符。
true 始终返回 true 值。 如果某列的名称是syntax(true()),请使用函数true
typeMatch 匹配列的类型。 仅在模式表达式中使用。 数字与短、整数、长、双精度、浮点数或小数匹配。 整型匹配短、整数和长。 小数部分匹配双精度、浮点数和十进制数。 日期时间匹配日期或时间戳类型。
unescape 根据格式取消转义字符串。 可接受的格式为jsonxmlecmascripthtmljava
upper 将字符串大写。
uuid 返回生成的 UUID。
xor 提供逻辑 XOR 运算符。 与 ^ 运算符相同。