函數

您可以在表示式中使用多種類型的函數。

主題:

分析函數

分析函數可讓您使用模型 (例如 trendline 和 cluster) 來瀏覽資料。

函數 範例 描述 語法

TRENDLINE

TRENDLINE(revenue, (calendar_year, calendar_quarter, calendar_month) BY (product), 'LINEAR', 'VALUE')

Oracle 建議您在檢視視覺化時使用新增統計資料特性來套用趨勢線。請參閱調整視覺化特性

適用於線性、多項式或指數模型,會傳回適合的值或模型。numeric_expr 代表趨勢的 Y 值,而 series (時間資料欄) 代表 X 值。

TRENDLINE(numeric_expr, ([series]) BY ([partitionBy]), model_type, result_type)

CLUSTER

CLUSTER((product, company), (billed_quantity, revenue), 'clusterName', 'algorithm=k-means;numClusters=%1;maxIter=%2;useRandomSeed=FALSE;enablePartitioning=TRUE', 5, 10)

使用 K-Means 或階層式分群法根據一或多個輸入表示式,將收集的記錄組分成多組。

CLUSTER((dimension_expr1 , ... dimension_exprN), (expr1, ... exprN), output_column_name, options, [runtime_binded_options])

OUTLIER

OUTLIER((product, company), (billed_quantity, revenue), 'isOutlier', 'algorithm=kmeans')

使用 K-Means、「階層式分群法」或「多變量極端值」偵測演算法,依據一或多個輸入表示式將記錄歸類為極端值。

OUTLIER((dimension_expr1 , ... dimension_exprN), (expr1, ... exprN), output_column_name, options, [runtime_binded_options])

REGR

REGR(revenue, (discount_amount), (product_type, brand), 'fitted', '')

適用於線性模型,會傳回適合的值或模型。此函數可用來適配兩個計量上的線性曲線。

REGR(y_axis_measure_expr, (x_axis_expr), (category_expr1, ..., category_exprN), output_column_name, options, [runtime_binded_options])

轉換函數

轉換函數可以將某個值轉換為另一個值。

函數 範例 描述 語法

CAST

CAST(hiredate AS CHAR(40)) FROM employee

將表示式或空常值的資料類型變更為另一種資料類型。例如,您可以將 customer_name (CHARVARCHAR 資料類型) 或 birthdate (日期時間常值) 轉型。

請使用 CAST 變更為日期資料類型。

請勿使用 TODATE

CAST(expr AS type)

IFNULL

IFNULL(Sales, 0)

測試表示式是否評估為空值,如果是,則將指定值指定給表示式。

IFNULL(expr, value)

INDEXCOL

SELECT INDEXCOL(VALUEOF (NQ_SESSION.GEOGRAPHY_LEVEL), Country, State, City), Revenue FROM Sales

使用外部資訊可傳回適當的資料欄供已登入的使用者查看。

INDEXCOL([integer literal], [expr1] [, [expr2], ?-])

NULLIF

SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID" FROM employees e, job_history j WHERE e.employee_id = j.employee_id ORDER BY last_name, "Old Job ID";

比較兩個表示式。若二者相等,此函數會傳回 NULL。若二者不相等,此函數會傳回第一個表示式。您不能為第一個表示式指定文字 NULL。

NULLIF([expression], [expression])

To_DateTime

SELECT To_DateTime ('2009-03-0301:01:00', 'yyyy-mm-dd hh:mi:ss') FROM sales

DateTime 格式的字串文字轉換為 DateTime 資料類型。

To_DateTime([expression], [literal])

VALUEOF

SalesSubjectArea.Customer.Region = VALUEOF("Region Security"."REGION")

在篩選中參照某個語意模型變數值。

使用 expr 變數作為 VALUEOF 函數的引數。請按名稱來參照靜態語意模型變數。

VALUEOF(expr)

日期擷取函數

這些函數可計算時間戳記值,或將其無條件捨去至最接近的指定期間,例如小時、日、週、月和季。

您可以使用計算的時間戳記聚總使用不同精細度的資料。例如,您可以將 EXTRACTDAY() 函數套用至銷售訂單日期,以計算訂單發生當日午夜的時間戳記,以便依日聚總資料。

