java - InfluxDB FluxResultMapper 未按 _fields 映射
问题描述
我正在尝试通过使用influxdb-client-java
并将结果映射到 POJO 从 InfluxDB 读取测量值。不幸的是,我正在为内部FluxResultMapper
的工作方式而苦苦挣扎。
当使用QueryApi
这样的
queryApi.query(fluxQueryString, POJO.class,
(cancellable, fluxRecord) -> {
LOG.info("progress: {}", fluxRecord.getProgress());
});
该方法FluxResultMapper::toPojo
应该进行映射。但是这个方法的实现只是映射标签,比如或jobId
不是实际的字段,比如它们的值identifier
_time
progress
_field
不需要这样的实现FluxResultMapper::toPojo
:
...
Map<String, Object> recordValues = record.getValues();
String col = null;
if (recordValues.containsKey(columnName)) {
col = columnName;
} else if (recordValues.containsKey("_" + columnName)) {
col = "_" + columnName;
// ISN'T SOMETHING LIKE THIS MISSING ???
} else if (recordValues.containsKey("_field") &&
recordValues.get("_field").equals(columnName)) {
col = "_value";
// END OF NEW
} else {
String columnNameInSnakeCase = this.camelCaseToSnakeCase(columnName);
if (recordValues.containsKey(columnNameInSnakeCase)) {
col = columnNameInSnakeCase;
}
...
原始代码(版本 3.1.0)可以在Github上找到
我错过了什么还是我完全理解错了?任何帮助深表感谢。
解决方案
推荐阅读
- f# - 如何在 F# 中使用 NPOI 逐行获取 .xls 数据
- python - 绘制/绘制此 csv 文件
- node.js - 使用 IntelliJ 2020 Ultimate 如何使用 nodejs 运行任何 Javascript 文件?
- javascript - 从 ajax 成功更改多个 HTML 元素
- java - 暴露节点类并在另一个类中保留对它的引用
- java - Objects.nonNull() 行为问题
- vue.js - 使用 v_for 而不使用 v-bind:key 如文档中所示?
- botframework - Microsoft Bot Framework Composer - 无法从按钮触发 Intent
- shell - 将 Shell 脚本的存储过程异常返回给调用者
- jenkins - 优雅地停止詹金斯的工作