Я использую базу данных postgresql (также с timescaledb, которая будет использоваться в графане) и узнал, как выполнить даунсамплинг простой таблицы с помощью следующего:
CREATE VIEW my_view
WITH (timescaledb.continuous) --Makes the view continuous
AS
SELECT
time_bucket('1 min', time) as bucket,
avg(sensor1),
avg(sensor2),
avg(sensor3)
FROM
my_table
GROUP BY bucket;
Этот код создает VIEW с тремя датчиками и понижает частоту дискретизации (например, от 1 секунды до 1 минуты.
).
Это все хорошо, пока у меня нет таблицы с сотнями столбцов, которые я хочу уменьшить. Я не хочу писать этот код с сотнями средних, явно появляющихся в запросе для каждого датчика. Я надеюсь, что у postgresql есть способ применить усредняющее агрегирование ко всем столбцам таблицы одновременно.
Я довольно долго гуглил для ответа, и это самый близкий, который я смог найти, хотя это не совсем тот же вопрос:
выберите агрегатную функцию и все остальные столбцы
Я пытался использовать синтаксис avg (*), но получил синтаксическую ошибку.
CREATE VIEW my_view
WITH (timescaledb.continuous) --Makes the view continuous
AS
SELECT
time_bucket('1 min', time) as bucket,
avg(sensor1),
avg(sensor2),
avg(sensor3)
FROM
my_table
GROUP BY bucket;
другая попытка была
CREATE VIEW my_view
WITH (timescaledb.continuous) --Makes the view continuous
AS
SELECT
time_bucket('1 min', time) as bucket,
avg(*)
FROM
my_table
GROUP BY bucket;
, который дал синтаксическую ошибку.
Я надеюсь, что есть способ выполнить этот запрос без необходимости писать фрагмент кода, охватывающий сотни строк для каждого датчика. Спасибо за любую помощь.