ekuiper 数据写入tdengine动态表的问题

{
“id”: “202312281146”,
“sql”: “SELECT * FROM http_pm”,
“name”: “push_pm”,
“actions”: [
{
“tdengine”: {
“dataTemplate”: “{"{{.code}}":{{.value}},"tableName":"{{.devId}}","time":{{.time}},"project":"10086"}”,
“sendSingle”: true,
“provideTs”: true,
“tsFieldName”: “time”,
“port”: 6030,
“host”: “tdengine”,
“database”: “iot_test”,
“table”: “t_{{.tableName}}”,
“sTable”: “iot_st”,
“tagFields”: [
“project”
]
}
}
]
}

数据流经过dataTemplate → dataField → fields → 结果 。而 ekuiper会根据 最终结果的字段做为tdengine的表字段,上面会根据超级表自动创建普通表,但是我表里面是没有tableName这个字段的,动态表名又必须要有这个tableName 的,


普通表中是没有project字段的,这个字段是超级表的字段,tableName这个字段是表里没有的,只不过是为了动态表明。

配置了dataTemplate的话,table哪里动态表明也不能够再取http_pm流里面的字段了,只能取dataTemplate 后的数据结果。
所以这种动态表名需要咋配置。

dataTemplate 可以加任何你需要的东西啊,常数更简单了。 {“tablename”:“fixedTable”}

我想我可能没说清楚吧,
在上面的例子中,sql是这样的格式,“sql”: “SELECT code,value,time,devId FROM http_pm”, ekuiper需要根据devId创建普通表,所以配置的table应该是 “table”: “t_{{.devId }}”,
但是我配置了 dataTemplate, “t_{{.devId }}”就取不到值了,因为 dataTemplate中的key是tableName,所以tdegine的动态表改成“table”: “t_{{.tableName}}”这样。
但是dataTemplate 中配置的key值(除了时间)应该是都会做为tdengine普通表的列吧。但是我的tdengine普通表中不会有tableName 或者 devId这个列,普通表的列只有dataTemplate中 {{.code}}和time这几个列

INSERT INTO t_6622113ac (time,tableName,project,pm2_5) using iot_st tags ("") values (1703751179428,"6622113ac","",19)
这是ekuiper日志中的sql,ekuiper会吧dataTemplate中所有的key都做为tdegine表的列。

如果 动态表配置成这样 “table”: “t_{{.devId}}”, 又取不到值
INSERT INTO t_ (time,pm2_5,tableName,project) using iot_st tags ("") values (1703751179428,19,"","")

写入的列可以通过 fields 属性配置,Sink | eKuiper 文档
另外,我看你的模板,其实也可以不用。直接在 SQL 里配。SELECT object_construct(code, value), devId as tableName, time, "10086" as project FROM http_pm