2121
2222# 特色函数
2323
24- ## 1. 时序特色函数
24+ ## 1. 降采样函数
2525
26- ### 1.1 降采样函数
26+ ### 1.1 ` date_bin ` 函数
2727
28- #### 1.1.1 ` date_bin ` 函数
29-
30- ##### 功能描述:
28+ #### 1.1.1 功能描述
3129
3230` date_bin ` 是一个标量函数,用于将时间戳规整到指定的时间区间起点,并结合 ` GROUP BY ` 子句实现降采样。
3331
3432- 部分区间结果为空:只会对满足条件的数据进行时间戳规整,不会填充缺失的时间区间。
3533- 全部区间结果为空::满足条件的整个查询范围内没有数据时,降采样返回空结果集
3634
37- ##### 使用示例:
35+ #### 1.1.2 使用示例
3836
39- ###### 示例数据
37+ ##### 示例数据
4038
4139在[ 示例数据页面] ( ../Reference/Sample-Data.md ) 中,包含了用于构建表结构和插入数据的SQL语句,下载并在IoTDB CLI中执行这些语句,即可将数据导入IoTDB,您可以使用这些数据来测试和执行示例中的SQL语句,并获得相应的结果。
4240
@@ -117,16 +115,16 @@ SELECT date_bin(1h, time) AS hour_time, avg(temperature) AS avg_temp
117115+-----------------------------+--------+
118116```
119117
120- #### 1. 1.2 ` date_bin_gapfill ` 函数
118+ ### 1.2 ` date_bin_gapfill ` 函数
121119
122- ##### 功能描述
120+ #### 1.2.1 功能描述
123121
124122` date_bin_gapfill ` 是 ` date_bin ` 的扩展,能够填充缺失的时间区间,从而返回完整的时间序列。
125123
126124- 部分区间结果为空:对满足条件的数据进行时间戳规整,并填充缺失的时间区间。
127125- 全部区间结果为空::整个查询范围内没有数据时,` date_bin_gapfill ` 会返回空结果集
128126
129- ##### 功能限制
127+ #### 1.2.2 功能限制
130128
131129- ** ` date_bin_gapfill ` ** ** 必须与** ** ` GROUP BY ` ** ** 子句搭配使用** ,如果用在其他子句中,不会报错,但不会执行 gapfill 功能,效果与使用 ` date_bin ` 相同。
132130- ** 每个** ** ` GROUP BY ` ** ** 子句中只能使用一个** ** ` date_bin_gapfill ` ** 。如果出现多个 ` date_bin_gapfill ` ,会报错:multiple date_bin_gapfill calls not allowed
@@ -138,7 +136,7 @@ SELECT date_bin(1h, time) AS hour_time, avg(temperature) AS avg_temp
138136- ** 使用** ** ` date_bin_gapfill ` ** ** 时,如果出现其他时间过滤条件** ,会报错。时间过滤条件与其他值过滤条件只能通过 ` AND ` 连接。
139137- ** 如果不能从 where 子句中推断出 startTime 和 endTime,则报错** :could not infer startTime or endTime from WHERE clause。
140138
141- ##### 使用示例
139+ #### 1.2.3 使用示例
142140
143141示例 1:填充缺失时间区间
144142
@@ -215,19 +213,19 @@ GROUP BY 1, device_id;
215213+---------+---------+--------+
216214```
217215
218- ### 1.2 DIFF函数
216+ ## 2. DIFF函数
219217
220- ##### 功能概述
218+ ### 2.1 功能概述
221219
222220` DIFF ` 函数用于计算当前行与上一行的差值。对于第一行,由于没有前一行数据,因此永远返回 ` NULL ` 。
223221
224- ##### 函数定义
222+ ### 2.2 函数定义
225223
226224```
227225DIFF(numberic[, boolean]) -> Double
228226```
229227
230- ##### 参数说明
228+ ### 2.3 参数说明
231229
232230- 第一个参数:数值类型
233231
@@ -241,12 +239,12 @@ DIFF(numberic[, boolean]) -> Double
241239 - ** ` true ` ** :忽略 ` NULL ` 值,向前找到第一个非 ` NULL ` 值进行差值计算。如果前面没有非 ` NULL ` 值,则返回 ` NULL ` 。
242240 - ** ` false ` ** :不忽略 ` NULL ` 值,如果前一行为 ` NULL ` ,则差值结果为 ` NULL ` 。
243241
244- ##### 注意事项
242+ ### 2.4 注意事项
245243
246244- 在树模型中,第二个参数需要指定为 ` 'ignoreNull'='true' ` 或 ` 'ignoreNull'='false' ` ,但在表模型中,只需指定为 ` true ` 或 ` false ` 。
247245- 如果用户写成 ` 'ignoreNull'='true' ` 或 ` 'ignoreNull'='false' ` ,表模型会将其视为对两个字符串常量进行等号比较,返回布尔值,但结果总是 ` false ` ,等价于指定第二个参数为 ` false ` 。
248246
249- ##### 使用示例
247+ ### 2.5 使用示例
250248
251249示例 1:忽略 ` NULL ` 值
252250
@@ -325,7 +323,7 @@ WHERE device_id = '100';
325323+-----------------------------+-----------+-----------+-----------+
326324```
327325
328- ### 1.3 时序分窗函数
326+ ## 3. 时序分窗函数
329327
330328原始示例数据如下:
331329
@@ -348,19 +346,19 @@ CREATE TABLE bid(time TIMESTAMP TIME, stock_id STRING TAG, price FLOAT FIELD);
348346INSERT INTO bid(time , stock_id, price) VALUES (' 2021-01-01T09:05:00' ,' AAPL' ,100 .0 ),(' 2021-01-01T09:06:00' ,' TESL' ,200 .0 ),(' 2021-01-01T09:07:00' ,' AAPL' ,103 .0 ),(' 2021-01-01T09:07:00' ,' TESL' ,202 .0 ),(' 2021-01-01T09:09:00' ,' AAPL' ,102 .0 ),(' 2021-01-01T09:15:00' ,' TESL' ,195 .0 );
349347```
350348
351- #### 1. 3.1 HOP
349+ ### 3.1 HOP
352350
353- ##### 功能描述
351+ #### 3.1.1 功能描述
354352
355353HOP 函数用于按时间分段分窗分析,识别每一行数据所属的时间窗口。该函数通过指定固定窗口大小(size)和窗口滑动步长(SLIDE),将数据按时间戳分配到所有与其时间戳重叠的窗口中。若窗口之间存在重叠(步长 < 窗口大小),数据会自动复制到多个窗口。
356354
357- ##### 函数定义
355+ #### 3.1.2 函数定义
358356
359357``` SQL
360358HOP(data, timecol, size, slide[, origin])
361359```
362360
363- ##### 参数说明
361+ #### 3.1.3 参数说明
364362
365363| 参数名 | 参数类型 | 参数属性 | 描述 |
366364| --------- | ---------- | --------------------------------- | -------------------- |
@@ -370,15 +368,15 @@ HOP(data, timecol, size, slide[, origin])
370368| SLIDE | 标量参数 | 长整数类型 | 窗口滑动步长 |
371369| ORIGIN | 标量参数 | 时间戳类型默认值:Unix 纪元时间 | 第一个窗口起始时间 |
372370
373- ##### 返回结果
371+ #### 3.1.4 返回结果
374372
375373HOP 函数的返回结果列包含:
376374
377375* window\_ start: 窗口开始时间(闭区间)
378376* window\_ end: 窗口结束时间(开区间)
379377* 映射列:DATA 参数的所有输入列
380378
381- ##### 使用示例
379+ #### 3.1.5 使用示例
382380
383381``` SQL
384382IoTDB> SELECT * FROM HOP(DATA => bid,TIMECOL => ' time' ,SLIDE => 5m,SIZE => 10m);
@@ -413,18 +411,18 @@ IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM HOP(DAT
413411+ -- ---------------------------+-----------------------------+--------+------------------+
414412```
415413
416- #### 1. 3.2 SESSION
414+ ### 3.2 SESSION
417415
418- ##### 功能描述
416+ #### 3.2.1 功能描述
419417
420418SESSION 函数用于按会话间隔对数据进行分窗。系统逐行检查与前一行的时间间隔,小于阈值(GAP)则归入当前窗口,超过则归入下一个窗口。
421419
422- ##### 函数定义
420+ #### 3.2.2 函数定义
423421
424422``` SQL
425423SESSION(data [PARTITION BY(pkeys, ...)] [ORDER BY (okeys, ...)], timecol, gap)
426424```
427- ##### 参数说明
425+ #### 3.2.3 参数说明
428426
429427| 参数名 | 参数类型 | 参数属性 | 描述 |
430428| --------- | ---------- | -------------------------- | ---------------------------------------- |
@@ -433,15 +431,15 @@ SESSION(data [PARTITION BY(pkeys, ...)] [ORDER BY(okeys, ...)], timecol, gap)
433431|
434432| GAP | 标量参数 | 长整数类型 | 会话间隔阈值 |
435433
436- ##### 返回结果
434+ #### 3.2.4 返回结果
437435
438436SESSION 函数的返回结果列包含:
439437
440438* window\_ start: 会话窗口内的第一条数据的时间
441439* window\_ end: 会话窗口内的最后一条数据的时间
442440* 映射列:DATA 参数的所有输入列
443441
444- ##### 使用示例
442+ #### 3.2.5 使用示例
445443
446444``` SQL
447445IoTDB> SELECT * FROM SESSION(DATA => bid PARTITION BY stock_id ORDER BY time ,TIMECOL => ' time' ,GAP => 2m);
@@ -467,34 +465,34 @@ IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM SESSION
467465+ -- ---------------------------+-----------------------------+--------+------------------+
468466```
469467
470- #### 1. 3.3 VARIATION
468+ ### 3.3 VARIATION
471469
472- ##### 功能描述
470+ #### 3.3.1 功能描述
473471
474472VARIATION 函数用于按数据差值分窗,将第一条数据作为首个窗口的基准值,每个数据点会与基准值进行差值运算,如果差值小于给定的阈值(delta)则加入当前窗口;如果超过阈值,则分为下一个窗口,将该值作为下一个窗口的基准值。
475473
476- ##### 函数定义
474+ #### 3.3.2 函数定义
477475
478476``` sql
479477VARIATION(data [PARTITION BY(pkeys, ...)] [ORDER BY (okeys, ...)], col, delta)
480478```
481479
482- ##### 参数说明
480+ #### 3.3.3 参数说明
483481
484482| 参数名 | 参数类型 | 参数属性 | 描述 |
485483| -------- | ---------- | -------------------------- | ---------------------------------------- |
486484| DATA | 表参数 | SET SEMANTICPASS THROUGH | 输入表通过 pkeys、okeys 指定分区和排序 |
487485| COL | 标量参数 | 字符串类型 | 标识对哪一列计算差值 |
488486| DELTA | 标量参数 | 浮点数类型 | 差值阈值 |
489487
490- ##### 返回结果
488+ #### 3.3.4 返回结果
491489
492490VARIATION 函数的返回结果列包含:
493491
494492* window\_ index: 窗口编号
495493* 映射列:DATA 参数的所有输入列
496494
497- ##### 使用示例
495+ #### 3.3.5 使用示例
498496
499497``` sql
500498IoTDB> SELECT * FROM VARIATION(DATA => bid PARTITION BY stock_id ORDER BY time ,COL => ' price' ,DELTA => 2 .0 );
@@ -521,33 +519,33 @@ IoTDB> SELECT first(time) as window_start, last(time) as window_end, stock_id, a
521519+ -- ---------------------------+-----------------------------+--------+-----+
522520```
523521
524- #### 1. 3.4 CAPACITY
522+ ### 3.4 CAPACITY
525523
526- ##### 功能描述
524+ #### 3.4.1 功能描述
527525
528526CAPACITY 函数用于按数据点数(行数)分窗,每个窗口最多有 SIZE 行数据。
529527
530- ##### 函数定义
528+ #### 3.4.2 函数定义
531529
532530``` sql
533531CAPACITY(data [PARTITION BY(pkeys, ...)] [ORDER BY (okeys, ...)], size)
534532```
535533
536- ##### 参数说明
534+ #### 3.4.3 参数说明
537535
538536| 参数名 | 参数类型 | 参数属性 | 描述 |
539537| -------- | ---------- | -------------------------- | ---------------------------------------- |
540538| DATA | 表参数 | SET SEMANTICPASS THROUGH | 输入表通过 pkeys、okeys 指定分区和排序 |
541539| SIZE | 标量参数 | 长整数类型 | 窗口大小 |
542540
543- ##### 返回结果
541+ #### 3.4.4 返回结果
544542
545543CAPACITY 函数的返回结果列包含:
546544
547545* window\_ index: 窗口编号
548546* 映射列:DATA 参数的所有输入列
549547
550- ##### 使用示例
548+ #### 3.4.5 使用示例
551549
552550``` sql
553551IoTDB> SELECT * FROM CAPACITY(DATA => bid PARTITION BY stock_id ORDER BY time , SIZE => 2 );
@@ -574,18 +572,18 @@ IoTDB> SELECT first(time) as start_time, last(time) as end_time, stock_id, avg(p
574572+ -- ---------------------------+-----------------------------+--------+-----+
575573```
576574
577- #### 1. 3.5 TUMBLE
575+ ### 3.5 TUMBLE
578576
579- ##### 功能描述
577+ #### 3.5.1 功能描述
580578
581579TUMBLE 函数用于通过时间属性字段为每行数据分配一个窗口,滚动窗口的大小固定且不重复。
582580
583- ##### 函数定义
581+ #### 3.5.2 函数定义
584582
585583``` sql
586584TUMBLE(data, timecol, size[, origin])
587585```
588- ##### 参数说明
586+ #### 3.5.3 参数说明
589587
590588| 参数名 | 参数类型 | 参数属性 | 描述 |
591589| --------- | ---------- | --------------------------------- | -------------------- |
@@ -594,15 +592,15 @@ TUMBLE(data, timecol, size[, origin])
594592| SIZE | 标量参数 | 长整数类型 | 窗口大小,需为正数 |
595593| ORIGIN | 标量参数 | 时间戳类型默认值:Unix 纪元时间 | 第一个窗口起始时间 |
596594
597- ##### 返回结果
595+ #### 3.5.4 返回结果
598596
599597TUBMLE 函数的返回结果列包含:
600598
601599* window\_ start: 窗口开始时间(闭区间)
602600* window\_ end: 窗口结束时间(开区间)
603601* 映射列:DATA 参数的所有输入列
604602
605- ##### 使用示例
603+ #### 3.5.5 使用示例
606604
607605``` SQL
608606IoTDB> SELECT * FROM TUMBLE( DATA => bid, TIMECOL => ' time' , SIZE => 10m);
@@ -628,19 +626,19 @@ IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM TUMBLE(
628626+ -- ---------------------------+-----------------------------+--------+------------------+
629627```
630628
631- #### 1. 3.6 CUMULATE
629+ ### 3.6 CUMULATE
632630
633- ##### 功能描述
631+ #### 3.6.1 功能描述
634632
635633Cumulate 函数用于从初始的窗口开始,创建相同窗口开始但窗口结束步长不同的窗口,直到达到最大的窗口大小。每个窗口包含其区间内的元素。例如:1小时步长,24小时大小的累计窗口,每天可以获得如下这些窗口:` [00:00, 01:00) ` ,` [00:00, 02:00) ` ,` [00:00, 03:00) ` , …, ` [00:00, 24:00) `
636634
637- ##### 函数定义
635+ #### 3.6.2 函数定义
638636
639637``` sql
640638CUMULATE(data, timecol, size, step[, origin])
641639```
642640
643- ##### 参数说明
641+ #### 3.6.3 参数说明
644642
645643| 参数名 | 参数类型 | 参数属性 | 描述 |
646644| --------- | ---------- | --------------------------------- | -------------------------------------------- |
@@ -652,15 +650,15 @@ CUMULATE(data, timecol, size, step[, origin])
652650
653651> 注意:size 如果不是 step 的整数倍,则会报错` Cumulative table function requires size must be an integral multiple of step `
654652
655- ##### 返回结果
653+ #### 3.6.4 返回结果
656654
657655CUMULATE函数的返回结果列包含:
658656
659657* window\_ start: 窗口开始时间(闭区间)
660658* window\_ end: 窗口结束时间(开区间)
661659* 映射列:DATA 参数的所有输入列
662660
663- ##### 使用示例
661+ #### 3.6.5 使用示例
664662
665663``` sql
666664IoTDB> SELECT * FROM CUMULATE(DATA => bid,TIMECOL => ' time' ,STEP => 2m,SIZE => 10m);
0 commit comments