F 表示式編輯器參考資料

本節描述可以在「表示式編輯器」中使用的表示式元素。

主題:

SQL 運算子

您可以使用 SQL 運算子指定表示式之間的比較方式和算術運算。

您可以使用多種類型的 SQL 運算子。

運算子 範例 描述 語法

BETWEEN

"COSTS"."UNIT_COST" BETWEEN 100.0 AND 5000.0

判斷某個值是否介於兩個範圍之間 (未包含範圍值本身)。

BETWEEN 之前可以加上 NOT 以否定條件。

BETWEEN [LowerBound] AND [UpperBound]

IN

"COSTS"."UNIT_COST" IN(200, 600, 'A')

判斷某個值是否在一組值中。

IN ([逗號區隔的清單])

IS NULL

"PRODUCTS"."PROD_NAME" IS NULL

判斷某個值是否為空值。

IS NULL

LIKE

"PRODUCTS"."PROD_NAME" LIKE 'prod%'

判斷某個值是否符合整個字串或部分字串。通常與萬用字元搭配使用,指示是否有任何字元字串符合零、有多個字元相符 (%) 或有任何單一字元相符 (_)。

LIKE

+

(FEDERAL_REVENUE + LOCAL_REVENUE) - TOTAL_EXPENDITURE

加號代表加法。

+

-

(FEDERAL_REVENUE + LOCAL_REVENUE) - TOTAL_EXPENDITURE

減號代表減法。

-

* X

SUPPORT_SERVICES_EXPENDITURE * 1.5

乘號代表乘法。

*

X

/

CAPITAL_OUTLAY_EXPENDITURE/1.05

除號代表除法。

/

%

 

百分比

%

||

STATE||CAST(YEAR AS CHAR(4))

字元字串串接。

||

(

(FEDERAL_REVENUE + LOCAL_REVENUE) - TOTAL_EXPENDITURE

左括號。

(

)

(FEDERAL_REVENUE + LOCAL_REVENUE) - TOTAL_EXPENDITURE

右括號。

)

>

YEAR > 2000 and YEAR < 2016 and YEAR <> 2013

大於符號,代表大於比較的值。

>

<

YEAR > 2000 and YEAR < 2016 and YEAR <> 2013

小於符號,代表小於比較的值。

<

=

 

等號,代表相同的值。

=

>=

 

大於或等於符號,代表值與比較相同或大於比較。

>=

<=

 

小於或等於符號,代表值與比較相同或小於比較。

<=

<>

YEAR > 2000 and YEAR < 2016 and YEAR <> 2013

不等於,代表值大於或小於,但絕對不同。

<>

,

STATE in ('ALABAMA','CALIFORNIA')

逗號,用於分隔清單中的元素。

,

函數

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

主題:

聚總函數

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

下列逐一描述資料欄和計量資料欄的聚總規則。其中也包含建立分析之計算的項目時可使用的函數。

  • 預設 — 如同在語意模型中一樣套用預設的聚總規則,或依分析的原始作者套用預設的聚總規則。不適用於分析中之計算的項目。

  • 由伺服器決定 — 套用 Oracle Analytics 決定的聚總規則 (例如在語意模型中定義的規則)。簡單規則的聚總會在 Oracle Analytics 內執行,例如總和、最小值與最大值。不適用於「版面配置」窗格的計量資料欄或分析中的計算項目。

  • 總和 — 計算累加結果集中的所有值而獲得的總和。此選項適用於含有數值的項目。

  • 最小值 — 計算結果集中的資料列最小值 (最低數值)。此選項適用於含有數值的項目。

  • 最大值 — 計算結果集中的資料列最大值 (最高數值)。此選項適用於含有數值的項目。

  • 平均值 — 計算結果集中項目的平均值。此選項適用於含有數值的項目。表格與樞紐分析表中的平均值會四捨五入至最接近整數。

  • 第一個 — 在結果集中,選取計量第一個出現的項目。若為已計算的項目,依據「選取的清單」中的顯示選取第一個成員。不適用於編輯資料欄公式對話方塊。

  • 最後一個 — 在結果集中,選取最後一個出現的項目。若為已計算的項目,依據「選取的清單」中的顯示選取最後一個成員。不適用於編輯資料欄公式對話方塊。

  • 計數 — 計算結果集中項目為非空值的資料列數目。項目通常是資料欄名稱,在此狀況下,會傳回該資料欄中非空值的資料列數目。

  • 相異計數 — 新增差異處理至 Count 函數,這表示一個值只會計算一次。

  • — 不套用聚總。不適用於分析中之計算的項目。

  • 報表總計 (若適用) — 若未選取,表示 Oracle Analytics 應先依據整個結果集計算總計,再將任一篩選條件套用至計量。不適用於編輯資料欄公式對話方塊或分析中的計算項目。僅適用於屬性資料欄。

