一、该问题的重现步骤是什么?
1.
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。



表属性有这个字段,但是数据表没有



物模型配置:1、创建属性、2、发布属性、3、时序库表结构存在、4、表内没有这个字段


把他删掉换成 iot_device_name 看看能不能正常
可以的哦,是跟原生冲突么


是的,device_name、product_key这几个算是系统级别的字段了,最好避开,如果需要自用的话,给他加个前缀就行。
我想问下,物模型能不能做选择,譬如机器上传了20个字段上来,我时序库只想要其中10个字段,我物模型只要设置想要的10个字段也能保存成功,问题现在是机器上传多少,我物模型就要创建多少,有多余的字段不想要怎么弄???我们机器设定的字段发去客户那里了。要改的话需要OTA,这是比较麻烦的。所以针对这种实际情况需要怎么处置比较好??
1、痛点:机器上传20个字段,我只要10个,我模型设置10个,但是会提示缺失字段插入失败
2、想要:上传20个字段,我模型设置了10个,broker写入时序库的时候要做兼容,只插入我模型设定的10个字段。
3、我记得以前是可以的,现在改版后不行
现在我缺失了这个字段,导致我插入不进去,设备在客户现场不好ota,

以前可以是因为用了influxdb,上报数据的时候多了字段influxdb会自动创建,如果现在用influxdb也会自动建。
现在不行是因为用的tdengine,他有一个超级表的限制,超级表设定了属性后,上报了多余的字段,tdengine本身就会直接报错了。
如果用td,也想解决这个问题,就需要改源码,在写入td之前遍历物模型缓存,只保留物模型内的字段,其他多余的都删掉,然后再入时序库。但是这样带来的问题是高并发情况下,性能降低不少,所以我们没有支持这个逻辑。
具体用哪种方案看你们自己选择了。
如果用这种方案的话,怎么修改呢?代码块在哪?
####就需要改源码,在写入td之前遍历物模型缓存,只保留物模型内的字段,其他多余的都删掉,然后再入时序库。但是这样带来的问题是高并发情况下,性能降低不少,所以我们没有支持这个逻辑。#####
注入 ITslCacheService ,使用 Map<String, String> dataTypeMap = tslCacheService.getTslPropertyDataTypeMap(productKey); 获得物模型缓存,然后再对传入的param参数进行比对,把param里不存在缓存里的key删掉就行了。接着传入后续的方法里进行入库操作
你好,你这个能否做成开关,如果要兼容就根据客户自己需求做开关
可以这里先发个issue:https://center.javablade.com/blade/BladeX-Links/issues ,把你的这个需求详细描述下,等后续看排期安排
扫一扫访问 Blade技术社区 移动端