函數 範例 描述 語法

擷取日

EXTRACTDAY("Order Date")
  • 2/22/1967 3:02:01 AM 會傳回 2/22/1967 12:00:00 AM
  • 9/2/2022 10:38:21 AM 會傳回 9/2/2022 12:00:00 AM

傳回發生輸入值當日午夜 (12 AM) 的時間戳記。例如,如果輸入時間戳記為 2 月 22 日上午 3:02:01,則此函數會傳回 2 月 22 日上午 12:00:00 的時間戳記。

EXTRACTDAY(expr)

擷取小時

EXTRACTHOUR("Order Date")
  • 2/22/1967 3:02:01 AM 會傳回 2/22/1967 3:00:00 AM
  • 6/17/1999 11:18:30 PM 會傳回 6/17/1999 11:00:00 PM

傳回輸入值的開始小時時間戳記。例如,如果輸入時間戳記為下午 11:18:30,則此函數會傳回下午 11:00:00 的時間戳記。

EXTRACTHOUR (expr)

擷取整點時間

EXTRACTHOUROFDAY("Order Date")
  • 2014/09/24 10:58:00 會傳回 2000/01/01 10:00:00
  • 2014/08/13 11:10:00 會傳回 2000/01/01 11:00:00

傳回輸入值的小時時間戳記,年、月、日、分和秒則使用預設值。

EXTRACTHOUROFDAY(expr)

擷取毫秒

EXTRACTMILLISECOND("Order Date")
  • 1997/01/07 15:32:02.150 會傳回 1997/01/07 15:32:02.150
  • 1997/01/07 18:42:01.265 會傳回 1997/01/07 18:42:01.265
傳回包含輸入值的毫秒值的時間戳記。例如,如果輸入時間戳記為 15:32:02.150,則此函數會傳回 15:32:02.150 的時間戳記。

EXTRACTMILLISECOND(expr)

擷取分鐘

EXTRACTMINUTE("Order Date")
  • 6/17/1999 11:18:00 PM 會傳回 6/17/1999 11:18:00 PM
  • 9/2/2022 10:38:21 AM 會傳回 9/2/2022 10:38:00 AM

傳回發生輸入值的該分鐘開始的時間戳記。例如,如果輸入時間戳記為上午 11:38:21,則此函數會傳回上午 11:38:00 的時間戳記。

EXTRACTMINUTE (expr)

擷取月

EXTRACTMONTH("Order Date")
  • 2/22/1967 3:02:01 AM 會傳回 2/1/1967 12:00:00 AM
  • 6/17/1999 11:18:00 PM 會傳回 6/1/1999 12:00:00 AM

傳回發生輸入值的當月第一天的時間戳記。例如,如果輸入時間戳記為 2 月 22 日,則此函數會傳回 2 月 1 日的時間戳記。

EXTRACTMONTH(expr)

擷取季

EXTRACTQUARTER("Order Date")
  • 2/22/1967 3:02:01 AM 會傳回 1/1/1967 12:00:00 AM,第一個會計季度的第一天。
  • 6/17/1999 11:18:00 PM 會傳回 4/1/1999 12:00:00 AM,第二個會計季度的第一天。

  • 9/2/2022 10:38:21 AM 會傳回 7/1/2022 12:00:00 AM,第三個會計季度的第一天。

    秘訣:使用 QUARTER (expr) 可以從傳回的時間戳記計算序數季度。

傳回發生輸入值的當季第一天的時間戳記。例如,如果輸入時間戳記發生在第三個會計季度,則此函數會傳回 7 月 1 日的時間戳記。

EXTRACTQUARTER(expr)

擷取秒

EXTRACTSECOND("Order Date")
  • 1997/01/07 15:32:02.150 會傳回 1997/01/07 15:32:02
  • 1997/01/07 20:44:18.163 會傳回 1997/01/07 20:44:18

傳回輸入值的時間戳記。例如,如果輸入時間戳記為 15:32:02.150,則此函數會傳回 15:32:02 的時間戳記。

EXTRACTSECOND(expr)

擷取週