函數 範例 描述 語法

AGGREGATE AT

AGGREGATE(sales AT year)

根據您所指定資料模型階層的一或多個層級聚總資料欄。

  • measure 是計量資料欄的名稱。
  • level 是您想要進行聚總的層級。

您可以視需要指定多個層級。但您所指定的層級不能與用來作為第一個引數中所指定計量的計量層級來自相同維度。例如,如果 month (月份) 的時間維度與用來作為 yearly_sales (年度銷售額) 之計量層級的時間維度相同,您就不能將函數撰寫成 AGGREGATE(yearly_sales AT month)

AGGREGATE(measure AT level [, level1, levelN])

AGGREGATE BY AGGREGATE(sales BY month, region) 根據一或多個維度資料欄聚總計量。
  • measure 是要聚總的計量資料欄名稱。

  • column 是您想要進行聚總的維度資料欄。
您可以根據一或多個資料欄來聚總計量。
AGGREGATE(measure BY column [, column1, columnN])

AVG

Avg(Sales)

計算一組數值的平均值 (平均數)。

AVG(expr)

AVGDISTINCT

 

計算表示式所有相異值的平均值。

AVG(DISTINCT expr)

BIN

BIN(revenue BY productid, year WHERE productid > 2 INTO 4 BINS RETURNING RANGE_LOW)

將指定的數值表示式分類成指定數目的相等寬度儲存桶。此函數可以傳回 bin 號碼或 bin 間隔的兩個端點其中之一。numeric_expr 是 bin 的計量或數值屬性。BY grain_expr1,…, grain_exprN 是表示式清單,定義要計算 numeric_expr 的單元塊。BY 對計量表示式而言為必要項目,對屬性表示式而言則為選擇性項目。WHERE 是在將數值指定給儲格之前要套用至 numeric_expr 的篩選條件。INTO number_of_bins BINS 是要傳回的儲格數目。BETWEEN min_value AND max_value 是用於最外面儲格端點的最小值與最大值。RETURNING NUMBER 表示傳回值應該是儲格編號 (1、2、3、4 等)。這是預設值。RETURNING RANGE_LOW 表示儲格間隔的下限值。RETURNING RANGE_HIGH 表示儲格間隔的上限值。

BIN(numeric_expr [BY grain_expr1, ..., grain_exprN] [WHERE condition] INTO number_of_bins BINS [BETWEEN min_value AND max_value] [RETURNING {NUMBER | RANGE_LOW | RANGE_HIGH}])

BottomN

 

由 1 到 n 排列表示式引數的 n 個最低值,1 對應最低數值。

expr 是任何評估為數值的表示式。integer 是任何正整數。代表在結果集中從下往上算起的個數,1 代表最低等級。

BottomN(expr, integer)

COUNT

COUNT(Products)

判斷含非空值的項目數量。

COUNT(expr)

COUNTDISTINCT

 

新增相異處理至 COUNT 函數。

expr 是任何表示式。

COUNT(DISTINCT expr)

COUNT*

SELECT COUNT(*) FROM Facts

計算資料列數。

COUNT(*)

First

First(Sales)

選取表示式引數傳回的第一個非空值。First 函數會以您明確定義之維度中指定的最詳細層級進行運算。

First([NumericExpression)]

Last

Last(Sales)

