From fc5c7a0dfd34413cf0608eac0e6c1cb3d138decf Mon Sep 17 00:00:00 2001 From: Alfredo Cardigliano Date: Mon, 16 Mar 2026 10:34:15 +0100 Subject: [PATCH] Implement queryLastValues for clickhouse ts --- .../timeseries/drivers/clickhousets.lua | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scripts/lua/modules/timeseries/drivers/clickhousets.lua b/scripts/lua/modules/timeseries/drivers/clickhousets.lua index c2e090b4b9..9091fc0a60 100644 --- a/scripts/lua/modules/timeseries/drivers/clickhousets.lua +++ b/scripts/lua/modules/timeseries/drivers/clickhousets.lua @@ -652,6 +652,29 @@ end -- ############################################## +--! @brief Return the last N non-NaN values for each metric in the time range. +--! Note: values are already normalised by driver:query() +function driver:queryLastValues(options) + local last_values = {} + local rsp = self:timeseries_query(options) + + for _, data in pairs(rsp.series or {}) do + local values = {} + for i = (#data.data), 1, -1 do + if #values == options.num_points then break end + -- nan check + if data.data[i] == data.data[i] then + values[#values + 1] = data.data[i] + end + end + last_values[data.id] = values + end + + return last_values +end + +-- ############################################## + --! @brief Flush the in-memory buffer to ClickHouse. --! Called periodically by the export script. function driver:export()