EXTRACTWEEK("Order Date")
  • 2014/09/24 10:58:00 會傳回 2014/09/21

  • 2014/08/13 11:10:00 會傳回 2014/08/10

傳回發生輸入值的當週第一天 (星期日) 的日期。例如,如果輸入時間戳記為 9 月 24 日星期三,則此函數會傳回 9 月 21 日星期日的時間戳記。

EXTRACTWEEK(expr)

擷取年

EXTRACTYEAR("Order Date")
  • 1967/02/22 03:02:01 會傳回 1967/01/01 00:00:00
  • 1999/06/17 23:18:00 會傳回 1999/01/01 00:00:00

傳回發生輸入值的當年 1 月 1 日的時間戳記。例如,如果輸入時間戳記發生在 1967 年,則此函數會傳回 1967 年 1 月 1 日的時間戳記。

EXTRACTYEAR (expr)

顯示函數

顯示函數作用於查詢的結果集。

函數 範例 描述 語法

BottomN

BottomN(Sales, 10)

傳回表示式之 n 個最低的值 (從最低到最高)。

BottomN([NumericExpression], [integer])

FILTER

FILTER(Sales USING Product = 'widget')

使用指定的預先聚總篩選運算表示式。

FILTER(measure USING filter_expr)

MAVG

MAVG(Sales, 10)

計算結果集中最後 n 列資料 (含目前資料列) 的移動平均值 (平均數)。

MAVG([NumericExpression], [integer])

MSUM

SELECT Month, Revenue, MSUM(Revenue, 3) as 3_MO_SUM FROM Sales

計算最後 n 列資料 (含目前資料列) 的移動總和。

第一個資料列的總和等於第一個資料列的數值表示式。第二個資料列的總和為前兩列資料的總和,依此類推。當計算到第 n 個資料列時,即為根據前 n 個資料列的資料來計算總和。

MSUM([NumericExpression], [integer])

NTILE

NTILE(Sales, 100)

根據使用者指定的範圍決定值的排名。它會傳回多個整數以表示排列的範圍。此範例顯示的範圍為 1 到 100,最低的銷售 = 1,最高的銷售 = 100。

NTILE([NumericExpresssion], [integer])

PERCENTILE

PERCENTILE(Sales)

計算符合數值表示式引數之每個值的百分比等級。百分等級範圍是從 0 (第 1 個百分位數) 到 1 (第 100 個百分位數),並包含這兩者。

PERCENTILE([NumericExpression])

RANK

RANK(Sales)

計算符合數值表示式引數之每個值的等級。最大的數字會被指定為 1,而後續的每個數字會被指定下一個連續整數 (2、3、4、...)。如果某些值相等,它們就會被指定為相同等級 (例如,1、1、1、4、5、5、7...)。

RANK([NumericExpression])

RCOUNT

SELECT month, profit, RCOUNT(profit) FROM sales WHERE profit > 200

接受一組記錄作為輸入,然後計算截至目前所產生的記錄筆數。

RCOUNT([NumericExpression])

RMAX

SELECT month, profit, RMAX(profit) FROM sales

接受一組記錄作為輸入,然後根據截至目前所產生的記錄顯示最大值。指定的資料類型必須是可以排列的類型。

RMAX([NumericExpression])

RMIN

SELECT month, profit, RMIN(profit) FROM sales

接受一組記錄作為輸入,然後根據截至目前所產生的記錄顯示最小值。指定的資料類型必須是可以排列的類型。

RMIN([NumericExpression])

RSUM

SELECT month, revenue, RSUM(revenue) as RUNNING_SUM FROM sales

根據截至目前為止所產生的記錄計算累積總和。

第一個資料列的總和等於第一個資料列的數值表示式。第二個資料列的總和為前兩列資料的總和,依此類推。

RSUM([NumericExpression])

TOPN

TOPN(Sales, 10)

傳回表示式之 n 個最高的值 (從最高到最低)。

TOPN([NumericExpression], [integer])

評估函數

評估函數為資料庫函數,可用來傳送表示式以取得進階運算。

內嵌的資料庫函數可能需要一或多個資料欄。函數中的 %1 ... %N 會參照這些資料欄。實際的資料欄必須列於函數之後。

