按字段类型删除数据:Flux转换float为integer遇类型冲突错误
解决InfluxDB字段类型冲突问题
你的mybucket中mymeasurement下的myindex字段同时存在float和integer两种类型,InfluxDB不允许同一字段名在同一measurement下存在多种数据类型,这就是你执行转换脚本时触发类型冲突错误的原因。
解决方案步骤:
1. 先清理float类型的myindex数据
执行以下Flux脚本删除所有float类型的目标数据(操作不可逆,建议先备份数据):
from(bucket: "mybucket") |> range(start: -1y) |> filter(fn: (r) => r._measurement == "mymeasurement") |> filter(fn: (r) => r._field == "myindex") |> filter(fn: (r) => typeOf(v: r._value) == "float") |> delete()
2. 转换并写入integer类型数据
清理完成后,再执行转换脚本将剩余数据统一为integer类型并写回:
from(bucket: "mybucket") |> range(start: -1y) |> filter(fn: (r) => r._measurement == "mymeasurement") |> filter(fn: (r) => r._field == "myindex") |> toInt() |> filter(fn: (r) => exists r._value) |> to(bucket: "mybucket", org: "你的组织名称")
注意把你的组织名称替换为实际的InfluxDB组织名。
3. 验证结果
执行SHOW FIELD KEYS命令确认字段类型已统一:
SHOW FIELD KEYS FROM "mymeasurement"
内容的提问来源于stack exchange,提问作者themadmax
相关产品推荐
相关产品推荐

