跳至主要內容
Workday User Guide
上次更新時間 :2024-06-28
Prism 運算式快速參考

Prism 運算式快速參考

轉換函數

函數
說明
範例
從 建構貨幣欄位
NUMERIC
值和
TEXT
INSTANCE
包含有效貨幣代碼的值。當貨幣代碼無效時,此函數會傳回 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])
傳回 的指定部分
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])
截斷
DATE
將值轉換為指定的格式。
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])
將多實例或實例欄位與多實例欄位、實例欄位或實例值清單進行比較,如果第一個引數中至少有一個實例值存在,則傳回 True,如果都不存在則傳回 False。 。
INSTANCE_CONTAINS_ANY([Worktags], [Cost Center 1], [Cost Center 2])
傳回多實例或實例欄位中的實例值總數。當欄位為空白時,此函數會傳回 0。
INSTANCE_COUNT([Journal Lines])
將多實例或實例欄位與多實例欄位、實例欄位或實例值清單進行比較,並檢查第一個引數是否與其他引數中提供的實例值完全相符。
INSTANCE_EQUALS([Worktags], [Cost Center 1], [Cost Center 2])
將多實例欄位與多實例欄位、實例欄位或實例值清單進行比較,如果第一個引數中存在每個實例值,則傳回 True,如果不存在至少一個實例值,則傳回 False。
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
(歐拉數) 是大約等於 2.718281828 的數學常數。數字的自然對數
x
是常數的乘冪
e
必須提高才能等於
x
LN(2.718281828) returns
1
除數 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 ID 的值。此函數可用於從組合的網頁存取記錄 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
的值轉換為 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")
傳回 中的字元數
TEXT
值。
LENGTH([name])
傳回多個輸出值,並打包成單一索引鍵/值組合字串,並以預設索引鍵和值組合分隔符號。傳回的字串採用的格式可供
EXTRACT_VALUE
函數
PACK_VALUES
使用與以下項目相同的索引鍵和配對分隔符號值︰
EXTRACT_VALUE
使用 (Unicode 逸出序列
u0003
u0002
,分別為 )。
PACK_VALUES("ID", [custid], "Age", [age])
比對整個字串
TEXT
與規則運算式搭配使用,並傳回與規則運算式的第一個擷取群組相符的字串部分。
REGEX([email], "^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")
評估
TEXT
依據規則運算式來判斷是否存在相符的值,並以指定的取代值取代相符的字串。
REGEX_REPLACE([phone_number], "([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})", "\($1\) $2-$3")
以相反的順序傳回字串值的字元。
REVERSE("123 Main Street")
傳回 的指定字元
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
是一個視窗匯總函數,用於將列分組、依欄位對列進行排序,並傳回群組中所有有效數值的平均值。它將群組中的所有值加總,然後除以有效 (NOT NULL) 的列數。您可以使用
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
,為資料集中的每一列建立唯一的 ID。
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
將 [bytes] 欄位的值除以 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*")
符合以下條件
︰Kutcher
hetch
,但不符合
Kretcher
crutch
[company_name] LIKE("workday")
符合
Workday
Workday
IS NULL
檢查欄位值或運算式是否為空值。
[ship_date] IS NULL
ship_date
欄位為空白時,評估值為
True

邏輯運算子

運算子
意義
範例
AND
測試 2 個條件是否成立。
OR
測試是否有兩個條件成立。
NOT
反轉其他運算子的值。
  • year
    NOT
    BETWEEN 2013 AND 2016
  • first_name
    NOT
    LIKE("Jo?n*")
    排除
    John
    jonny
    但不排除
    Jan
    Joann
  • Weekday
    NOT
    IN("Saturday", "Sunday")
  • purchase_date IS
    NOT
    NULL
    Purchase_date
    欄位非空白時,評估值為
    True