函數 範例 描述 語法

EVALUATE

SELECT EVALUATE('instr(%1, %2)', address, 'Foster City') FROM employees

以選擇性參照資料欄為參數,將指定的資料庫函數傳送至資料庫以進行評估。

EVALUATE([string expression], [comma separated expressions])

EVALUATE_AGGR

EVALUATE_AGGR('REGR_SLOPE(%1, %2)', sales.quantity, market.marketkey)

以選擇性參照資料欄為參數,將指定的資料庫函數傳送至資料庫以進行評估。此函數是用於含 GROUP BY 子句的聚總函數。

EVALUATE_AGGR('db_agg_function(%1...%N)' [AS datatype] [, column1, columnN])

算術函數

本小節中描述的算術函數可執行算術運算。

函數 範例 描述 語法

ABS

ABS(Profit)

可計算數值表示式的絕對值。

expr 是任何評估為數值的表示式。

ABS(expr)

ACOS

ACOS(1)

可計算數值表示式的反餘弦。

expr 是任何評估為數值的表示式。

ACOS(expr)

ASIN

ASIN(1)

可計算數值表示式的反正弦。

expr 是任何評估為數值的表示式。

ASIN(expr)

ATAN

ATAN(1)

可計算數值表示式的反正切。

expr 是任何評估為數值的表示式。

ATAN(expr)

ATAN2

ATAN2(1, 2)

可計算 y /x 的反正切,其中 y 是第一個數值表示式,而 x 是第二個數值表示式。

ATAN2(expr1, expr2)

CEILING

CEILING(Profit)

可將非整數數值表示式進位至次高整數。如果數值表示式評估為一個整數,CEILING 函數會傳回該整數。

CEILING(expr)

COS

COS(1)

可計算數值表示式的餘弦。

expr 是任何評估為數值的表示式。

COS(expr)

COT

COT(1)

可計算數值表示式的餘切。

expr 是任何評估為數值的表示式。

COT(expr)

DEGREES

DEGREES(1)

可將表示式從弧度 (radian) 轉換為度 (degree)。

expr 是任何評估為數值的表示式。

DEGREES(expr)

EXP

EXP(4)

可將值傳送至指定的次方。可計算 e 的 n 次方,其中 e 是自然對數的底數。

EXP(expr)

ExtractBit

Int ExtractBit(1, 5)

可擷取整數中特定位置的一個位元。它會傳回對應該位元位置的整數 0 或 1。

ExtractBit([Source Number], [Digits])

FLOOR

FLOOR(Profit)

可將非整數數值表示式捨去至次低整數。如果數值表示式評估為一個整數,FLOOR 函數會傳回該整數。

FLOOR(expr)

LOG

LOG(1)

可計算表示式的自然對數 (Natural Logarithm)。

expr 是任何評估為數值的表示式。

LOG(expr)

LOG10

LOG10(1)

可計算表示式以 10 為基底的對數。

expr 是任何評估為數值的表示式。

LOG10(expr)

MOD

MOD(10, 3)

可將第一個數值表示式除以第二個數值表示式,並傳回商數 (quotient) 的餘數部分。

MOD(expr1, expr2)

PI

PI()

可傳回 pi 的常數值。

PI()

POWER

POWER(Profit, 2)

接受第一個數值表示式,並提升至第二個數值表示式中所指定的次方。

POWER(expr1, expr2)

RADIANS

RADIANS(30)

可將表示式從度 (degree) 轉換為弧度 (radian)。

expr 是任何評估為數值的表示式。

RADIANS(expr)

RAND

RAND()

可傳回 0 到 1 之間的虛擬亂數。

RAND()

RANDFromSeed

RAND(2)

可傳回以原始內建值為基礎的虛擬亂數。針對指定的原始內建值會產生同一組亂數。

RAND(expr)

ROUND

ROUND(2.166000, 2)

可將數值表示式四捨五入至 n 個數字位數。

expr 是任何評估為數值的表示式。

integer 是任一正整數,代表數字的位數。

ROUND(expr, integer)

SIGN

SIGN(Profit)

