跳至主要内容
Workday User Guide
上次更新时间 :2024-06-28
Prism 表达式快速参考

Prism 表达式快速参考

转换函数

函数
描述
示例
根据构建币种字段
NUMERIC
值和
TEXT
INSTANCE
value 包含有效币种代码。如果币种代码无效,此函数将返回 NULL。
BUILD_CURRENCY([Sale Price], [Currency Code])
将数据值从一种字段类型(数据类型)转换为另一种字段类型。
CAST([Region] AS Instance(eecb565181284b6a8ae8b45dc3ed1451))
CAST(99.99 AS decimal(10,3))
退货
99.990
CAST(99.99 AS decimal(20,2))
退货
99.99
CAST(99.999 AS decimal(10,2))
退货
100.00
转换
LONG
值范围
DATE
值,其中输入数字表示自该纪元以来的毫秒数。
EPOCH_MS_TO_DATE(1360260240000) returns
2013-02-07T18:04:00:000Z
获取一个币种值,并提取数值金额作为
NUMERIC
EXTRACT_AMOUNT([Salary])
接受
CURRENCY
值,并将币种代码提取为
INSTANCE
EXTRACT_CODE([Salary])
接受
CURRENCY
值,并将币种代码提取为
TEXT
EXTRACT_CODE_TEXT([Salary])
转换
TEXT
BOOLEAN
INTEGER
LONG
,或
NUMERIC
值范围
BOOLEAN
TO_BOOLEAN([is_contingent])
转换
TEXT
将包含有效币种格式数据的值
CURRENCY
值。
TO_CURRENCY("1234.56 USD")
TO_CURRENCY(CONCAT(TO_STRING([Grant Price]), [Grant Code]))
转换
TEXT
值范围
DATE
值,并指定字符串中日期和时间元素的格式。
TO_DATE([order_date],"yyyy.MM.dd 'at' HH:mm:ss z")
转换
TEXT
BOOLEAN
INTEGER
LONG
DOUBLE
,或
NUMERIC
值范围
NUMERIC
小数点前后具有默认位数的值。
TO_DECIMAL([average_rating])
转换
TEXT
BOOLEAN
INTEGER
LONG
,或
DOUBLE
值范围
DOUBLE
(一种数值类型)值。
TO_DOUBLE([average_rating])
转换
TEXT
BOOLEAN
INTEGER
LONG
,或
DOUBLE
值范围
INTEGER
(整数)个值。转换时
DOUBLE
值,则小数点之后的所有数字都将被截断(不向上或向下舍入)。
TO_INT([average_rating])
转换
TEXT
BOOLEAN
INTEGER
LONG
DECIMAL
DATE
,或
DOUBLE
值范围
Long
(整数)个值。转换时
Decimal
DOUBLE
值,则小数点之后的所有数字都将被截断(不向上或向下舍入)。
TO_LONG([average_rating])
将其他数据类型的值转换为
TEXT
(字符)值。
TO_STRING([sku_number])

日期函数

函数
描述
示例
将指定的时间间隔添加到
DATE
DATE_ADD([invoice_date], 45, "day")
计算 2 之间的时间
DATE
值 (
value1
-
value2
),并将其截断为 天(考虑到夏令时)。
DAYS_BETWEEN([ship_date], [order_date])
返回 a 的指定部分。
DATE
EXTRACT("hour",[order_date])
计算两个时间之间的整数小时数(忽略分钟、秒和毫秒)
DATE
值 (
value1
-
value2
)。
HOURS_BETWEEN([ship_date],[order_date])
计算两个时间点之间的整数毫秒数
DATE
值 (
value1
-
value2
)。
MILLISECONDS_BETWEEN([request_timestamp], [response_timestamp])
计算两个时间之间的整数分钟数(忽略秒和毫秒)
DATE
值 (
value1
-
value2
)。
MINUTES_BETWEEN([impression_timestamp], [conversion_timestamp])
计算两个时间点之间的整数秒数(忽略毫秒数)。
DATE
值 (
value1
-
value2
)。
SECONDS_BETWEEN([impression_timestamp], [conversion_timestamp])
返回当前系统日期和时间。
DATE
值(无时间信息)。它可以用于其他涉及以下内容的表达式中:
DATE
类型的字段,例如
YEAR_DIFF
。请注意,“”的值
TODAY
仅在发布数据集时评估“”(不会因每次查询而重新评估)。
YEAR_DIFF(TODAY(), [birthdate])
截断 a
DATE
将 value 映射到指定的格式。
TRUNC(TO_DATE([order_date], "MM/dd/yyyy HH:mm:ss"), "day")
计算两者之间的年数(含分数)
DATE
值 (
value1
-
value2
)。
YEAR_DIFF(TODAY(), [birthdate])

