运算符和函数

    可以使用 显示所有可用函数的列表,包括内置函数和自定义函数。

    关于运算符和函数在 SQL 中的行为,可以查看文档 选择表达式

    详细说明及示例见文档 。

    比较运算符

    运算符含义
    >大于
    >=大于等于
    <小于
    <=小于等于
    ==等于
    != / <>不等于
    BETWEEN … AND …在指定范围内
    NOT BETWEEN … AND …不在指定范围内
    LIKE匹配简单模式
    NOT LIKE无法匹配简单模式
    REGEXP匹配正则表达式
    NOT REGEXP无法匹配正则表达式
    IS NULL是空值
    IS NOT NULL不是空值
    IN / CONTAINS是指定列表中的值
    NOT IN / NOT CONTAINS不是指定列表中的值

    详细说明及示例见文档 。

    逻辑运算符

    运算符含义
    NOT / !取非(单目)
    AND / & / &&逻辑与
    OR/ | / ||逻辑或

    详细说明及示例见文档 。

    运算符优先级

    列表中的函数无须注册即可在 IoTDB 中使用,数据函数质量库中的函数需要参考注册步骤进行注册后才能使用。

    函数名功能描述允许的输入类型输出类型
    SUM求和。INT32 INT64 FLOAT DOUBLEDOUBLE
    COUNT计算数据点数。所有类型INT
    AVG求平均值。INT32 INT64 FLOAT DOUBLEDOUBLE
    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
    详细说明及示例见文档 。

    数学函数

    详细说明及示例见文档 。

    比较函数

    函数名可接收的输入序列类型必要的属性参数输出序列类型功能类型
    ON_OFFINT32 / INT64 / FLOAT / DOUBLEthreshold:DOUBLEBOOLEAN返回ts_value >= threshold的bool值
    IN_RANGEINT32 / INT64 / FLOAT / DOUBLElower:DOUBLE
    upper:DOUBLE
    BOOLEAN返回ts_value >= lower && ts_value <= upper的bool值

    详细说明及示例见文档 。

    字符串处理函数

    函数名输入序列类型必要的属性参数输出序列类型功能描述
    STRING_CONTAINSTEXTs: 待搜寻的字符串BOOLEAN判断字符串中是否存在s
    STRING_MATCHESTEXTregex: Java 标准库风格的正则表达式BOOLEAN判断字符串是否能够被正则表达式regex匹配
    LENGTHTEXTINT32返回字符串的长度
    LOCATETEXTtarget: 需要被定位的子串
    reverse: 指定是否需要倒序定位,默认值为false, 即从左至右定位
    INT32获取target子串第一次出现在输入序列的位置,如果输入序列中不包含则返回 -1
    STARTSWITHTEXTtarget: 需要匹配的前缀BOOLEAN判断字符串是否有指定前缀
    ENDSWITHTEXTtarget: 需要匹配的后缀BOOLEAN判断字符串是否有指定后缀
    CONCATTEXTtargets: 一系列 K-V, key需要以target为前缀且不重复, value是待拼接的字符串。
    series_behind: 指定拼接时时间序列是否在后面,默认为false
    TEXT拼接字符串和target字串
    SUBSTRTEXTstart: 指定子串开始下标
    end: 指定子串结束下标
    TEXT获取下标从startend - 1的子串
    UPPERTEXTTEXT将字符串转化为大写
    LOWERTEXTTEXT将字符串转化为小写
    TRIMTEXTTEXT移除字符串前后的空格
    STRCMPTEXTTEXT用于比较两个输入序列,如果值相同返回 0 , 序列1的值小于序列2的值返回一个负数,序列1的值大于序列2的值返回一个正数

    详细说明及示例见文档 。

    函数名必要的属性参数输出序列类型功能类型
    CASTtype:输出的数据点的类型,只能是 INT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXT由输入属性参数type决定将数据转换为type参数指定的类型。

    详细说明及示例见文档 。

    常序列生成函数

    选择函数

    函数名输入序列类型必要的属性参数输出序列类型功能描述
    TOP_KINT32 / INT64 / FLOAT / DOUBLE / TEXTk: 最多选择的数据点数,必须大于 0 小于等于 1000与输入序列的实际类型一致返回某时间序列中值最大的k个数据点。若多于k个数据点的值并列最大,则返回时间戳最小的数据点。
    BOTTOM_KINT32 / INT64 / FLOAT / DOUBLE / TEXTk: 最多选择的数据点数,必须大于 0 小于等于 1000与输入序列的实际类型一致返回某时间序列中值最小的k个数据点。若多于k个数据点的值并列最小,则返回时间戳最小的数据点。

    详细说明及示例见文档 选择函数

    区间查询函数

    函数名输入序列类型属性参数输出序列类型功能描述
    ZERO_DURATIONINT32/ INT64/ FLOAT/ DOUBLE/ BOOLEANmin:可选,默认值0
    max:可选,默认值Long.MAX_VALUE
    Long返回时间序列连续为0(false)的开始时间与持续时间,持续时间t(单位ms)满足t >= min && t <= max
    NON_ZERO_DURATIONINT32/ INT64/ FLOAT/ DOUBLE/ BOOLEANmin:可选,默认值0
    max:可选,默认值Long.MAX_VALUE
    Long返回时间序列连续不为0(false)的开始时间与持续时间,持续时间t(单位ms)满足t >= min && t <= max
    ZERO_COUNTINT32/ INT64/ FLOAT/ DOUBLE/ BOOLEANmin:可选,默认值1
    max:可选,默认值Long.MAX_VALUE
    Long返回时间序列连续为0(false)的开始时间与其后数据点的个数,数据点个数n满足
    NON_ZERO_COUNTINT32/ INT64/ FLOAT/ DOUBLE/ BOOLEANmin:可选,默认值1
    max:可选,默认值Long.MAX_VALUE
    Long返回时间序列连续不为0(false)的开始时间与其后数据点的个数,数据点个数n满足n >= min && n <= max

    详细说明及示例见文档 区间查询函数

    函数名输入序列类型输出序列类型功能描述
    TIME_DIFFERENCEINT32 / INT64 / FLOAT / DOUBLE / BOOLEAN / TEXTINT64统计序列中某数据点的时间戳与前一数据点时间戳的差。范围内第一个数据点没有对应的结果输出。
    DIFFERENCEINT32 / INT64 / FLOAT / DOUBLE与输入序列的实际类型一致统计序列中某数据点的值与前一数据点的值的差。范围内第一个数据点没有对应的结果输出。
    NON_NEGATIVE_DIFFERENCEINT32 / INT64 / FLOAT / DOUBLE与输入序列的实际类型一致统计序列中某数据点的值与前一数据点的值的差的绝对值。范围内第一个数据点没有对应的结果输出。
    DERIVATIVEINT32 / INT64 / FLOAT / DOUBLEDOUBLE统计序列中某数据点相对于前一数据点的变化率,数量上等同于 DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。
    NON_NEGATIVE_DERIVATIVEINT32 / INT64 / FLOAT / DOUBLEDOUBLE统计序列中某数据点相对于前一数据点的变化率的绝对值,数量上等同于 NON_NEGATIVE_DIFFERENCE / TIME_DIFFERENCE。范围内第一个数据点没有对应的结果输出。

    详细说明及示例见文档 趋势计算函数

    采样函数

    函数名可接收的输入序列类型必要的属性参数输出序列类型功能类型
    EQUAL_SIZE_BUCKET_RANDOM_SAMPLEINT32 / INT64 / FLOAT / DOUBLE降采样比例 proportion,取值范围为(0, 1],默认为0.1INT32 / INT64 / FLOAT / DOUBLE返回符合采样比例的等分桶随机采样
    EQUAL_SIZE_BUCKET_AGG_SAMPLEINT32 / INT64 / FLOAT / DOUBLEproportion取值范围为(0, 1],默认为0.1
    type:取值类型有avg, max, min, sum, extreme, variance, 默认为avg
    INT32 / INT64 / FLOAT / DOUBLE返回符合采样比例的等分桶聚合采样
    EQUAL_SIZE_BUCKET_M4_SAMPLEINT32 / INT64 / FLOAT / DOUBLEproportion取值范围为(0, 1],默认为0.1INT32 / INT64 / FLOAT / DOUBLE返回符合采样比例的等分桶M4采样
    EQUAL_SIZE_BUCKET_OUTLIER_SAMPLEINT32 / INT64 / FLOAT / DOUBLEproportion取值范围为(0, 1],默认为0.1
    type取值为avgstendiscosprenextdis,默认为avg
    number取值应大于0,默认3
    INT32 / INT64 / FLOAT / DOUBLE返回符合采样比例和桶内采样个数的等分桶离群值采样
    M4INT32 / INT64 / FLOAT / DOUBLE包含固定点数的窗口和滑动时间窗口使用不同的属性参数。包含固定点数的窗口使用属性windowSizeslidingStep。滑动时间窗口使用属性timeIntervalslidingStepdisplayWindowBegindisplayWindowEnd。更多细节见下文。INT32 / INT64 / FLOAT / DOUBLE返回每个窗口内的第一个点(first)、最后一个点(last)、最小值点(bottom)、最大值点(top)。在一个窗口内的聚合点输出之前,M4会将它们按照时间戳递增排序并且去重。

    对基于时序数据的应用而言,数据质量至关重要。基于用户自定义函数能力,IoTDB 提供了一系列关于数据质量的函数,包括数据画像、数据质量评估与修复等,能够满足工业领域对数据质量的需求。

    该函数库中的函数不是内置函数,使用前要先加载到系统中。 操作流程如下:

    1. 下载包含全部依赖的 jar 包和注册脚本 ;
    2. 将 jar 包复制到 IoTDB 程序目录的 ext\udf 目录下 (若您使用的是集群,请将jar包复制到所有DataNode的该目录下);
    3. 启动 IoTDB;