傳回下列數值:

  • 如果數值表示式評估為正數,則傳回 1

  • 如果數值表示式評估為負數,則傳回 -1

  • 如果數值表示式評估為零,則傳回 0

SIGN(expr)

SIN

SIN(1)

可計算數值表示式的正弦。

SIN(expr)

SQRT

SQRT(7)

可計算數值表示式引數的平方根。此數值表示式必須評估為非負數。

SQRT(expr)

TAN

TAN(1)

可計算數值表示式的正切。

expr 是任何評估為數值的表示式。

TAN(expr)

TRUNCATE

TRUNCATE(45.12345, 2)

依指定的小數點位數傳回數值。

expr 是任何評估為數值的表示式。

integer 是任一正整數,代表小數點右邊要傳回的字元數。

TRUNCATE(expr, integer)

執行聚總函數

執行聚總函數會對多個值執行運算,以建立摘要結果。

函數 範例 描述 語法

MAVG

 

計算結果集中最後 n 列資料 (含目前資料列) 的移動平均值 (平均數)。

expr 是任何評估為數值的表示式。integer 是任何正整數。代表前 n 個資料列的資料平均值。

MAVG(expr, integer)

MSUM

select month, revenue, MSUM(revenue, 3) as 3_MO_SUM from sales_subject_area

計算最後 n 列資料 (含目前資料列) 的移動總和。

expr 是任何評估為數值的表示式。integer 是任何正整數。代表最後 n 列資料的總和。

MSUM(expr, integer)

RSUM

SELECT month, revenue, RSUM(revenue) as RUNNING_SUM from sales_subject_area

根據截至目前為止所產生的記錄計算累積總和。

expr 是任何評估為數值的表示式。

RSUM(expr)

RCOUNT

select month, profit, RCOUNT(profit) from sales_subject_area where profit > 200

接受一組記錄作為輸入,然後計算截至目前所產生的記錄筆數。

expr 是任何資料類型的表示式。

RCOUNT(expr)

RMAX

SELECT month, profit,RMAX(profit) from sales_subject_area

接受一組記錄作為輸入,然後根據截至目前所產生的記錄顯示最大值。

expr 是任何資料類型的表示式。

RMAX(expr)

RMIN

select month, profit,RMIN(profit) from sales_subject_area

接受一組記錄作為輸入,然後根據截至目前所產生的記錄顯示最小值。

expr 是任何資料類型的表示式。

RMIN(expr)

空間函數

建立資料模型時可以利用空間函數執行地理分析。例如,您可以計算兩個地理區域 (稱為形狀或多邊形) 之間的距離。

註:

您無法在視覺化工作簿的自訂計算式中使用這些空間函數。
函數 範例 描述 語法
GeometryArea

GeometryArea(Shape)

計算形狀佔用的區域。

GeometryArea(Shape)

GeometryDistance

GeometryDistance(TRIP_START, TRIP_END)

計算兩個形狀之間的距離。

GeometryDistance(Shape 1, Shape 2)

GeometryLength

GeometryLength(Shape)

計算形狀的周長。

GeometryLength(Shape)

GeometryRelate

GeometryRelate(TRIP_START, TRIP_END)

判斷一個形狀是否位於另一個形狀中。以字串形式 (Varchar) 傳回 TRUE 或 FALSE。

GeometryRelate(Shape 1, Shape 2)

GeometryWithinDistance

GeometryWithinDistance(TRIP_START, TRIP_END, 500)

判斷兩個形狀是否位於彼此的指定距離中。以字串形式 (Varchar) 傳回 TRUE 或 FALSE。

GeometryWithinDistance(Shape1, Shape2, DistanceInFloat)

字串函數

字串函數可執行各種不同的字元操控。它們對字元字串有作用。

函數 範例 描述 語法

ASCII

ASCII('a')

可將單一字元字串轉換為相對應的 ASCII 碼 (0 到 255)。如果字元表示式評估為多個字元,將會傳回對應表示式中第一個字元的 ASCII 碼。

expr 是任何評估為字元字串的表示式。

ASCII(expr)

BIT_LENGTH

BIT_LENGTH('abcdef')

可傳回指定字串的長度 (位元)。每個 Unicode 字元的長度均為 2 個位元組 (等於 16 個位元)。