信息功能

函数
描述
示例
退货
0
如果返回值为
NULL
1
如果返回值为
NOT NULL
。这对于您要排除 NULL 值的其他计算非常有用(例如计算平均值时)。
IS_VALID([sale_amount])

实例函数

函数
描述
示例
根据提供的一个或多个“多实例”或“实例”字段,构造一个多实例字段。
CREATE_MULTI_INSTANCE([Journal1], [Journal2], [Journal3])
将多实例或实例字段与多实例字段、实例字段或实例值列表进行比较,如果第一个参数中至少存在一个实例值,则返回“真”,否则返回“假”。 。
INSTANCE_CONTAINS_ANY([Worktags], [Cost Center 1], [Cost Center 2])
返回多实例或实例字段中的实例值总数。当字段为空时,此函数返回 0。
INSTANCE_COUNT([Journal Lines])
将多实例或实例字段与多实例字段、实例字段或实例值列表进行比较,并检查第一个参数是否与其他参数中提供的实例值完全匹配。
INSTANCE_EQUALS([Worktags], [Cost Center 1], [Cost Center 2])
将多实例字段与多实例字段、实例字段或实例值列表进行比较,如果每个实例值都存在于第一个参数中,则返回“真”,如果至少有一个实例值不存在,则返回“假”。
INSTANCE_IS_SUPERSET_OF([Worktags], [Cost Center 1], [Cost Center 2])

逻辑函数

函数
描述
示例
根据一个或多个输入条件评估数据集中的每一行,并在满足输入条件时输出指定的结果。
CASE WHEN [gender] = "M" THEN "Male" WHEN [gender] = "F" THEN "Female" ELSE "Unknown" END
返回第一个有效值 (
NOT NULL
value) 来自以逗号分隔的表达式列表。
COALESCE([hourly_wage] * 40 * 52, [salary])

数学函数

