You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by le...@apache.org on 2023/07/26 12:30:38 UTC
[iotdb-docs] branch rl updated: finish Operators-Functions Overview
This is an automated email from the ASF dual-hosted git repository.
leirui pushed a commit to branch rl
in repository https://gitbox.apache.org/repos/asf/iotdb-docs.git
The following commit(s) were added to refs/heads/rl by this push:
new 094a456 finish Operators-Functions Overview
094a456 is described below
commit 094a456bd897d172ee04b8d9a6f9f1e7b769f445
Author: Lei Rui <10...@qq.com>
AuthorDate: Wed Jul 26 20:30:23 2023 +0800
finish Operators-Functions Overview
---
.../Master/Operators-Functions/Conditional.md | 36 +++----
.../Master/Operators-Functions/Overview.md | 8 ++
.../Master/Operators-Functions/Conditional.md | 40 ++++---
.../Master/Operators-Functions/Overview.md | 117 +++++++++++----------
.../Master/Operators-Functions/Variation-Trend.md | 19 ++--
5 files changed, 111 insertions(+), 109 deletions(-)
diff --git a/src/UserGuide/Master/Operators-Functions/Conditional.md b/src/UserGuide/Master/Operators-Functions/Conditional.md
index 1e426c4..daa16ea 100644
--- a/src/UserGuide/Master/Operators-Functions/Conditional.md
+++ b/src/UserGuide/Master/Operators-Functions/Conditional.md
@@ -19,11 +19,9 @@
-->
-## Conditional Expressions
+# Conditional Expressions
-### CASE
-
-#### Introduction
+## CASE
The CASE expression is a kind of conditional expression that can be used to return different values based on specific conditions, similar to the if-else statements in other languages.
@@ -38,7 +36,7 @@ The CASE expression is a scalar operation that can be used in combination with a
In the following text, all THEN parts and ELSE clauses will be collectively referred to as result clauses.
-#### Syntax
+### Syntax
The CASE expression supports two formats.
@@ -80,7 +78,7 @@ If none of the conditions are true, or if none of the `whenValue`s match the `ca
If there is no ELSE clause, `null` will be returned.
-#### Notes
+### Notes
- In format 1, all WHEN clauses must return a BOOLEAN type.
- In format 2, all WHEN clauses must be able to be compared to the CASE clause.
@@ -94,9 +92,9 @@ If there is no ELSE clause, `null` will be returned.
- Aggregate functions cannot be used within a CASE expression, but the result of a CASE expression can be used as input for an aggregate function.
- When using the CLI, because the CASE expression string can be lengthy, it is recommended to provide an alias for the expression using AS.
-#### Using Examples
+### Using Examples
-##### Example 1
+#### Example 1
The CASE expression can be used to analyze data in a visual way. For example:
- The preparation of a certain chemical product requires that the temperature and pressure be within specific ranges.
@@ -142,7 +140,7 @@ output:
```
-##### Example 2
+#### Example 2
The CASE expression can achieve flexible result transformation, such as converting strings with a certain pattern to other strings.
@@ -178,9 +176,9 @@ output:
+-----------------------------+--------------+------------+
```
-##### Example 3: work with aggregation functions
+#### Example 3: work with aggregation functions
-###### valid: aggregation function ← CASE expression
+##### Valid: aggregation function ← CASE expression
The CASE expression can be used as a parameter for aggregate functions. For example, used in conjunction with the COUNT function, it can implement statistics based on multiple conditions simultaneously.
@@ -223,7 +221,7 @@ output:
+------+-----+-----+------+
```
-###### invalid: CASE expression ← aggregation function
+##### Invalid: CASE expression ← aggregation function
Using aggregation function in CASE expression is not supported
@@ -237,7 +235,7 @@ output:
Msg: 701: Raw data and aggregation result hybrid calculation is not supported.
```
-##### Example 4: kind 2
+#### Example 4: kind 2
Here is a simple example that uses the format 2 syntax.
If all conditions are equality tests, it is recommended to use format 2 to simplify SQL statements.
@@ -272,13 +270,13 @@ output:
+-----------------------------+------------+-----------------------------------------------------------------------------------+
```
-##### Example 5: type of return clauses
+#### Example 5: type of return clauses
The result clause of a CASE expression needs to satisfy certain type restrictions.
In this example, we continue to use the data from Example 4.
-###### Invalid: BOOLEAN cannot coexist with other types
+##### Invalid: BOOLEAN cannot coexist with other types
SQL statements:
```sql
@@ -290,7 +288,7 @@ output:
Msg: 701: CASE expression: BOOLEAN and other types cannot exist at same time
```
-###### Valid: Only BOOLEAN type exists
+##### Valid: Only BOOLEAN type exists
SQL statements:
```sql
@@ -309,7 +307,7 @@ output:
+-----------------------------+------------+------+
```
-###### Invalid:TEXT cannot coexist with other types
+##### Invalid:TEXT cannot coexist with other types
SQL statements:
```sql
@@ -321,11 +319,11 @@ output:
Msg: 701: CASE expression: TEXT and other types cannot exist at same time
```
-###### Valid: Only TEXT type exists
+##### Valid: Only TEXT type exists
See in Example 1.
-###### Valid: Numerical types coexist
+##### Valid: Numerical types coexist
SQL statements:
```sql
diff --git a/src/UserGuide/Master/Operators-Functions/Overview.md b/src/UserGuide/Master/Operators-Functions/Overview.md
index d0eb4ce..40b662c 100644
--- a/src/UserGuide/Master/Operators-Functions/Overview.md
+++ b/src/UserGuide/Master/Operators-Functions/Overview.md
@@ -236,6 +236,14 @@ For details and examples, see the document [Variation Trend Calculation Function
For details and examples, see the document [Sample Functions](./Sample.md).
+## Conditional Expressions
+
+| Expression Name | Description |
+| --------------- | -------------------- |
+| `CASE` | similar to "if else" |
+
+For details and examples, see the document [Conditional Expressions](./Conditional.md).
+
## Data Quality Function Library
### About
diff --git a/src/zh/UserGuide/Master/Operators-Functions/Conditional.md b/src/zh/UserGuide/Master/Operators-Functions/Conditional.md
index abeb262..0d1508c 100644
--- a/src/zh/UserGuide/Master/Operators-Functions/Conditional.md
+++ b/src/zh/UserGuide/Master/Operators-Functions/Conditional.md
@@ -19,11 +19,9 @@
-->
-## 条件表达式
+# 条件表达式
-### CASE
-
-#### 介绍
+## CASE
CASE表达式是一种条件表达式,可用于根据特定条件返回不同的值,功能类似于其它语言中的if-else。
CASE表达式由以下部分组成:
@@ -33,10 +31,10 @@ CASE表达式由以下部分组成:
- END关键字:表示结束CASE表达式。
CASE表达式是一种标量运算,可以配合任何其它的标量运算或聚合函数使用。
-
+
下文把所有THEN部分和ELSE子句并称为结果子句。
-#### 语法示例
+### 语法示例
CASE表达式支持两种格式。
@@ -76,7 +74,7 @@ CASE表达式支持两种格式。
如果格式1中的condition均不为真,或格式2中均不满足caseVaule=whenValue,则返回ELSE子句中的expression_end;不存在ELSE子句则返回null。
-#### 注意事项
+### 注意事项
- 格式1中,所有WHEN子句必须返回BOOLEAN类型。
- 格式2中,所有WHEN子句必须能够与CASE子句进行判等。
@@ -89,9 +87,9 @@ CASE表达式支持两种格式。
- CASE表达式内部不能存在聚合函数,但CASE表达式的结果可以提供给聚合函数。
- 使用CLI时,由于CASE表达式字符串较长,推荐用as为表达式提供别名。
-#### 使用示例
+### 使用示例
-##### 示例1
+#### 示例1
CASE表达式可对数据进行直观地分析,例如:
@@ -99,7 +97,7 @@ CASE表达式可对数据进行直观地分析,例如:
- 在制备过程中传感器会侦测温度和压力,在iotdb中形成T(temperature)和P(pressure)两个时间序列
这种应用场景下,CASE表达式可以指出哪些时间的参数是合适的,哪些时间的参数不合适,以及为什么不合适。
-
+
数据:
```sql
IoTDB> select * from root.test1
@@ -139,7 +137,7 @@ from root.test1
```
-##### 示例2
+#### 示例2
CASE表达式可实现结果的自由转换,例如将具有某种模式的字符串转换成另一种字符串。
@@ -175,9 +173,9 @@ from root.test2
+-----------------------------+--------------+------------+
```
-##### 示例3:搭配聚合函数
+#### 示例3:搭配聚合函数
-###### 合法:聚合函数←CASE表达式
+##### 合法:聚合函数←CASE表达式
CASE表达式可作为聚合函数的参数。例如,与聚合函数COUNT搭配,可实现同时按多个条件进行数据统计。
@@ -220,7 +218,7 @@ from root.test3
+------+-----+-----+------+
```
-###### 非法:CASE表达式←聚合函数
+##### 非法:CASE表达式←聚合函数
不支持在CASE表达式内部使用聚合函数。
@@ -234,7 +232,7 @@ select case when x<=1 then avg(x) else sum(x) end from root.test3
Msg: 701: Raw data and aggregation result hybrid calculation is not supported.
```
-##### 示例4:格式2
+#### 示例4:格式2
一个使用格式2的简单例子。如果所有条件都为判等,则推荐使用格式2,以简化SQL语句。
@@ -268,13 +266,13 @@ select x, case x when 1 then "one" when 2 then "two" else "other" end from root.
+-----------------------------+------------+-----------------------------------------------------------------------------------+
```
-##### 示例5:结果子句类型
+#### 示例5:结果子句类型
CASE表达式的结果子句的返回值需要满足一定的类型限制。
此示例中,继续使用示例4中的数据。
-###### 非法:BOOLEAN与其它类型共存
+##### 非法:BOOLEAN与其它类型共存
SQL语句:
```sql
@@ -286,7 +284,7 @@ select x, case x when 1 then true when 2 then 2 end from root.test4
Msg: 701: CASE expression: BOOLEAN and other types cannot exist at same time
```
-###### 合法:只存在BOOLEAN类型
+##### 合法:只存在BOOLEAN类型
SQL语句:
```sql
@@ -305,7 +303,7 @@ select x, case x when 1 then true when 2 then false end as `result` from root.te
+-----------------------------+------------+------+
```
-###### 非法:TEXT与其它类型共存
+##### 非法:TEXT与其它类型共存
SQL语句:
```sql
@@ -317,11 +315,11 @@ select x, case x when 1 then 1 when 2 then "str" end from root.test4
Msg: 701: CASE expression: TEXT and other types cannot exist at same time
```
-###### 合法:只存在TEXT类型
+##### 合法:只存在TEXT类型
见示例1。
-###### 合法:数值类型共存
+##### 合法:数值类型共存
SQL语句:
```sql
diff --git a/src/zh/UserGuide/Master/Operators-Functions/Overview.md b/src/zh/UserGuide/Master/Operators-Functions/Overview.md
index 7ed28cd..50d9a91 100644
--- a/src/zh/UserGuide/Master/Operators-Functions/Overview.md
+++ b/src/zh/UserGuide/Master/Operators-Functions/Overview.md
@@ -95,55 +95,58 @@ OR, |, ||
### 聚合函数
-| 函数名 | 功能描述 | 允许的输入类型 | 输出类型 |
-| ----------- | ------------------------------------------------------------ | ------------------------ | -------------- |
-| SUM | 求和。 | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| COUNT | 计算数据点数。 | 所有类型 | INT |
-| AVG | 求平均值。 | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| EXTREME | 求具有最大绝对值的值。如果正值和负值的最大绝对值相等,则返回正值。 | INT32 INT64 FLOAT DOUBLE | 与输入类型一致 |
-| MAX_VALUE | 求最大值。 | INT32 INT64 FLOAT DOUBLE | 与输入类型一致 |
-| MIN_VALUE | 求最小值。 | INT32 INT64 FLOAT DOUBLE | 与输入类型一致 |
-| FIRST_VALUE | 求时间戳最小的值。 | 所有类型 | 与输入类型一致 |
-| LAST_VALUE | 求时间戳最大的值。 | 所有类型 | 与输入类型一致 |
-| MAX_TIME | 求最大时间戳。 | 所有类型 | Timestamp |
-| MIN_TIME | 求最小时间戳。 | 所有类型 | Timestamp |
+| 函数名 | 功能描述 | 允许的输入类型 | 必要的属性参数 | 输出类型 |
+| ------------- | ------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------ | -------------- |
+| SUM | 求和。 | INT32 INT64 FLOAT DOUBLE | 无 | DOUBLE |
+| COUNT | 计算数据点数。 | 所有类型 | 无 | INT64 |
+| AVG | 求平均值。 | INT32 INT64 FLOAT DOUBLE | 无 | DOUBLE |
+| EXTREME | 求具有最大绝对值的值。如果正值和负值的最大绝对值相等,则返回正值。 | INT32 INT64 FLOAT DOUBLE | 无 | 与输入类型一致 |
+| MAX_VALUE | 求最大值。 | INT32 INT64 FLOAT DOUBLE | 无 | 与输入类型一致 |
+| MIN_VALUE | 求最小值。 | INT32 INT64 FLOAT DOUBLE | 无 | 与输入类型一致 |
+| FIRST_VALUE | 求时间戳最小的值。 | 所有类型 | 无 | 与输入类型一致 |
+| LAST_VALUE | 求时间戳最大的值。 | 所有类型 | 无 | 与输入类型一致 |
+| MAX_TIME | 求最大时间戳。 | 所有类型 | 无 | Timestamp |
+| MIN_TIME | 求最小时间戳。 | 所有类型 | 无 | Timestamp |
+| COUNT_IF | 求数据点连续满足某一给定条件,且满足条件的数据点个数(用keep表示)满足指定阈值的次数。 | BOOLEAN | `[keep >=/>/=/!=/</<=]threshold`:被指定的阈值或阈值条件,若只使用`threshold`则等价于`keep >= threshold`,`threshold`类型为`INT64` `ignoreNull`:可选,默认为`true`;为`true`表示忽略null值,即如果中间出现null值,直接忽略,不会打断连续性;为`false`表示不忽略null值,即如果中间出现null值,会打断连续性 | INT64 |
+| TIME_DURATION | 求某一列最大一个不为NULL的值所在时间戳与最小一个不为NULL的值所在时间戳的时间戳差 | 所有类型 | 无 | INT64 |
+| MODE | 求众数。注意: 1.输入序列的不同值个数过多时会有内存异常风险; 2.如果所有元素出现的频次相同,即没有众数,则返回对应时间戳最小的值; 3.如果有多个众数,则返回对应时间戳最小的众数。 | 所有类型 | 无 | 与输入类型一致 |
详细说明及示例见文档 [聚合函数](./Aggregation.md)。
### 数学函数
-| 函数名 | 输入序列类型 | 输出序列类型 | 必要属性参数 | Java 标准库中的对应实现 |
-| ------- | ------------------------------ | ------------------------ |----------------------------------------------|-------------------------------------------------------------------|
-| SIN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#sin(double) |
-| COS | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#cos(double) |
-| TAN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#tan(double) |
-| ASIN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#asin(double) |
-| ACOS | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#acos(double) |
-| ATAN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#atan(double) |
-| SINH | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#sinh(double) |
-| COSH | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#cosh(double) |
-| TANH | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#tanh(double) |
-| DEGREES | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#toDegrees(double) |
-| RADIANS | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#toRadians(double) |
-| ABS | INT32 / INT64 / FLOAT / DOUBLE | 与输入序列的实际类型一致 | | Math#abs(int) / Math#abs(long) /Math#abs(float) /Math#abs(double) |
-| SIGN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#signum(double) |
-| CEIL | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#ceil(double) |
-| FLOOR | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#floor(double) |
-| ROUND | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | `places`:四舍五入有效位数,正数为小数点后面的有效位数,负数为整数位的有效位数 | Math#rint(Math#pow(10,places))/Math#pow(10,places) |
-| EXP | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#exp(double) |
-| LN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#log(double) |
-| LOG10 | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#log10(double) |
-| SQRT | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#sqrt(double) |
+| 函数名 | 输入序列类型 | 输出序列类型 | 必要属性参数 | Java 标准库中的对应实现 |
+| ------- | ------------------------------ | ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
+| SIN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#sin(double) |
+| COS | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#cos(double) |
+| TAN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#tan(double) |
+| ASIN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#asin(double) |
+| ACOS | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#acos(double) |
+| ATAN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#atan(double) |
+| SINH | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#sinh(double) |
+| COSH | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#cosh(double) |
+| TANH | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#tanh(double) |
+| DEGREES | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#toDegrees(double) |
+| RADIANS | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#toRadians(double) |
+| ABS | INT32 / INT64 / FLOAT / DOUBLE | 与输入序列的实际类型一致 | | Math#abs(int) / Math#abs(long) /Math#abs(float) /Math#abs(double) |
+| SIGN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#signum(double) |
+| CEIL | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#ceil(double) |
+| FLOOR | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#floor(double) |
+| ROUND | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | `places`:四舍五入有效位数,正数为小数点后面的有效位数,负数为整数位的有效位数 | Math#rint(Math#pow(10,places))/Math#pow(10,places) |
+| EXP | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#exp(double) |
+| LN | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#log(double) |
+| LOG10 | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#log10(double) |
+| SQRT | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | | Math#sqrt(double) |
详细说明及示例见文档 [算数运算符和函数](./Mathematical.md)。
### 比较函数
-| 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 |
-|----------|--------------------------------|---------------------------------------|------------|--------------------------------------------------|
-| ON_OFF | INT32 / INT64 / FLOAT / DOUBLE | `threshold`:DOUBLE | BOOLEAN | 返回`ts_value >= threshold`的bool值 |
-| IN_RANGE | INT32 / INT64 / FLOAT / DOUBLE | `lower`:DOUBLE<br/>`upper`:DOUBLE | BOOLEAN | 返回`ts_value >= lower && ts_value <= upper`的bool值 | |
+| 函数名 | 可接收的输入序列类型 | 必要的属性参数 | 输出序列类型 | 功能类型 |
+| -------- | ------------------------------ | ------------------------------------- | ------------ | ---------------------------------------------------- |
+| ON_OFF | INT32 / INT64 / FLOAT / DOUBLE | `threshold`:DOUBLE类型 | BOOLEAN 类型 | 返回`ts_value >= threshold`的bool值 |
+| IN_RANGE | INT32 / INT64 / FLOAT / DOUBLE | `lower`:DOUBLE类型 `upper`:DOUBLE类型 | BOOLEAN类型 | 返回`ts_value >= lower && ts_value <= upper`的bool值 |
详细说明及示例见文档 [比较运算符和函数](./Comparison.md)。
@@ -179,7 +182,7 @@ OR, |, ||
| 函数名 | 必要的属性参数 | 输出序列类型 | 功能描述 |
| ------ | ------------------------------------------------------------ | -------------------------- | ------------------------------------------------------------ |
-| CONST | `value`: 输出的数据点的值 <br />`type`: 输出的数据点的类型,只能是 INT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXT | 由输入属性参数 `type` 决定 | 根据输入属性 `value` 和 `type` 输出用户指定的常序列。 |
+| CONST | `value`: 输出的数据点的值 `type`: 输出的数据点的类型,只能是 INT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXT | 由输入属性参数 `type` 决定 | 根据输入属性 `value` 和 `type` 输出用户指定的常序列。 |
| PI | 无 | DOUBLE | 常序列的值:`π` 的 `double` 值,圆的周长与其直径的比值,即圆周率,等于 *Java标准库* 中的`Math.PI`。 |
| E | 无 | DOUBLE | 常序列的值:`e` 的 `double` 值,自然对数的底,它等于 *Java 标准库* 中的 `Math.E`。 |
@@ -196,29 +199,25 @@ OR, |, ||
### 区间查询函数
-| 函数名 | 输入序列类型 | 属性参数 | 输出序列类型 | 功能描述 |
-|-------------------|--------------------------------------|------------------------------------------------|-------|------------------------------------------------------------------|
-| ZERO_DURATION | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值0<br>`max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续为0(false)的开始时间与持续时间,持续时间t(单位ms)满足`t >= min && t <= max` |
-| NON_ZERO_DURATION | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值0<br>`max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续不为0(false)的开始时间与持续时间,持续时间t(单位ms)满足`t >= min && t <= max` | |
-| ZERO_COUNT | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值1<br>`max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续为0(false)的开始时间与其后数据点的个数,数据点个数n满足`n >= min && n <= max` | |
-| NON_ZERO_COUNT | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值1<br>`max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续不为0(false)的开始时间与其后数据点的个数,数据点个数n满足`n >= min && n <= max` | |
+| 函数名 | 输入序列类型 | 属性参数 | 输出序列类型 | 功能描述 |
+| ----------------- | ------------------------------------ | ------------------------------------------------------ | ------------ | ------------------------------------------------------------ |
+| ZERO_DURATION | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值0 `max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续为0(false)的开始时间与持续时间,持续时间t(单位ms)满足`t >= min && t <= max` |
+| NON_ZERO_DURATION | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值0 `max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续不为0(false)的开始时间与持续时间,持续时间t(单位ms)满足`t >= min && t <= max` |
+| ZERO_COUNT | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值1 `max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续为0(false)的开始时间与其后数据点的个数,数据点个数n满足`n >= min && n <= max` |
+| NON_ZERO_COUNT | INT32/ INT64/ FLOAT/ DOUBLE/ BOOLEAN | `min`:可选,默认值1 `max`:可选,默认值`Long.MAX_VALUE` | Long | 返回时间序列连续不为0(false)的开始时间与其后数据点的个数,数据点个数n满足`n >= min && n <= max` |
详细说明及示例见文档 [区间查询函数](./Continuous-Interval.md)。
### 趋势计算函数
-| 函数名 | 输入序列类型 | 输出序列类型 | 功能描述 |
-| ----------------------- | ----------------------------------------------- | ------------------------ | ------------------------------------------------------------ |
-| TIME_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXT | INT64 | 统计序列中某数据点的时间戳与前一数据点时间戳的差。范围内第一个数据点没有对应的结果输出。 |
-| DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差。范围内第一个数据点没有对应的结果输出。 |
-| NON_NEGATIVE_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差的绝对值。范围内第一个数据点没有对应的结果输出。 |
-| DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率,数量上等同于 DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
-| NON_NEGATIVE_DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率的绝对值,数量上等同于 NON_NEGATIVE_DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
-
-
-| 函数名 | 输入序列类型 | 参数 | 输出序列类型 | 功能描述 |
-|------|--------------------------------|------------------------------------------------------------------------------------------------------------------------|--------|------------------------------------------------|
-| DIFF | INT32 / INT64 / FLOAT / DOUBLE | `ignoreNull`:可选,默认为true;为true时,前一个数据点值为null时,忽略该数据点继续向前找到第一个出现的不为null的值;为false时,如果前一个数据点为null,则不忽略,使用null进行相减,结果也为null | DOUBLE | 统计序列中某数据点的值与前一数据点的值的差。第一个数据点没有对应的结果输出,输出值为null |
+| 函数名 | 输入序列类型 | 属性参数 | 输出序列类型 | 功能描述 |
+| ----------------------- | ----------------------------------------------- | ------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------ |
+| TIME_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXT | 无 | INT64 | 统计序列中某数据点的时间戳与前一数据点时间戳的差。范围内第一个数据点没有对应的结果输出。 |
+| DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 无 | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差。范围内第一个数据点没有对应的结果输出。 |
+| NON_NEGATIVE_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 无 | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差的绝对值。范围内第一个数据点没有对应的结果输出。 |
+| DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | 无 | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率,数量上等同于 DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
+| NON_NEGATIVE_DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | 无 | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率的绝对值,数量上等同于 NON_NEGATIVE_DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
+| DIFF | INT32 / INT64 / FLOAT / DOUBLE | `ignoreNull`:可选,默认为true;为true时,前一个数据点值为null时,忽略该数据点继续向前找到第一个出现的不为null的值;为false时,如果前一个数据点为null,则不忽略,使用null进行相减,结果也为null | DOUBLE | 统计序列中某数据点的值与前一数据点的值的差。第一个数据点没有对应的结果输出,输出值为null |
详细说明及示例见文档 [趋势计算函数](./Variation-Trend.md)。
@@ -232,13 +231,15 @@ OR, |, ||
| EQUAL_SIZE_BUCKET_OUTLIER_SAMPLE | INT32 / INT64 / FLOAT / DOUBLE | `proportion`取值范围为`(0, 1]`,默认为`0.1`<br>`type`取值为`avg`或`stendis`或`cos`或`prenextdis`,默认为`avg`<br>`number`取值应大于0,默认`3`| INT32 / INT64 / FLOAT / DOUBLE | 返回符合采样比例和桶内采样个数的等分桶离群值采样 |
| M4 | INT32 / INT64 / FLOAT / DOUBLE | 包含固定点数的窗口和滑动时间窗口使用不同的属性参数。包含固定点数的窗口使用属性`windowSize`和`slidingStep`。滑动时间窗口使用属性`timeInterval`、`slidingStep`、`displayWindowBegin`和`displayWindowEnd`。更多细节见下文。 | INT32 / INT64 / FLOAT / DOUBLE | 返回每个窗口内的第一个点(`first`)、最后一个点(`last`)、最小值点(`bottom`)、最大值点(`top`)。在一个窗口内的聚合点输出之前,M4会将它们按照时间戳递增排序并且去重。 |
+详细说明及示例见文档 [采样函数](./Sample.md)。
+
## 条件表达式
| 表达式名称 | 含义 |
|---------------------------|-----------|
| `CASE` | 类似if else |
-详细说明及示例见文档 [条件表达式](./Conditional.md)
+详细说明及示例见文档 [条件表达式](./Conditional.md)。
## 数据质量函数库
diff --git a/src/zh/UserGuide/Master/Operators-Functions/Variation-Trend.md b/src/zh/UserGuide/Master/Operators-Functions/Variation-Trend.md
index 8b8d632..fc5c249 100644
--- a/src/zh/UserGuide/Master/Operators-Functions/Variation-Trend.md
+++ b/src/zh/UserGuide/Master/Operators-Functions/Variation-Trend.md
@@ -23,13 +23,14 @@
目前 IoTDB 支持如下趋势计算函数:
-| 函数名 | 输入序列类型 | 输出序列类型 | 功能描述 |
-| ----------------------- | ----------------------------------------------- | ------------------------ | ------------------------------------------------------------ |
-| TIME_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXT | INT64 | 统计序列中某数据点的时间戳与前一数据点时间戳的差。范围内第一个数据点没有对应的结果输出。 |
-| DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差。范围内第一个数据点没有对应的结果输出。 |
-| NON_NEGATIVE_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差的绝对值。范围内第一个数据点没有对应的结果输出。 |
-| DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率,数量上等同于 DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
-| NON_NEGATIVE_DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率的绝对值,数量上等同于 NON_NEGATIVE_DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
+| 函数名 | 输入序列类型 | 属性参数 | 输出序列类型 | 功能描述 |
+| ----------------------- | ----------------------------------------------- | ------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------ |
+| TIME_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXT | 无 | INT64 | 统计序列中某数据点的时间戳与前一数据点时间戳的差。范围内第一个数据点没有对应的结果输出。 |
+| DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 无 | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差。范围内第一个数据点没有对应的结果输出。 |
+| NON_NEGATIVE_DIFFERENCE | INT32 / INT64 / FLOAT / DOUBLE | 无 | 与输入序列的实际类型一致 | 统计序列中某数据点的值与前一数据点的值的差的绝对值。范围内第一个数据点没有对应的结果输出。 |
+| DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | 无 | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率,数量上等同于 DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
+| NON_NEGATIVE_DERIVATIVE | INT32 / INT64 / FLOAT / DOUBLE | 无 | DOUBLE | 统计序列中某数据点相对于前一数据点的变化率的绝对值,数量上等同于 NON_NEGATIVE_DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。 |
+| DIFF | INT32 / INT64 / FLOAT / DOUBLE | `ignoreNull`:可选,默认为true;为true时,前一个数据点值为null时,忽略该数据点继续向前找到第一个出现的不为null的值;为false时,如果前一个数据点为null,则不忽略,使用null进行相减,结果也为null | DOUBLE | 统计序列中某数据点的值与前一数据点的值的差。第一个数据点没有对应的结果输出,输出值为null |
例如:
@@ -53,10 +54,6 @@ Total line number = 5
It costs 0.014s
```
-| 函数名 | 输入序列类型 | 参数 | 输出序列类型 | 功能描述 |
-|------|--------------------------------|------------------------------------------------------------------------------------------------------------------------|--------|------------------------------------------------|
-| DIFF | INT32 / INT64 / FLOAT / DOUBLE | `ignoreNull`:可选,默认为true;为true时,前一个数据点值为null时,忽略该数据点继续向前找到第一个出现的不为null的值;为false时,如果前一个数据点为null,则不忽略,使用null进行相减,结果也为null | DOUBLE | 统计序列中某数据点的值与前一数据点的值的差。第一个数据点没有对应的结果输出,输出值为null |
-
#### 使用示例
##### 原始数据