expr 是任何評估為字元字串的表示式。

BIT_LENGTH(expr)

CHAR

CHAR(35)

可將 0 到 255 之間的數值轉換為相對應於 ASCII 碼的字元值。

expr 是任何評估為 0 到 255 間之數值的表示式。

CHAR(expr)

CHAR_LENGTH

CHAR_LENGTH(Customer_Name)

可傳回指定字串的長度 (字元數)。字串的長度不包括前置空格和尾端空格。

expr 是任何評估為字元字串的表示式。

CHAR_LENGTH(expr)

CONCAT

SELECT DISTINCT CONCAT ('abc', 'def') FROM employee

可串連兩個字元字串。

exprs 是評估為字元字串 (使用逗號區隔) 的表示式。

您必須將原始資料 (未格式化的資料) 與 CONCAT 搭配使用。

CONCAT(expr1, expr2)

INSERT

SELECT INSERT('123456', 2, 3, 'abcd') FROM table

將指定的字元字串插入另一個字元字串中的指定位置。

expr1 是任何評估為字元字串的表示式。主要識別目標字元字串。

integer1 是代表從目標字串開頭算起之字元數的任何正整數,系統將在此字元數後插入第二個字串。

integer2 是代表目標字串中將取代為第二個字串之字元數的任何正整數。

expr2 是任何評估為字元字串的表示式。主要識別要插入目標字串中的字元字串。

INSERT(expr1, integer1, integer2, expr2)

LEFT

SELECT LEFT('123456', 3) FROM table

可傳回字串左邊算起的指定數目字元。

expr 是任何評估為字元字串的表示式

integer 是代表要傳回之字串左邊算起字元數的任何正整數。

LEFT(expr, integer)

LENGTH

LENGTH(Customer_Name)

可傳回指定字串的長度 (字元數)。傳回的長度不包括任何尾端空格字元。

expr 是任何評估為字元字串的表示式。

LENGTH(expr)

LOCATE

LOCATE('d' 'abcdef')

可傳回字元字串在另一個字元字串中的數值位置。如果在搜尋的字串中找不到該字元字串,此函數會傳回 0 值。

expr1 是任何評估為字元字串的表示式。主要識別要搜尋的字串。

expr2 是任何評估為字元字串的表示式。

主要識別要搜尋的字串。

LOCATE(expr1, expr2)

LOCATEN

LOCATEN('d' 'abcdef', 3)

就像 LOCATE,可傳回字元字串在另一個字元字串中的數值位置。LOCATEN 包含一個整數引數,可供指定開始搜尋的起始位置。

expr1 是任何評估為字元字串的表示式。主要識別要搜尋的字串。

expr2 是任何評估為字元字串的表示式。主要識別要搜尋的字串。

integer 是代表開始尋找字元字串之起始位置的任何正整數 (非零值)。

LOCATEN(expr1, expr2, integer)

LOWER

LOWER(Customer_Name)

將字元字串轉換為小寫。

expr 是任何評估為字元字串的表示式。

LOWER(expr)

OCTET_LENGTH

OCTET_LENGTH('abcdef')

可傳回指定字串的位元組數。

expr 是任何評估為字元字串的表示式。

OCTET_LENGTH(expr)

POSITION

POSITION('d', 'abcdef')

可傳回 strExpr1 在字元表示式中的數值位置。如果找不到 strExpr1,函數會傳回 0。

expr1 是任何評估為字元字串的表示式。主要識別要於目標字串中搜尋的字串。例如 "d"。

expr2 是任何評估為字元字串的表示式。主要識別要搜尋的目標字串。例如 "abcdef"。

POSITION(expr1, expr2)

REPEAT

REPEAT('abc', 4)

可重複指定的表示式 n 次。

expr 是任何評估為字元字串的表示式

integer 是代表重複字元字串次數的任何正整數。

REPEAT(expr, integer)

REPLACE

REPLACE('abcd1234', '123', 'zz')

可將指定字元表示式中的一或多個字元取代為一或多個其他字元。

expr1 是任何評估為字元字串的表示式。這是其中字元將被取代的字串。

