運算式函式 | 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) 傳回四個位元組的 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) 若不為 NULL,則傳回 X;否則傳回 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) 將來自 time_string 的時間以 HH:MM:SS 格式傳回為文字。 $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 的記錄,從 schema 中目標端點的 table 擷取 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。

雜湊並非加密。可預測的輸入值仍可透過比對其雜湊值來識別。

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們!