函数
描述
示例
DIV
除以 2
LONG
个值,并返回一个类型为“”的商值
LONG
(结果会截断到小数点后保留 0 位)。
DIV(TO_LONG([file_size]), 1024)
EXP
计算数学常数
e
某个数值的幂(指数)值,并返回类型为
DOUBLE
EXP([Value])
返回小于或等于输入参数的最大整数。
FLOOR(32.6789) returns
32.0
将数据值平均分区到指定数量的存储桶中。它会创建输入值的哈希值,并为该值指定一个存储桶编号。值相等将始终哈希到相同的存储桶编号。
HASH([username],20)
LN
返回数字的自然对数。自然对数是以底数表示的对数。
e
,其中
e
(Euler's number) 是一个数学常数,约等于 2.718281828。数字的自然对数
x
是常数的幂
e
必须提高才能等于
x
LN(2.718281828) returns
1
MOD
除以 2
LONG
INTEGER
值,并返回类型为“”的余数值
LONG
INTEGER
(结果会截断到小数点后保留 0 位)。
MOD(TO_LONG([file_size]), 1024)
POW
对数值进行 a 运算(指数),并返回“”类型的值
DOUBLE
100 * POW([end_value]/[start_value], 0.2) - 1
将数值舍入到指定的小数位数,并返回“”类型的值
DOUBLE
ROUND(32.4678954,2) returns
32.47

文本函数

函数
描述
示例
比较两个值
TEXT
表示 CIDR 掩码和 IP 地址的参数,然后返回
1
如果 IP 地址在指定的子网掩码范围内,或者
0
(如果未自动选中)。
CIDR_MATCH("60.145.56.0/24", "60.145.56.246") returns
1
返回一个
TEXT
将多个计算的结果串连(合并在一起)
TEXT
表达式
CONCAT([month], "/", [day], "/", [year])
从以分号分隔的 Cookie 键/值对列表中,提取给定 Cookie 标识符的值。此函数可用于从组合的 Web 访问日志 Cookie 列中提取特定的 Cookie 值。
EXTRACT_COOKIE("SSID=ABC; vID=44", "vID") returns
44
从包含分隔键/值对的字符串中提取给定键的值。
EXTRACT_VALUE("firstname;daria|lastname;hutch", "lastname", ";", "|") returns
hutch
如果数据来自基础数据集,则返回源文件系统中的原始文件名。 如果您是 Workday 新用户,则无权创建或编辑基础数据集。
TO_DATE(SUBSTRING(FILE_NAME(), 0, 8), "yyyyMMdd")
转换十六进制编码的
TEXT
value 转换为 IP 地址的文本表示形式。
HEX_TO_IP(AB20FE01) returns
171.32.254.1
返回一个整数,表明作为子字符串出现位置的第一个字符的字符在字符串内的位置。该
INSTR
函数类似于 Excel 中的 FIND 函数,不同之处在于首字母的位置为 0,并且参数的顺序相反。
INSTR([url], "http://", -1, 1)
返回 Java Unicode 字符转义序列的未转义版本,格式为
TEXT
CASE WHEN [currency] == JAVA_STRING("\u00a5") THEN "yes" ELSE "no" END
返回一个
TEXT
将多个计算的结果串连(合并在一起)
TEXT
个值,每个非空值之间用分隔符分隔。
JOIN_STRINGS("/", [month], [day], [year])
提取
NUMERIC
JSON 对象某个字段中的值。
JSON_DECIMAL([top_scores], "test_scores.2")
提取
DOUBLE
JSON 对象某个字段中的值。
JSON_DOUBLE([top_scores], "test_scores.2")
提取
INTEGER
JSON 对象某个字段中的值。
JSON_INTEGER([top_scores], "test_scores.2")
提取
LONG
JSON 对象某个字段中的值。
JSON_LONG([top_scores], "test_scores.2")
提取
TEXT
JSON 对象某个字段中的值。
JSON_STRING([misc], "hobbies.0")
返回 a 中的字符数。
TEXT
LENGTH([name])
返回多个输出值,这些输出值打包成单个键/值对字符串,并用默认键分隔符和键值对分隔符分隔。返回的字符串采用的格式可供
EXTRACT_VALUE
函数。
PACK_VALUES
使用与 相同的键和货币对分隔符值。
EXTRACT_VALUE
使用(Unicode 转义序列
u0003
u0002
分别)。
PACK_VALUES("ID", [custid], "Age", [age])
对某个执行整个字符串匹配
TEXT
将 value 与正则表达式匹配,并返回与正则表达式的第一个捕获组相匹配的字符串部分。
REGEX([email], "^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")
评估
TEXT
根据正则表达式对 value 进行排序,以确定是否存在匹配项,并将匹配的字符串替换为指定的替换值。
REGEX_REPLACE([phone_number], "([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})", "\($1\) $2-$3")
按相反顺序返回字符串值中的字符。
REVERSE("123 Main Street")
返回 a 的指定字符。
TEXT
基于给定的开始位置和可选的结束位置的值。
SUBSTRING([name], 0, 1)
转换中的所有字母字符。
TEXT
将该值转换为小写。
TO_LOWER("123 Main Street") returns
123 main street
返回一个
TEXT
值,每个单词的第一个字母大写。
TO_PROPER("123 Alameda de las Pulgas, San Mateo CA")
转换中的所有字母字符。
TEXT
将值转换为大写。
TO_UPPER("123 Main Street")
移除数组中的前导空格和尾部空格。
TEXT
TRIM([area_code])
获取 XML 文件,并返回与给定的 XPath 表达式匹配的第一个字符串。
XPATH_STRING([address], "//address[@type='home']/zipcode")

URL 函数

函数
描述
示例
返回 URL 字符串的机构部分。URL 的机构部分包含有关如何查找和连接服务器的信息。
URL_AUTHORITY("http://user:password@mycompany.com:8012/mypage.html")
返回 URL 字符串的片段部分。
URL_FRAGMENT("http://workday.com/news.php?topic=press#Workday%20News")
返回 URL 字符串的主机、域或 IP 地址部分。
URL_HOST("http://user:password@mycompany.com:8012/mypage.html")
返回 URL 字符串的路径部分。
URL_PATH("http://workday.com/company/contact.html")
返回 URL 字符串的端口部分。
URL_PORT("http://user:password@mycompany.com:8012/mypage.html")
返回 URL 字符串的协议(或 URI 方案名称)部分。
URL_PROTOCOL("http://www.workday.com")
返回 URL 字符串的查询部分。
URL_QUERY("http://workday.com/news.php?topic=press&timeframe=today")
解码
TEXT
已使用编码的值
application/x-www-form-urlencoded
媒体文件类型
URLDECODE("N%2FA%20or%20%22not%20applicable%22")

窗口函数

函数
描述
示例
AVG
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中所有有效数值的平均值。此公式对组中的所有值求和,然后除以有效(非空)行数。您可以使用
AVG
来计算移动平均值。
AVG([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS UNBOUNDED PRECEDING)
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中的有效行总数(非空)。您可以使用
COUNT
与其他函数结合使用,来计算累计聚合。
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS UNBOUNDED PRECEDING)
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中第一行的值。
LAG
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中当前行之前(上方)指定偏移量处的字段值。
[Salary] - (LAG([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] ASC) )
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中最后一行的值。
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中当前行之后(下方)指定偏移量处的字段值。
[Salary] - (LEAD([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] DESC) )
MAX
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中的最大值。
MAX([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
MIN
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中的最小值。
MIN([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
是一个窗口聚合函数,用于为组中的每一行指定排名数字。如果多行具有相同的排名值(存在并列关系),则 Workday 会为并列行指定相同的排名值,并跳过后续的排名位置。
RANK() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并为组中的每一行指定一个唯一的连续编号。对于每组中的第一行,从 1 开始。
ROW_NUMBER
始终为组中的每一行指定唯一的值。您可能需要使用
ROW_NUMBER
为数据集中的每一行创建唯一编号。
ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
SUM
是一个窗口聚合函数,用于对行进行分组,按字段对行进行排序,并返回组中所有值的总和。您可以使用
SUM
以计算累计总计。
SUM([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)

算术运算符

运算符
含义
示例
+
加法
[amount] + 10
将“[amount]”字段的值加 10。
-
扣减
[amount] - 10
将“[amount]”字段的值减去 10。
*
乘法
[amount] * 100
将“[amount]”字段的值乘以 100。
/
除法
[bytes] / 1024
将 [字节] 字段的值除以 1024,然后返回商。

比较运算符

运算符
含义
示例
=
==
等于
[order_date] = "12/22/2016"
>
大于
[age] > 18
!>
不大于(等于
<
[age] !> 8
<
小于
[age] < 30
!<
不小于(等于
>=
[age] !< 12
>=
大于或等于
[age] >= 20
<=
小于或等于
[age] <= 29
<>
!=
^=
不等于
[age] <> 30
BETWEEN
min_value
AND
max_value
测试日期或数值是否在
最小值
最大值
(含两者)内。
[year] BETWEEN 2014 AND 2016
IN(
list
)
测试值是否在集合内。
[product_type] IN("tablet","phone","laptop")
LIKE("
pattern
")
简单的包含不区分大小写的字符模式匹配。该
*
个字符可匹配任意数量的字符。该
?
个字符与 1 个字符完全匹配。
[last_name] LIKE("?utch*")
匹配
K医师
哈奇
,但不匹配
Kruther
crunch。
[company_name] LIKE("workday")
匹配
Workday
Workday
IS NULL
检查字段值或表达式是否为 null(空)。
[ship_date] IS NULL
Ship_date
字段为空时,评估结果为
true。

逻辑运算符

运算符
含义
示例
AND
测试 2 个条件是否为真。
OR
测试 2 个条件中的任意一个是否成立。
NOT
反转其他运算符的值。
  • year
    NOT
    BETWEEN 2013 AND 2016
  • first_name
    NOT
    LIKE("Jo?n*")
    排除
    John
    jonny
    ,但不排除
    Jon
    Joann。
  • Weekday
    NOT
    IN("Saturday", "Sunday")
  • purchase_date IS
    NOT
    NULL
    Purchase_date
    不为空时,评估结果为
    true。