我根据时间戳分区表。 这是一个月的数据分别保存在表格中。 例如:impression_201501,impression_201502分别对应2015年1月和2015年的数据。 我要求每两周自动提取异常。
因此,当我为jan的最后一周和feb的第一周(每两周14天)提取异常时,如何让netezza自动从impression_201501和impression_201502中提取数据?
答案 0 :(得分:0)
你真的应该考虑将它们编译成一个表,特别是如果它们具有完全相同的表结构。如果要确保每个值都是分布式的,只需将时间戳添加为分发键的一部分(尽管在尝试加入表时应考虑此影响)。
那就是说,我知道实现你想要的唯一方法是使用一个返回reftable的存储过程。然后你可以像这样创建一个存储过程。
create or replace procedure biweekly_data()
returns reftable(biweekly_table) language nzplsql as
begin_proc
declare this_month varchar;
declare last_month varchar;
declare sql varchar;
begin
this_month := extract(year from current_date)
|| lpad(extract(month from current_date),2,'0');
last_month := extract(year from current_date - 1)
|| lpad(extract(month from current_date - 1),2,'0');
sql := 'insert into ' || reftablename
|| ' select * ' --Your select statement will vary.
|| ' from impression_' || this_month
|| ' union select * '
|| ' from impression_' || last_month;
execute immediate sql;
return reftable;
end;
end_proc;
未经测试,因此您可能需要调整一下。