TSRollup 函数

TSRollup 函数按时间聚集表中多个行的时间系列值。

语法

TSRollup(ts TimeSeries, 'agg_express' lvarchar )
RETURNS TimeSeries;
agg_express
以下 SQL 聚集运算符的逗号分隔列表:AVG、COUNT、MIN、MAX、SUM 或 FIRST 和 LAST 运算符。FIRST 运算符返回包含为每个时间戳记输入到数据库中的第一个元素的时间系列。LAST 运算符返回为每个时间戳记输入的最后一个元素。每个运算符需要一个参数,并且该参数是 TimeSeries 数据类型中列的名称,使用 $ 作为前缀。
ts
TimeSeries 数据类型的名称或返回 TimeSeries 数据类型的函数,例如 AggregateBy

描述

使用 TSRollup 函数可以对表中时间系列数据的多个行运行一个或多个聚集运算符。

返回结果

作为表达式结果的 TimeSeries 数据类型。

示例

以下示例显示了如何使用 TSRollup 函数。

示例 1:邮政编码中所有用电量之和

对于邮政编码 94063 中包含的客户,以下语句在 stores_demo 数据库中的 ts_data 表内添加每个时间戳记的所有用电量值:

SELECT TSRollup(raw_reads, "sum($value)")
    FROM ts_data, customer, customer_ts_data
    WHERE customer.zipcode = "94063"
       AND customer_ts_data.customer_num = customer.customer_num
       AND customer_ts_data.loc_esi_id = ts_data.loc_esi_id;

示例 2:按邮政编码排序的每天用电量之和

假设您有一个表 ts_table,其中包含用户标识、用户的邮政编码以及每个客户的用电量数据,这些数据每 15 分钟收集一次并存储在时间系列 ts_col 中的列 value 内。以下查询针对每个邮政编码返回每天的总用电量:

SELECT zipcode, 
  TSRollup(
	AggregateBy('SUM($value)', 'cal1day', ts_col, 0, 
	    '2011-01-01 00:00:00.00000', '2011-01-31 23:45:00:00.00000'),
      'SUM($value)'
  )
FROM ts_table
GROUP BY zipcode;

TSRollup 函数的第一个参数是 AggregateBy 函数,该函数计算 2011 年 1 月每天每个客户的用电量之和。第二个参数是 SUM 运算符,用于按邮政编码计算每天的用电量之和。

生成的表为每个邮政编码包含一行。每行有一个时间系列,其中包含在该邮政编码所表示区域内生活的客户在 2011 年 1 月每天的用电量之和。