Вот настройка:
Ведро: Эргометр
Измерение: данные велосипеда
Поле: импульсы
Тег: устройство (значения: Bike L, Bike M, Bike R)
Я проверил структуру данных в InfluxDB UI и показывает ожидаемые значения устройства. Однако мой запрос на Java всегда не возвращает результатов.
Мой код:
Код: Выделить всё
@Component
public class BikeDataQuery {
private static final Logger logger = LoggerFactory.getLogger(BikeDataQuery.class);
private static final String BUCKET_NAME = "Ergometer";
private static final String MEASUREMENT_NAME = "bike_data";
private final InfluxDBClient influxDBClient;
@Autowired
public BikeDataQuery(InfluxDBConnector influxDBConnector) {
this.influxDBClient = influxDBConnector.buildConnection(
"url placeholder",
"placeholder for token",
BUCKET_NAME,
"Software Engineering"
);
}
public List getAvailableDevices() {
QueryApi queryApi = influxDBClient.getQueryApi();
// Query to fetch distinct devices
String query = String.format(
"from(bucket: \"%s\") " +
"|> range(start: -30d) " + // Querying the last 30 days
"|> filter(fn: (r) => r[\"_measurement\"] == \"%s\") " +
"|> distinct(column: \"device\")",
BUCKET_NAME, MEASUREMENT_NAME
);
logger.info("Executing device query: {}", query);
List devices = new ArrayList();
try {
queryApi.query(query, (cancellable, fluxRecord) -> {
if (fluxRecord != null) {
logger.debug("FluxRecord: {}", fluxRecord);
String device = (String) fluxRecord.getValueByKey("_value");
if (device != null && !devices.contains(device)) {
devices.add(device);
}
}
});
} catch (Exception e) {
logger.error("Error executing device query: {}", query, e);
}
if (devices.isEmpty()) {
logger.warn("No devices found in the query result.");
} else {
logger.info("Found {} devices: {}", devices.size(), devices);
}
return devices;
}
}

Подробнее здесь: https://stackoverflow.com/questions/792 ... surement-a