集成-规则-创建规则-sql编辑器 写的jqsql和selectsql过滤的结果是不同的,并且差别很大,目前测试采用的是开源版本。我理解select查询出来的更符合sql的语法特性,也是正确的。
-
首先你看到的
_v_fun_*
这种的输出是因为你没有给定 alias, 所以 SQL 语句自己生成了一个随机 alias 当做 key 组成 SQL 的输出。你可以给他一个 alias:SELECT jq('.', payload) as jqresult FROM "jq_demo"
-
然后 jq 函数的输出是个数组,一般情况下你需要使用
nth
函数从中获取第一个元素:
SELECT nth(1, jq('.', payload)) as jqresult FROM "jq_demo"
-
最后 FOREACH 语法用来对数组里的每一个元素都执行一遍动作,如果不是这个目的,需要使用 SELECT。
非常感谢!
的确如你所说的那样
查询语句:
SELECT
jq(‘.’,payload) as target_item
FROM “jq_demo/complex_rule/jq/”
查询结果:
{
“target_item”: [{
“properties”: {
“msg”: “hello”
},
“deviceId”: “test_product_emqx_device”
}]
}