当前位置: 首页 > 工具软件 > PipelineDB > 使用案例 >

Postgresql - PipelineDB - Continuous Transforms

戎永福
2023-12-01

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;

 

 类似资料: