Это, безусловно, возможно (с использованием реальных структур из тестовой установки):
- создать поток, например:
CREATE FOREIGN TABLE s_tracking (
c_timestamp TIMESTAMPTZ,
c_session BIGINT,
c_request BIGINT,
c_client VARCHAR,
c_gender VARCHAR,
c_path VARCHAR
) SERVER pipelinedb;
создать функцию триггера, которая вставляет записи, например:
CREATE FUNCTION func_tracking_insert_pipe() RETURNS trigger
LANGUAGE plpgsql AS
$$BEGIN
INSERT INTO
t_tracking (c_timestamp, c_session, c_request, c_client, c_gender, c_path)
VALUES
(NEW.c_timestamp, NEW.c_session, NEW.c_request, NEW.c_client, NEW.c_gender, NEW.c_path)
;
RETURN NEW;
END;$$
;
создать
непрерывное преобразование , например:
CREATE VIEW v_t_forward_raw_data
WITH (action=transform, outputfunc=func_tracking_insert_pipe)
AS
SELECT c_timestamp, c_session, c_request, c_client, c_gender, c_path FROM s_tracking
;
вставить в поток вместо таблицы:
INSERT INTO s_tracking
(c_timestamp, c_session, c_request, c_client, c_gender, c_path)
...
..., что приведет к получению всех метрик, определенных для потока s_tracking
, а также полных необработанных данных в (гипер-) таблица t_tracking
.
Однако из-за обходного пути, использующего триггерную функцию на основе строк, за каждый задействованный INSERT
будет наложен штраф.
Если вы можете житьс этим, выше, вероятно, ваш лучший шанс.