此頁面提供 AI/BI 儀表板中自訂計算的所有支援函式的完整參考。 如需如何使用自訂計算的相關資訊,請參閱 什麼是自訂計算?。
聚合函數
所有計算量值都必須匯總。 支援下列匯總作業:
備註
在 DISTINCT 彙總函數中使用關鍵字,在彙總中只包含唯一值。 此外, FILTER(WHERE condition) 子句可以附加至任何彙總函數,以限制計算中包含的值。
| 功能 | Description |
|---|---|
| any(expr) | 如果群組中true至少有一個值是expr,則傳回true。 |
| any_value(expr) | 傳回某個 expr 值,適用於一組資料列。 |
| approx_count_distinct(expr[, relativeSD]) | 傳回 中 expr不同值的估計數目。 |
| approx_percentile([全部 | DISTINCT] expr,percentile,準確度) | 傳回指定百分位數的近似百分位數值 expr 。 |
| 平均(expr) | 返回計算得出的欄位或表達式中的平均值。 |
| bool_or(expr) | 如果至少true有一個值是 expr,則傳回true。 |
| corr(expr1, expr2) | 傳回 和 expr1之間的 expr2 Pearson 相關係數。 |
| count(*) | 傳回群組中的行數。 |
| COUNT(DISTINCT expr) | 返回群組中不重複資料列的數目。 |
| count_if(expr) | 傳回滿足指定條件的數據列計數。 |
| first(expr [, ignoreNull]) | 傳回群組的第一個 值 expr 。 |
| first_value(expr [, ignoreNull]) | 傳回群組的第一個 值 expr 。 |
| last(expr [,忽略Null]) | 傳回群組的最後一個值 expr 。 |
| last_value(expr [, ignoreNull]) | 傳回群組的最後一個值 expr 。 |
| listagg(expr [, 定界符]) | 傳回群組中所有非空值的連接結果。 |
| max(expr) | 傳回數據行或表示式中的最大值。 |
| max_by(expr1、expr2) | 返回與最大expr1值相關聯的expr2值。 |
| 平均值(expr) | 返回計算得出的欄位或表達式中的平均值。 |
| 中位數(expr) | 傳回一組值的中位數。 |
| min(expr) | 傳回數據行或表示式中的最小值。 |
| min_by(expr1、expr2) | 傳回與expr1最小值相關聯的expr2數值。 |
| 模式(expr [, 確定性 ]) | 傳回 expr 的最常見值。 |
| percentile(expr, 百分比 [, 頻率]) | 傳回群組中指定百分位數的 expr 確切百分位數值。 |
| percentile_approx(expr, 百分比 [, 準確度]) | 傳回指定百分位數的近似百分位數值 expr 。 |
| regr_slope(y, x) | 傳回群組中非空值配對的線性迴歸線斜率。 |
| 某(expr) | 如果群組中true至少有一個值是expr,則傳回true。 |
| 標準(expr) | 傳回一組值的標準偏差。 |
| 標準開發(expr) | 傳回一組值的標準偏差。 |
| stddev_pop(expr) | 傳回一組值的母體標準差。 |
| stddev_samp(expr) | 傳回一組值的範例標準差。 |
| string_agg(expr [, delimiter]) | 傳回群組中非空值字串的串連。 |
| sum(expr) | 傳回數據行或表示式中的值總數。 |
| 變異數(expr) | 傳回一組值的變異數。 |
算術運算
您可以結合表示式與下列算術運算:
| 行動 | Description |
|---|---|
| EXPR1 % EXPR2 | 傳回除以 expr1 的 expr2餘數。 |
| 乘數 * 乘數 | 傳回兩個表達式的乘積。 |
| expr1 + expr2 | 傳回 expr1 和 expr2 的總和。 |
| + expr | 傳回表達式的值。 |
| EXPR1 - EXPR2 | 從 expr2減去 expr1 時,傳回差異。 |
| - expr | 傳回表達式的否定值。 |
| 股息 / 除數 | 傳回被除數除以除數的結果。 |
| 股息除數 | 傳回 dividend 除以 divisor 的整數部分。 |
| ABS(expr) | 傳回數值運算式的絕對值。 |
| ACOS(expr) | 傳回 的 expr反餘弦 (弧餘弦)。 |
| ASIN(expr) | 傳回 的 expr逆正弦 (弧正弦)。 |
| bround(expr [, d]) | 採用HALF_EVEN捨入模式,將expr捨入至d小數位數。 |
| CEIL(EXPR) 或上限 (EXPR) | 傳回大於或等於expr的最小整數。 |
| cos(expr) | 傳回 expr 的餘弦值。 |
| exp(expr) | 傳回 e 的 expr 次方。 |
| 樓層(expr) | 傳回不大於 expr的最大整數。 |
| ln(expr) | 傳回運算式的自然對數。 |
| log(基礎,expr) | 傳回 的exprbase對數,並指定 。 |
| 日誌10(expr) | 傳回運算式的以 10 為基數的對數。 |
| mod(expr1, expr2) | 傳回除以 expr1 的 expr2餘數。 |
| nullifzero(expr) | 如果為 0,則傳回NULL,否則傳回 expr。expr |
| pi() | 傳回 pi 的值。 |
| pmod(expr1、expr2) | 返回 expr1 除以 expr2 的正餘數值。 |
| POW(expr1, expr2) 或 power(expr1, expr2) | 傳回expr1的expr2次方的結果。 |
| radians(expr) | 將度數轉換為弧度。 |
| 蘭德([種子]) | 傳回隨機值,其均勻分佈範圍為 0 (含) 到 1 (不含)。 |
| 圓形(expr [, d]) | 使用四捨五入模式傳回 expr 四捨五入到 d 小數位位HALF_UP。 |
| 符號(expr) | 傳回數值運算式的符號。 |
| sin(expr) | 傳回 expr 的正弦值。 |
| sqrt(expr) | 傳回 expr 的平方根。 |
| try_add(expr1, expr2) | 將兩個值相加。 如果發生錯誤,則會傳回 NULL。 |
| try_divide(除數,除數) | 將被除數除以除數。 如果發生錯誤,則會傳回 NULL。 |
| try_multiply(乘數、乘數) | 將兩個數位相乘。 如果發生錯誤,則會傳回 NULL。 |
| try_subtract(expr1, expr2) | 從 expr2減去 expr1。 如果發生錯誤,則會傳回 NULL。 |
| zeroifnull(expr) | 如果expr是NULL,則傳回 0,否則傳回expr。 |
布林函數和運算子
自訂計算支援基本比較和布林運算子。 支援下列運算子和函數:
| 行動 | Description |
|---|---|
| expr1 != expr2 | 如果true不等於expr1,則傳回expr2。 |
| !expr | 不合邏輯。 |
| expr1 和 expr2 | 傳回expr1和expr2的位元位AND值。 |
| expr1 &; expr2 | 如果 true 和 expr1 都是 expr2,則傳回 true。 |
| expr1 <=> expr2 | 傳回與非空值運算元的相等運算子相同的結果,但如果兩者都是 true,則傳回 null;如果其中一個是 false,則傳回 null。 |
| 表達式1 <> 表達式2 | 如果true不等於expr1,則傳回expr2。 |
| 表達式1 < 表達式2 | 如果true小於 expr1則傳回expr2。 |
| expr1 <= expr2 | 如果true小於或等於expr1,則傳回expr2。 |
| expr1 = expr2 | 當 true 等於 expr1 時,返回 expr2。 |
| EXPR1 == EXPr2 | 當 true 等於 expr1 時,返回 expr2。 |
| 表達式1 > 表達式2 | 如果true大於 expr1則傳回expr2。 |
| expr1 >= expr2 | 如果true大於或等於expr1,則傳回expr2。 |
| 運算式1 ^ 運算式2 | 傳回 |
| expr1 |expr2 | 傳回 expr1 和 expr2 的位元運算 OR。 |
| expr1 ||expr2 | 如果true或expr1中至少有一個是expr2,則傳回true。 |
| ~expr | 傳回 expr 的按位 NOT。 |
| expr1 和 expr2 | 如果 true 和 expr1 都是 expr2,則傳回 true。 |
| 下、上之間的expr | 測試是否 expr 落在指定範圍內(特殊語法)。 |
| str ilike 模式 | 如果true相符str(不區分大小寫),則傳回pattern。 也可以用作 ilike(str, pattern [, escapeChar])。 |
| expr in (value1, value2, ...) | 測試是否 expr 符合清單中的任何值 (特殊語法)。 |
| 伊斯南(expr) | 如果是 NaN (不是數字) ,則true傳回。expr |
| isnotnull(expr) | 如果 true 不是 expr,則傳回 NULL。 |
| isnull(expr) | 當true是expr時,傳回NULL。 |
| str like 模式 | 如果符合 true,則str傳回pattern。 也可以用作 like(str, pattern [, escapeChar])。 |
| 不是 expr | 邏輯非(前置運算子)。 也可以用作 not(expr)。 |
| expr1 或 expr2 | 如果true或expr1中至少有一個是expr2,則傳回true。 |
| str regexp regexp | 如果符合正規表示式true,則str傳回regexp。 |
| regexp_like(str, regexp) | 如果符合正規表示式true,則str傳回regexp。 |
| str rlike 正則表達式 | 如果符合正規表示式true,則str傳回regexp。 |
轉換函式
使用下列函式將值轉換成指定的類型:
| 功能 | Description |
|---|---|
| expr :: 類型 | 將值 expr 轉換成目標資料類型 type。 |
| bigint(expr) | 將值 expr 轉換成 BIGINT。 |
| boolean(expr) | 將值 expr 轉換成 BOOLEAN。 |
| cast(expr AS 類型) | 將值 expr 轉換成目標資料類型 type。 |
| 日期(expr) | 將值 expr 轉換成 DATE。 |
| 十進制(expr [, p [, s]]) | 將值 expr 以DECIMAL 的精度和p 的比例轉換到 s 。 |
| double(expr) | 將值 expr 轉換成 DOUBLE。 |
| float(expr) | 將值 expr 轉換成 FLOAT。 |
| 整數(expr) | 將值 expr 轉換成 INT。 |
| 字串(expr) | 將值 expr 轉換成 STRING。 |
| 時間戳記(expr) | 將值 expr 轉換成 TIMESTAMP。 |
| to_date(expr [, fmt]) | 將 expr 與 fmt 轉換為日期。 |
| to_timestamp(expr [, fmt]) | 使用expr將fmt轉換為時間戳記。 |
| try_cast(expr AS 類型) | 安全地將值 expr轉換成目標資料類型。type |
| try_to_timestamp(expr [, fmt]) | 安全地將 expr 與 fmt 解析為時間戳記。 |
日期、時間戳記和間隔函數
使用下列函式來處理日期、時間戳和間隔:
| 功能 | Description |
|---|---|
| add_months(start_date、num_months) | 傳回 之後的num_monthsstart_date日期。 |
| curdate() | 傳回目前日期。 |
| current_date() | 傳回目前日期。 |
| current_timestamp() | 傳回目前的時間戳記。 |
| current_timezone() | 傳回當前會話的本地時區。 |
| date_add(start_date, num_days) | 傳回 之後的num_daysstart_date日期。 |
| date_diff(endDate、startDate) | 傳回從 startDate 到 endDate 的天數。 |
| date_format(expr, fmt) | 以 格式 fmt將時間戳記轉換為字串。 |
| date_part(欄位、來源) | 從日期或時間戳擷取特定部分,例如年、月或日。 |
| date_sub(start_date、num_days) | 傳回 之前的num_daysstart_date日期。 |
| date_trunc(FMT,來源) | 將日期或時間戳截斷至指定單位,例如年份或月份。 |
| dateadd(單位,值,expr) | 將指定的時間間隔新增至日期或時間戳記。 |
| datediff(結束日期,開始日期) | 傳回從 startDate 到 endDate 的天數。 |
| day(expr) | 傳回日期或時間戳記中的月份日期。 |
| 日期名稱(expr) | 從日期或時間戳記傳回星期幾的名稱。 |
| dayofmonth(expr) | 傳回日期或時間戳記中的月份日期。 |
| 星期幾(expr) | 從日期或時間戳記傳回星期幾 (1 = 星期日,7 = 星期六)。 |
| 年日(expr) | 傳回日期或時間戳記中的一年中的天數。 |
| extract(欄位 自 source) | 擷取日期或時間戳記的一部分。 |
| from_unixtime(unix_time [, fmt]) | 將 Unix 紀元的秒數轉換為時間戳記。 |
| from_utc_timestamp(時間戳記、時區) | 將指定的時間戳記解譯為 UTC,並轉換為指定的時區。 |
| getdate() | 傳回目前的時間戳記。 |
| 小時(expr) | 返回時間戳記的時段元件。 |
| last_day(expr) | 傳回日期或時間戳記所屬月份的最後一天。 |
| make_date(年、月、日) | 從年、月和日欄位建立日期。 |
| make_timestamp(年、月、日、小時、分鐘、秒 [, 時區]) | 從年、月、日、小時、分鐘、秒和選擇性的時區欄位建立時間戳記。 |
| 分鐘(expr) | 傳回時間戳記的分鐘元件。 |
| 月份(expr) | 返回日期或時間戳記的月份分量。 |
| months_between(時間戳記1,時間戳記2 [,四捨五入]) | 傳回 和 之間的timestamp1timestamp2月數。 |
| next_day(start_date、day_of_week) | 傳回第一個日期,該日期晚於 start_date 並命名為 day_of_week。 |
| 現在() | 傳回目前的時間戳記。 |
| 季度(expr) | 返回日期或時間戳記(1 到 4)的年份季度。 |
| 秒數(expr) | 傳回時間戳記的第二個元件。 |
| timediff(結束日期,開始日期) | 傳回以單位測量的兩個時間戳之間的差異。 |
| timestamp_micros(微秒) | 根據自 Unix 紀元以來的微秒數建立時間戳記。 |
| timestamp_millis(以毫秒為單位的時間戳) | 根據自 Unix 紀元以來的毫秒數建立時間戳記。 |
| timestamp_seconds(秒) | 根據自 Unix 紀元以來的秒數建立時間戳記。 |
| timestampadd(單位、值、時間戳) | 將指定的時間間隔新增至時間戳記。 |
| timestampdiff(單位、開始、結束) | 傳回以單位測量的兩個時間戳之間的差異。 |
| to_date(expr [, fmt]) | 將 expr 與 fmt 轉換為日期。 |
| to_timestamp(expr [, fmt]) | 使用expr將fmt轉換為時間戳記。 |
| to_unix_timestamp(expr [,fmt]) | 傳回指定時間的 Unix 時間戳記。 |
| to_utc_timestamp(時間戳記、時區) | 解譯指定時區中的指定時間戳記,並轉換為 UTC。 |
| 截斷(expr, fmt) | 傳回 expr ,並將一天的時間部分截斷為格式模型 fmt所指定的單位。 |
| unix_micros(時間戳記) | 傳回自 Unix 紀元以來的微秒數。 |
| unix_millis(時間戳記) | 傳回自 Unix 紀元以來的毫秒數。 |
| unix_seconds(時間戳記) | 傳回自 Unix 紀元以來的秒數。 |
| unix_timestamp([expr [, fmt]]) | 傳回指定時間的 Unix 時間戳記。 |
| 平日(expr) | 從日期或時間戳記傳回星期幾 (0 = 星期一,6 = 星期日)。 |
| 年週數(expr) | 傳回日期或時間戳記中的一年中的一週。 |
| 年份(expr) | 傳回日期或時間戳記的年份元件。 |
字串函數
使用下列函式來轉換字串。 若要轉換日期時間字串,請參閱 轉換函數。
| 功能 | Description |
|---|---|
| 基數 64(expr) | 將引數轉換為 base64 字串。 |
| char(expr) | 傳回所提供 UTF-16 碼位的字元。 |
| charindex(substr, str [, pos]) | 傳回substr中str在pos之後第一次出現的位置。 |
| concat(expr1, expr2 [, ...]) | 傳回參數的串接結果。 |
| concat_ws(sep [, expr1 [, ...]]) | 傳回值為以 sep分隔之字串的串連。 |
| 包含(左、右) | 如果在 true 中找到right,則傳回 left。 |
| convert_timezone(sourceTz、targetTz、sourceTs) | 將時間戳記sourceTs從時區sourceTz轉換為targetTz時區。 |
| 解碼(expr, charSet) | 使用字元集編碼expr將二進位檔charSet轉換為字串。 |
| endswith(左、右) | 如果true以left結尾,則傳回right。 |
| find_in_set(str, str_array) | 傳回逗號分隔清單中指定字串的索引 (從 1 開始)。 |
| format_number(expr,刻度) | 將 expr 格式化為如 #,###,###.## 的格式,並四捨五入到 scale 個小數位。 |
| format_string(格式,expr [, ...]) | 從 printf 樣式格式字串傳回格式化字串。 |
| 十六進制(expr) | 將 expr 轉換為十六進位。 |
| 初始上限(str) | 以大寫形式傳回 str 每個單字的第一個字母。 |
| instr(str, substr) | 傳回 substr 中第一次出現str的位置。 |
| lcase(str) | 將 str 的所有字元轉換為小寫後傳回。 |
| left(字串, 長度) | 傳回字串len中最str左邊的字元。 |
| len(expr) | 傳回字串或二進位運算式的長度。 |
| 長度(expr) | 傳回字串或二進位運算式的長度。 |
| 列文施泰因(str1, str2 [, 閾值]) | 傳回兩個給定字串之間的 Levenshtein 距離。 |
| locate(substr, str [, pos]) | 傳回substr中str在pos之後第一次出現的位置。 |
| 轉小寫(str) | 將 str 的所有字元轉換為小寫後傳回。 |
| lpad(str, len [, pad]) | 傳回str以pad左填補至長度len。 |
| ltrim(str [, trimStr]) | 從 str中移除主要角色。 |
| md5(expr) | 傳回 MD5 128 位元總和檢查碼作為十六進位字串。 |
| parse_url(URL, partToExtract [, key]) | 從url擷取部分。 |
| 位置(substr, str [, pos]) | 傳回substr中str在pos之後第一次出現的位置。 |
| printf(格式, expr [, ...]) | 從 printf 樣式格式字串傳回格式化字串。 |
| regexp_count(str, regexp) | 傳回正規表示式 regexp 在 str 中的匹配次數。 |
| regexp_extract(str, regexp [, idx]) | 擷取符合 regexp的群組。 |
| regexp_instr(str, regexp) | 傳回regexp中str的第一個相符項目的位置。 |
| regexp_replace(str、regexp、rep[、position]) | 將該相符項str的所有regexp子字串取代為 rep。 |
| regexp_substr(str, regexp) | 傳回符合 內regexp規則運算式str的子字串。 |
| 重複(STR,N) | 傳回重複 strn 次數的字串。 |
| replace(str, search [, replace]) | 將search 中的所有 replace 替換為 str。 |
| 反向(str) | 以反轉字元的順序傳回 str 。 |
| 右(str, len) | 傳回字串len中最str右邊的字元。 |
| rtrim([trimStr,] str) | 傳回 str 並移除尾端字元。 |
| sha2(expr, 位長) | 傳回 SHA-2 系列雜湊函式。 |
| split_part(str, delimiter, partNum) | 分割 str 並以 delimiter 為分隔符,傳回所需的部分。 |
| startswith(左、右) | 如果true以left開頭,則傳回right。 |
| substr(str, pos [, len]) | 傳回 以長度str開始的poslen子字串。 |
| 子字串(str, pos [, len]) | 傳回 以長度str開始的poslen子字串。 |
| substring_index(str, delim, count) | 傳回count出現delim次之前的子字串。 |
| to_char(expr [, fmt]) | 轉換為 expr 字串。 |
| to_number(expr [,fmt]) | 將字串 expr 轉換為數字。 |
| 翻譯(輸入、來源、目標) | 透過將 中的input字元替換為 中的from對應字元來翻譯to。 |
| 修剪(str [, trimStr]) | 從str中移除前導字元和尾端字元。 |
| ucase(str) | 傳回 str 所有字元變更為大寫。 |
| 上層(str) | 傳回 str 所有字元變更為大寫。 |
| url_encode(str) | 將 str 編碼以用於 URL 查詢參數。 |
其他功能
支援下列功能:
| 功能 | Description |
|---|---|
| 聚合超過 | 計算時間範圍或其他量值的有序集的值。 |
| CASE 表達式 { WHEN OPT1 則 RES1 } [...] [否則 def] END | 如果前 resN 個都等於 optN,則傳回 expr;如果都不符合,則傳回 def。 |
| CASE { 當 cond1 然後 res1 } [...] [ELSE 否則] END | 若resN評估為 true,則傳回condN;若找不到,則傳回def。 |
| coalesce(expr1,expr2[,...]) | 傳回第一個非 Null 引數。 |
| decode(expr, search, result [, search, result]...[,預設]) |
expr比較每個搜尋值並傳回對應的結果。 |
| get_json_object(json_txt,路徑) | 從 json_txt 指定的 path中擷取 JSON 物件。 |
| greatest(expr [, ...]) | 傳回所有參數的最大值。 |
| 哈希(expr1 [,expr2...]) | 傳回引數的雜湊值。 |
| if(條件,true_value,false_value) | 如果true_value是condition,則傳回true,否則傳回false_value。 |
| iff(condition, true_value, false_value) | 如果true_value是condition,則傳回true,否則傳回false_value。 |
| ifnull(expr1、expr2) | 如果 expr2 為 expr1,則傳回 null,否則傳回 expr1。 |
| json_array_length(jsonArray) | 傳回最外層 JSON 陣列中的元素數目。 |
| 最少(expr [, ...]) | 傳回所有參數的最小值。 |
| monotonically_increasing_id() | 傳回單調遞增的 64 位元整數。 |
| nullif(expr1,expr2) |
NULL若expr1等於expr2,則返回expr1,否則返回expr1。 |
| nvl(expr1、expr2) | 如果 expr2 為 expr1,則傳回 NULL,否則傳回 expr1。 |
| NVL2(expr1、expr2、expr3) | 如果expr2不是expr1,則傳回NULL,否則傳回expr3。 |
| schema_of_json(json [, 選項]) | 以 JSON 字串的 DDL 格式傳回結構描述。 |