函数

存在可在表达式中使用的各种类型的函数。

主题:

分析函数

使用分析函数,您可以通过预测、趋势线和聚类等模型来浏览数据。或者,您可以将分析函数拖放到工作簿编辑器中。

或者,您可以通过在工作簿编辑器中数据面板的“分析”选项卡上选择预测、趋势线和聚类来将其添加到工作簿中。请参见将统计分析函数添加到可视化

函数 示例 说明 语法

CLUSTER

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

使用 K-平均值 (K-Means) 或分层聚类基于一个或多个输入表达式将一组记录收集到组中。

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

FORECAST

按天统计的收入预测示例

此示例选择按天统计的收入预测。

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

使用指数平滑 (Exponential Smoothing, ETS)、季节性 ARIMA、ARIMA 或 Prophet 创建指定度量随序列变化的时间序列模型。此函数输出对 numPeriods 参数指定的一组期间的预测。

另请参见下面的其他 FORECAST 函数选项。

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

其中:

  • measure 表示要预测的度量,例如收入数据。

  • series 表示用于构建预测模型的时间粒度。series 是一个或多个时间维列的列表。如果省略了 series,则从查询确定时间粒度。

  • output_column_name 表示 forecastlowhighpredictionInterval 的有效列名。

  • options 表示由分号 (;) 分隔的名称/值对字符串列表。值可以包括 runtime_binded_options 中指定的 %1 ... %N

  • runtime_binded_options 表示列和选项的逗号分隔列表。这些列和选项的值是在各个查询执行期间进行求值和解析。

另请参见下面的其他 FORECAST 函数选项。

OUTLIER

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

使用 K-平均值 (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])

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)

FORECAST 函数选项 下表列出了可在 FORECAST 函数中使用的选项。

选项名称 说明
numPeriods 整数 要预测的期间数。
predictionInterval 0 到 100,其中值越大表示置信度越高 预测的置信度级别。
modelType

ETS(Exponential Smoothing,指数平滑)

SeasonalArima

ARIMA

Prophet

要用于预测的模型。
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(这是默认值)

在模型选择中使用的信息标准 (information criterion, IC)。

转换函数

转换函数可将值从一种形式转换为另一种形式。

函数 示例 说明 语法

CAST

CAST(hiredate AS CHAR(40)) FROM employee

更改表达式的数据类型,或者将空值文字更改为其他数据类型。例如,可以转换 customer_name(一种 CHARVARCHAR 数据类型)或 birthdate(日期时间文字)。

使用 CAST 更改为 Date 数据类型。

不要使用 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"。

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 AM,则该函数返回的时间戳为 2 月 22 日 12:00:00 AM。

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 PM,则该函数返回的时间戳为 11:00:00 PM。

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 AM,则该函数返回的时间戳为 11:38:00 AM。

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 日星期日。

:如果一周第一天(即星期日)在上一年中,因此会对聚合造成负面影响,该函数将返回本年度中一周第 7 天(即星期六),而不是上一年中一周第一天。例如,1/1/24、1/2/24 和 1/3/24 都聚合到 1/6/24 星期六,而不是 12/29/23 星期日。

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)

有关使用主题区域中的日期维的提示

下面的这些提示可帮助您在计算中使用主题区域日期时获得最佳结果。

向计算添加主题区域日期

如果将日期从主题区域直接拖放到计算中,并将其作为字符串或整数进行处理,则将会收到错误。出现这种情况是因为基础日期值是时间戳。

请改为使用日期提取函数之一来解释日期。

例如,您可能具有以下主题区域日期。
GUID-39C55B3A-A055-45D3-9904-948680247C08-default.png 的说明如下
.png 的说明

要从这些主题区域日期中提取月份,请使用 ExtractMonthOfYear 函数:

case when monthname(ExtractMonthOfYear("Date")) in ('Jan' ,'Feb', 'Mar') 
THEN 'Q1' 
ELSE 'Rest of the year' END

显示函数

显示在查询结果集上执行操作的函数。

函数 示例 说明 语法

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])

有关使用显示函数的提示

  • FILTER — 如果要使用主题区域构建报表,请使用主题区域中定义的层次,而不是直接在计算中筛选层次列。换言之,如果主题区域具有时间\财政年度\财政季度的层次,则避免使用:

    filter (<measure> using fiscal_quarter = 'Q4')

    filter (<measure> using fiscal_quarter = 'Q3')

    filter (<measure> using fiscal_year = 'FY24')

求值函数

求值函数是可用于通过表达式传递来获取高级计算的数据库函数。

嵌入式数据库函数可能需要一个或多个列。这些列将由该函数中的 %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)

将表达式的值从弧度转换为角度。

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)

计算表达式的自然对数。

expr 是求值结果为数值的任意表达式。

LOG(expr)

LOG10

LOG10(1)

计算以 10 为底的对数表达式。

expr 是求值结果为数值的任意表达式。

LOG10(expr)

MOD

MOD(10, 3)

将第一个数值表达式除以第二个数值表达式,然后返回商的余数部分。

MOD(expr1, expr2)

PI

PI()

返回 pi 的常数值。

PI()

POWER

POWER(Profit, 2)

求出第一个数值表达式的值,并将该值用作第二个数值表达式中指定的幂。

POWER(expr1, expr2)

RADIANS

RADIANS(30)

将表达式的值从角度转换为弧度。

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)

确定一个形状是否在另一个形状内。返回 TRUE 或 FALSE 字符串 (varchar)。

GeometryRelate(Shape 1, Shape 2)

GeometryWithinDistance

GeometryWithinDistance(TRIP_START, TRIP_END, 500)

确定两个形状是否在指定的彼此距离范围内。返回 TRUE 或 FALSE 字符串 (varchar)。

GeometryWithinDistance(Shape1, Shape2, DistanceInFloat)

字符串函数

字符串函数执行各种字符操纵功能。这些函数对字符串进行操作。

函数 示例 说明 语法

ASCII

ASCII('a')

将单个字符串转换成介于 0 与 255 之间的相应 ASCII 代码。如果字符表达式求值结果为多个字符,将返回与表达式中第一个字符对应的 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)

有关在字符串函数中使用 LISTAGG 的提示

下面的这些提示可帮助您在处理工作簿中的字符串时使用 LISTAGG 函数获得最佳结果。例如,您可能想要创建一个包含数据列中所有城市的字符串。

连接多个值

可使用 LISTAGG 连接多个字符串值并将其放置在一个单元格和一行中。

LISTAGG([DISTINCT] <column to concatenate> BY <grouping column>) ON OVERFLOW TRUNCATE
  • DISTINCT — 如果值不唯一,可使用此参数删除重复值。
  • ON OVERFLOW TRUNCATE — 如果结果超过允许的最大长度,可使用此参数截断返回的字符串。
示例数据
Number City State
12     New York    New York
14     New York    New York
30     Boston      Massachusetts
18     Salem    Massachusetts
12     Buffalo     New York
10     Buffalo     New York
20     Albany      New York

示例命令和输出

LISTAGG(City, ', ') 输出 "New York, New York, Boston, Salem, Buffalo, Buffalo, Albany"

LISTAGG(DISTINCT City, ', ') 输出 "New York, Boston, Salem, Buffalo Albany"

LISTAGG(City, ', ' ON OVERFLOW TRUNCATE '...') 输出 "New York, New York, Boston, Salem, Buffalo, ..."

系统函数

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。