選取表示式引數傳回的最後一個非空值。

Last([NumericExpression)]

MAVG

 

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

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

MAVG(expr, integer)

MAX

MAX(Revenue)

計算符合數值表示式引數之資料列的最大值 (最大數值)。

MAX(expr)

MEDIAN

MEDIAN(Sales)

計算符合數值表示式引數之資料列的中位數 (中間值)。當資料列數目為偶數時,中位數就是兩個中間資料列的平均值。這個函數一律會傳回雙精度數。

MEDIAN(expr)

MIN

MIN(Revenue)

計算符合數值表示式引數之資料列的最小值 (最小數值)。

MIN(expr)

NTILE

 

根據使用者指定的範圍決定值的排名。它會傳回多個整數以表示排列的範圍。NTILE 的 numTiles=100 時會傳回一般通稱的「百分比」(從 1 至 100 範圍的數字,100 代表排序的最大值)。

expr 是任何評估為數值的表示式。numTiles 是正的非空值整數,代表磚塊數目。

NTILE(expr, numTiles)

PERCENTILE

 

計算每個符合數值表示式引數值的百分等級。百分等級範圍是從 0 (第 0 個百分位數) 到 1 (第 100 個百分位數)。

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

PERCENTILE(expr)

RANK

RANK(chronological_key, null, year_key_columns)

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

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

RANK(expr)

STDDEV

STDDEV(Sales) STDDEV(DISTINCT Sales)

傳回一組數值的標準差。傳回類型一律是雙精度數。

STDDEV(expr)

STDDEV_POP

STDDEV_POP(Sales) STDDEV_POP(DISTINCT Sales)

使用母體變異數和標準差的運算公式傳回一組數值的標準差。

STDDEV_POP([NumericExpression])

SUM

SUM(Revenue)

累加所有符合數值表示式引數的值以計算總和。

SUM(expr)

SUMDISTINCT

 

累加所有符合數值表示式引數的相異值以計算總和。

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

SUM(DISTINCT expr)

TOPN

 

由 1 到 n 排列表示式引數的 n 個最高值,1 對應最高數值。

expr 是任何評估為數值的表示式。integer 是任何正整數。代表在結果集中從上往下算起的個數,1 代表最高等級。

TOPN(expr, integer)

分析函數

分析函數可讓您使用模型 (例如 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])

EVALUATE_SCRIPT

EVALUATE_SCRIPT('filerepo://obiee.Outliers.xml', 'isOutlier', 'algorithm=kmeans;id=%1;arg1=%2;arg2=%3;useRandomSeed=False;', customer_number, expected_revenue, customer_age)

執行 script_file_path 中指定的 Python 命令檔,並傳入一或多個資料欄或常值表示式作為輸入。函數的輸出則由 output_column_name 決定。

EVALUATE_SCRIPT(script_file_path, output_column_name, options, [runtime_binded_options])

轉換函數

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

函數 範例 描述 語法

CAST

CAST(hiredate AS CHAR(40)) FROM employee

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

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)

日期與時間函數

日期和時間函數根據 DATEDATETIME 操控資料。

函數 範例 描述 語法

CURRENT_Date

CURRENT_DATE

傳回目前的日期。

日期由執行 Oracle BI 的系統決定。

CURRENT_DATE

CURRENT_TIME

CURRENT_TIME(3)

以指定的數字位數傳回目前的時間,例如 HH:MM:SS.SSS。

若未指定引數,此函數會傳回預設的數字位數。

CURRENT_TIME(expr)

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP(3)

以指定的數字位數傳回目前的日期/時戳。

CURRENT_TIMESTAMP(expr)

DAYNAME

DAYNAME(Order_Date)

傳回指定日期表示式的星期幾名稱。

DAYNAME(expr)

DAYOFMONTH

DAYOFMONTH(Order_Date)

傳回指定日期表示式之當月天次的數字。

DAYOFMONTH(expr)

DAYOFWEEK

DAYOFWEEK(Order_Date)

傳回 1 到 7 之間的數字,相對應於指定日期表示式的一週天次。例如,1 一律對應星期日、2 對應星期一,依此類推至星期六 (傳回 7)。