expr2 是任何評估為字元字串的表示式。此第二個字串識別第一個字串中將被取代的字元。

expr3 是任何評估為字元字串的表示式。此第三個字串指定要替代第一個字串的字元。

REPLACE(expr1, expr2, expr3)

RIGHT

SELECT RIGHT('123456', 3) FROM table

可傳回從字串右邊算起的指定字元數。

expr 是任何評估為字元字串的表示式。

integer 是代表要傳回之字串右邊算起字元數的任何正整數。

RIGHT(expr, integer)

SPACE

SPACE(2)

可插入空格。

integer 是指示要插入之空格數的任何正整數。

SPACE(expr)

SUBSTRING

SUBSTRING('abcdef' FROM 2)

可從原始字串的固定字元數位置開始建立新字串。

expr 是任何評估為字元字串的表示式。

startPos 是代表從字串左邊開始算起之字元數 (結果開始處) 的任何正整數。

SUBSTRING([SourceString] FROM [StartPostition])

SUBSTRINGN

SUBSTRING('abcdef' FROM 2 FOR 3)

就像 SUBSTRING,可從原始字串的固定字元數位置開始建立新字串。

SUBSTRINGN 包括一個整數引數,可供指定新字串的長度 (字元數)。

expr 是任何評估為字元字串的表示式。

startPos 是代表從字串左邊開始算起之字元數 (結果開始處) 的任何正整數。

SUBSTRING(expr FROM startPos FOR length)

TrimBoth

Trim(BOTH '_' FROM '_abcdef_')

可去除字元字串中之指定的前置和尾端字元。

char 是任何單一字元。如果省略此設定 (與必要的單引號),會使用空白字元作為預設值。

expr 是任何評估為字元字串的表示式。

TRIM(BOTH char FROM expr)

TRIMLEADING

TRIM(LEADING '_' FROM '_abcdef')

可去除字元字串中之指定的前置字元。

char 是任何單一字元。如果省略此設定 (與必要的單引號),會使用空白字元作為預設值。

expr 是任何評估為字元字串的表示式。

TRIM(LEADING char FROM expr)

TRIMTRAILING

TRIM(TRAILING '_' FROM 'abcdef_')

可去除字元字串中之指定的尾端字元。

char 是任何單一字元。如果省略此設定 (與必要的單引號),會使用空白字元作為預設值。

expr 是任何評估為字元字串的表示式。

TRIM(TRAILING char FROM expr)

UPPER

UPPER(Customer_Name)

可將字元字串轉換為大寫。

expr 是任何評估為字元字串的表示式。

UPPER(expr)

系統函數

USER 系統函數會傳回與階段作業有關的值。例如,您登入時所使用的使用者名稱。

函數 範例 描述 語法

DATABASE

 

傳回您登入的主題區域名稱。

DATABASE()

USER

 

傳回您所登入的語意模型的使用者名稱。

USER()

時間序列函數

時間序列函數可讓您根據時間維度聚總和預測資料。例如,您可以使用 AGO 函數來計算一年前至今的收益。

時間維度成員所在的層級必須與函數的層級相同或更低。因此,在查詢中必須有一或多個資料欄能夠唯一識別位於或低於指定層級的成員。

您也可以使用主題區域中定義的時間層級階層,對主題區域資料套用這些函數。請參閱在工作簿中建立計算的資料元素

  • 您可以在工作簿設計工具的「我的計算式」區域中套用這些函數。請參閱在工作簿中建立計算的資料元素
  • 您也可以使用主題區域中定義的時間層級階層,對主題區域資料套用這些函數。
函數 範例 描述 語法

AGO

SELECT Year_ID, AGO(sales, year, 1)

計算過去一段指定期間內某個計量的聚總值。例如,若要計算一年前的每月收益,請使用 AGO(Revenue, Year, 1, SHIP_MONTH)。若要計算上一季的每季收益,請使用 AGO(Revenue, Quarter, 1)

AGO(MEASURE, TIME_LEVEL, OFFSET)

其中:

  • MEASURE 代表要計算的計量,例如收益。
  • TIME_LEVEL 代表時間間隔,必須是 Year、Quarter、Month、Week 或 Day。
  • OFFSET 代表要回推計算的時間間隔數,例如 1 代表一年。

