指定数据类型
问题 1
IoTDB 通过 tools/import-data.sh 导入数据时,发现默认推断类型配置没有生效,请问是什么原因?
现象
解决方案
通过 tools/import-data.sh 命令导入数据时,需要指定 -typeInfer 参数,用于指定类型推断规则,如:<srcTsDataType1=dstTsDataType1,srcTsDataType2=dstTsDataType2,…>
- srcTsDataType 包括 boolean,int,long,float,double,NaN;
- dstTsDataType 包括 boolean,int,long,float,double,text;
- 当 srcTsDataType 为 boolean,dstTsDataType 只能为 boolean 或 text;
- 当 srcTsDataType 为 NaN, dstTsDataType 只能为 float, double 或 text;
- 当 srcTsDataType 为数值类型, dstTsDataType 的精度需要高于 srcTsDataType。
设置举例:-typeInfer boolean=text,float=double。
数据小数点位数是否影响查询性能
问题 2
存 double 型数据,截短保留 2 位小数和不截短,在查询效率和速度上有没有区别?
回答
没有,double 的长度和小数位数没太大关系。
升级后数据转换问题
问题 3
上面的查询在 1.0 版本是没问题的,1.3.2 版本就提示转换错误,这个可以设置吗,还是新版本只能这样转换?
回答
这个是因为尝试将字符串 ‘bad’ 转成 float 时出错了。
也可用正则表达式替换处理:
select avg(cast(regexreplace(v, 'regex'='^[A-Za-z]+$', 'replace'='1', 'limit'='2'), 'type'='FLOAT')) as V,
avg(cast(regexreplace(v1, "regex"="^[A-Za-z]+$", "replace"="0", "limit"="1"), 'type'='FLOAT')) as V1 from root.ln.d2 where time>=2024-11-20 00:00:00 and time<=2024-11-26 00:00:00 group by ([2024-11-20T00:00:00,2024-11-26T00:00:00 ),1d)