DAYOFWEEK(expr)

DAYOFYEAR

DAYOFYEAR(Order_Date)

傳回 1 到 366 之間的數字,相對應於指定日期表示式的當年天次。

DAYOFYEAR(expr)

DAY_OF_QUARTER

DAY_OF_QUARTER(Order_Date)

傳回 1 到 92 之間的數字,相對應於指定日期表示式的當季的天次。

DAY_OF_QUARTER(expr)

HOUR

HOUR(Order_Time)

傳回 0 到 23 之間的數字,相對應於指定時間表示式的小時。例如,0 對應早上 12 點,23 對應晚上 11 點。

HOUR(expr)

MINUTE

MINUTE(Order_Time)

傳回 0 到 59 之間的數字,相對應於指定時間表示式的分鐘。

MINUTE(expr)

MONTH

MONTH(Order_Time)

傳回 1 到 12 之間的數字,相對應於指定日期表示式的月份。

MONTH(expr)

MONTHNAME

MONTHNAME(Order_Time)

傳回指定日期表示式之月份的名稱。

MONTHNAME(expr)

MONTH_OF_QUARTER

MONTH_OF_QUARTER(Order_Date)

傳回 1 到 3 之間的數字,相對應於指定日期表示式的當季月份。

MONTH_OF_QUARTER(expr)

NOW

NOW()

傳回目前的時戳。NOW 函數等同於 CURRENT_TIMESTAMP 函數。

NOW()

QUARTER_OF_YEAR

QUARTER_OF_YEAR(Order_Date)

傳回 1 到 4 之間的數字,相對應於指定日期表示式的當年季別。

QUARTER_OF_YEAR(expr)

SECOND

SECOND(Order_Time)

傳回 0 到 59 之間的數字,相對應於指定時間表示式的秒鐘。

SECOND(expr)

TIMESTAMPADD

TIMESTAMPADD(SQL_TSI_MONTH, 12,Time."Order Date")

在時戳加上指定的間隔次數,並傳回單一時戳。

間隔選項包括:SQL_TSI_SECONDSQL_TSI_MINUTESQL_TSI_HOURSQL_TSI_DAYSQL_TSI_WEEKSQL_TSI_MONTHSQL_TSI_QUARTERSQL_TSI_YEAR

TIMESTAMPADD(interval, expr, timestamp)

TIMESTAMPDIFF

TIMESTAMPDIFF(SQL_TSI_MONTH, Time."Order Date",CURRENT_DATE)

傳回兩個時戳之間的指定間隔總數。

使用與 TIMESTAMPADD 相同的間隔。

TIMESTAMPDIFF(interval, expr, timestamp2)

WEEK_OF_QUARTER

WEEK_OF_QUARTER(Order_Date)

傳回 1 到 13 之間的數字,相對應於指定日期表示式的當季週別。

WEEK_OF_QUARTER(expr)

WEEK_OF_YEAR

WEEK_OF_YEAR(Order_Date)

傳回 1 到 53 之間的數字,相對應於指定日期表示式的當年週別。

WEEK_OF_YEAR(expr)

YEAR

YEAR(Order_Date)

傳回指定日期表示式的年度。

YEAR(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)

字串函數

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

函數 範例 描述 語法

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

常數

您可以使用常數在工作簿與報表中包含特定的固定日期和時間。

常數 範例 描述 語法

DATE

DATE '2026-04-09'

在計算式或表示式中建立特定日期。

DATE 'yyyy-mm-dd'

TIME

TIME '12:00:00'

在計算式或表示式中建立特定時間。

TIME 'hh:mi:ss'

TIMESTAMP

TIMESTAMP '2026-04-09 12:00:00'

在計算式或表示式中建立特定時間戳記。

TIMESTAMP 'yyyy-mm-dd hh:mi:ss'

類型

您可以在表示式中使用資料類型,例如 CHARINT 以及 NUMERIC

例如,在建立 CAST 表示式時使用類型,變更表示式的資料類型或將空常值變更為其他資料類型。