PERIODROLLING

SELECT Month_ID, PERIODROLLING (monthly_sales, -1, 1)

可計算從 x 個時間單位開始,到 y 個時間結束,這一段期間的計量聚總。例如,PERIODROLLING 可以計算從目前季別的上一季開始到下一季結束,這一段期間的銷售額。

PERIODROLLING(measure, x [,y])

其中:

  • measure 代表計量資料欄的名稱。
  • x 是一個整數,代表與目前時間的差距。
  • y 是一個整數,代表函數進行計算的時間單位數量。
  • hierarchy 是選擇性的引數,代表時間維度中階層的名稱,例如要用於計算時間範圍的 yrmonday

TODATE

SELECT Year_ID, Month_ID, TODATE (sales, year)

計算某個計量從期間開始到最新期間的聚總值,例如年累計至今計算式。

例如,若要計算年累計至今銷售額,請使用 TODATE(sales, year)

TODATE(MEASURE, TIME_LEVEL)

其中:

  • MEASURE 代表至少參照一個計量資料欄 (例如 sales) 的表示式。
  • TIME_LEVEL 代表時間間隔,必須是 Year、Quarter、Month、Week 或 Day。

FORECAST 函數

使用指數平滑法 (ETS) 或季節性 ARIMA 或 ARIMA,針對指定的序列計量建立時間序列模型。此函數會輸出 numPeriods 引數所指定一組期間的預測。

語法 FORECAST(measure, ([series]), output_column_name, options,[runtime_binded_options])])

其中:

  • measure 代表要預測的計量,例如收益資料。

  • series 代表用於建立預測模型的時間單元塊。序列是含有一或多個時間維度資料欄的清單。如果您忽略了 series,系統會根據查詢決定時間點。

  • output_column_name 代表 forecastlowhigh 以及 predictionInterval 的有效資料欄名稱。

  • options 代表以分號 (;) 區隔的名稱/值組字串清單。值可以包括 runtime_binded_options 中指定的 %1 ... %N

  • runtime_binded_options 代表以逗號區隔的資料欄與選項清單。這些資料欄和選項的值會在個別查詢執行期間進行評估和解析。

FORECAST 函數選項 - 下表列出可搭配 FORECAST 函數使用的選項。

選項名稱 描述
numPeriods 整數 要預測的期間數目。
predictionInterval 0 到 100;可信度越高,值就越高。 預測的可信度層級。
modelType

ETS (指數平滑法)

SeasonalArima

ARIMA

用於預測的模型。
useBoxCox

TRUE

FALSE

若為 TRUE,則使用 Box-Cox 轉換。
lambdaValue 不適用

Box-Cox 轉換參數。

若為 NULL 或當 useBoxCoxFALSE 時,則忽略。

否則,系統會在預估模型前轉換資料。

trendDamp

TRUE

FALSE

這是「指數平滑法」模型所特有。

若為 TRUE,則使用衰減趨勢。若為 FALSE 或 NULL,則使用非衰減趨勢。

errorType

不適用

這是「指數平滑法」模型所特有。
trendType

N (無)

A (相加)

M (相乘)

Z (自動選取)

這是「指數平滑法」模型所特有
seasonType

N (無)

A (相加)

M (相乘)

Z (自動選取)

這是「指數平滑法」模型所特有
modelParamIC

ic_auto

ic_aicc

ic_bic

ic_auto (此為預設值)

在模型選擇中使用的資訊條件 (IC)。

每日收益預測範例

此範例會選取每日的收益預測。

FORECAST("A - Sample Sales"."Base Facts"."1- Revenue" Target,
("A - Sample Sales"."Time"."T00 Calendar Date"),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue

每年與每季收益預測範例

此範例會選取每年和每季的收益預測。

FORECAST("A - Sample Sales"."Base Facts"."1- Revenue",
("A - Sample Sales"."Time"."T01 Year" timeYear, "A - Sample Sales"."Time"."T02 Quarter" TimeQuarter),'forecast', 'numPeriods=30;predictionInterval=70;') ForecastedRevenue