Skip to content

定制函数

eKuiper 可以定制函数,函数的开发、编译及使用请参见这里

echo 插件

函数示例说明
echoecho(avg)原样输出参数值

echo(avg) 示例

  • 假设 avg 类型为 int ,值为30, 则结果为: [{"r1":30}]

    sql
    SELECT echo(avg) as r1 FROM test;

countPlusOne 插件

函数示例说明
countPlusOnecountPlusOne(avg)输出参数长度加一的值

countPlusOne(avg) 示例

  • 假设 avg 类型为 []int ,值为[1,2,3], 则结果为: [{"r1":4}]

    sql
    SELECT countPlusOne(avg) as r1 FROM test;

accumulateWordCount 插件

函数示例说明
accumulateWordCountaccumulateWordCount(avg,sep)函数统计一共有多少个单词

accumulateWordCount(avg,sep) 示例

  • 假设 avg 类型为 string ,值为 My name is Bob;sep 类型为 string ,值为空格,则结果为: [{"r1":4}]

    sql
    SELECT accumulateWordCount(avg,sep) as r1 FROM test;

图像处理插件

图像处理目前暂时只支持 pngjpeg 格式

函数示例说明
resizeresize(avg, width, height, [isRaw])创建具有新尺寸(宽度,高度)的缩放图像。如果 width 或 height 设置为0,则将其设置为长宽比保留值。isRaw 为可选参数,用于指定是否输出原始未编码数据,常用于 AI 模型推理中。
thumbnailthumbnail(avg,maxWidth, maxHeight)将保留宽高比的图像缩小到最大尺寸(maxWidth,maxHeight)。

resize(avg,width, height)示例

  • 其中 avg 类型为 []byte 。

    sql
    SELECT resize(avg,width,height) as r1 FROM test;

thumbnail(avg,maxWidth, maxHeight)示例

  • 其中 avg 类型为 []byte。

    sql
    SELECT countPlusOne(avg,maxWidth, maxHeight) as r1 FROM test;

Geohash 插件

函数示例说明
geohashEncodegeohashEncode(la,lo float64)(string)将经纬度编码为字符串
geohashEncodeIntgeohashEncodeInt(la,lo float64)(uint64)将经纬度编码为无类型整数
geohashDecodegeohashDecode(hash string)(la,lo float64)将字符串解码为经纬度
geohashDecodeIntgeohashDecodeInt(hash uint64)(la,lo float64)将无类型整数解码为经纬度
geohashBoundingBoxgeohashBoundingBox(hash string)(string)返回字符串编码的区域
geohashBoundingBoxIntgeohashBoundingBoxInt(hash uint64)(string)返回无类型整数编码的区域
geohashNeighborgeohashNeighbor(hash string,direction string)(string)返回一个字符串对应方向上的邻居(方向列表:North NorthEast East SouthEast South SouthWest West NorthWest)
geohashNeighborIntgeohashNeighborInt(hash uint64,direction string)(uint64)返回一个无类型整数对应方向上的邻居(方向列表:North NorthEast East SouthEast South SouthWest West NorthWest)
geohashNeighborsgeohashNeighbors(hash string)([]string)返回一个字符串的所有邻居
geohashNeighborsIntgeohashNeighborsInt(hash uint64)([]uint64)返回一个无类型整数的所有邻居

geohashEncode 示例

  • 输入:{"lo" :131.036192,"la":-25.345457}
  • 输出:{"geohashEncode":"qgmpvf18h86e"}
sql
SELECT geohashEncode(la,lo) FROM test

geohashEncodeInt 示例

  • 输入:{"lo" :131.036192,"la":-25.345457}
  • 输出:{"geohashEncodeInt":12963433097944239317}
sql
SELECT geohashEncodeInt(la,lo) FROM test

geohashDecode 示例

  • 输入:{"hash" :"qgmpvf18h86e"}
  • 输出:{"geohashDecode":{"Longitude":131.036192,"Latitude":-25.345457099999997}}
sql
SELECT geohashDecode(hash) FROM test

geohashDecodeInt 示例

  • 输入:{"hash" :12963433097944239317}
  • 输出:{"geohashDecodeInt":{"Longitude":131.03618861,"Latitude":-25.345456300000002}}
sql
SELECT geohashDecodeInt(hash) FROM test

geohashBoundingBox 示例

  • 输入:{"hash" :"qgmpvf18h86e"}
  • 输出:{"geohashBoundingBox":{"MinLat":-25.345457140356302,"MaxLat":-25.34545697271824,"MinLng":131.03619195520878,"MaxLng":131.0361922904849}}
sql
SELECT geohashBoundingBox(hash) FROM test

geohashBoundingBoxInt 示例

  • 输入:{"hash" :12963433097944239317}
  • 输出:{"geohashBoundingBoxInt":{"MinLat":-25.345456302165985,"MaxLat":-25.34545626025647,"MinLng":131.0361886024475,"MaxLng":131.03618868626654}}
sql
SELECT geohashBoundingBoxInt(hash) FROM test

geohashNeighbor 示例

  • 输入:{"hash" :"qgmpvf18h86e","direction":"North"}
  • 输出:{"geohashNeighbor":"qgmpvf18h86s"}
sql
SELECT geohashNeighbor(hash,direction) FROM test

geohashNeighborInt 示例

  • 输入:{"hash" :12963433097944239317,"direction":"North"}
  • 输出:{"geohashNeighborInt":12963433097944240129}
sql
SELECT geohashNeighborInt(hash,direction) FROM test

geohashNeighbors 示例

  • 输入:{"hash" :12963433097944239317}
  • 输出:{"geohashNeighbors":["qgmpvf18h86s","qgmpvf18h86u","qgmpvf18h86g","qgmpvf18h86f","qgmpvf18h86d","qgmpvf18h866","qgmpvf18h867","qgmpvf18h86k"]}
sql
SELECT geohashNeighbors(hash) FROM test

geohashNeighborsInt 示例

  • 输入: {"hash" :"qgmpvf18h86e","neber":"North"}
  • 输出:{"geohashNeighborsInt":[12963433097944240129,12963433097944240131,12963433097944240130,12963433097944237399,12963433097944237397,12963433097944150015,12963433097944152746,12963433097944152747]}
sql
SELECT geohashNeighborsInt(hash) FROM test

LabelImage plugin

该插件(只能用在有 slim 后缀的 docker image 中)为展示使用 TensorFlowLite 模型的示例插件。此函数接收一个以 bytea 类型表示的图像的输入,输出该图像的根据 tflite 模型计算的标示。

如下 SQL 中,假设输入为 peacock.jpg 文件的二进制流,则输出为字符串 “peacock”。

sql
SELECT labelImage(self) FROM tfdemo

tfLite 插件

该插件(只能用在有 slim 后缀的 docker image 中)用于执行 TensorFlow Lite 推理。用户只需上传 .tflite 模型,在 sql 中调用 tfLite(model_name, input_data) 函数,即可收到模型推理的结果。 上传模型时请使用 uploads 接口将模型文件上传即可。 函数调用时 model_name 参数为不带 .tflite 后缀的模型名称。 input_data 应该是消息中的 key 字段,对应的值应该是一维数组格式

sql
SELECT tfLite(model_name, input_data) FROM tfdemo