Continuous transforms 可以用来连续变换输入的时间序列数据,而不需要存储它。由于没有存储数据,Continuous transforms不支持聚合。转换的结果可以管道传输到另一个流中,或者写入外部数据存储。
==========================================================================
Creating Continuous Transforms
Transform被定义为PG视图,将参数action设置为transform。
CREATE VIEW name (WITH action=transform [, outputfunc=function_name( arguments ) ]) AS query
function_name 是一个可选的用户提供的函数,它被声明为不接受参数并返回类型触发器,该触发器对连续转换输出的每行执行。
arguments 是在执行触发器时要提供给函数的可选逗号分隔的参数列表。参数只能是文字字符串常量。
==========================================================================
Dropping Continuous Transforms
DROP VIEW continuous_transform;
==========================================================================
Viewing Continuous Transforms
SELECT * from pipelinedb.transforms;
==========================================================================
Continuous Transform Output Streams
所有 continuous transforms 都具有与之关联的输出流,这使得其他转换或连续视图很容易从它们读取。continuous transforms 的输出流只包含转换选择的任何行。
==========================================================================
Built-in Transform Output Functions
为了在连续转换的输出上比其内置输出流提供更大的灵活性,PipelineDB公开了一个接口,以使用触发器函数接收转换的行。附加到传输上的触发器函数然后可以对它们接收的行执行任何操作,包括写出到其他流。
目前,PipelineDB只提供一个内置的触发函数,即pipelinedb.insert_into_stream,可用于continuous transforms。它将continuous transforms的输出插入到作为字符串文字参数提供的所有流中。
==========================================================================
Creating Your Own Output Function
还可以创建自己的输出函数,该函数可用于 continuous transforms。
example:
CREATE TABLE t (user text, value int); CREATE OR REPLACE FUNCTION insert_into_t() RETURNS trigger AS $$ BEGIN INSERT INTO t (user, value) VALUES (NEW.user, NEW.value); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE VIEW ct WITH (action=transform, outputfunc=insert_into_t) AS SELECT user::text, value::int FROM stream WHERE value > 100;