首页 > 解决方案 > 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_timeprogress_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上找到

我错过了什么还是我完全理解错了?任何帮助深表感谢。

标签: javainfluxdb

解决方案


推荐阅读