根据日期从分区表中选择数据。如果自动指定日期,则应从正确的表中选择该日期范围的数据

时间:2015-05-04 07:59:15

标签: netezza

我根据时间戳分区表。 这是一个月的数据分别保存在表格中。 例如:impression_201501,impression_201502分别对应2015年1月和2015年的数据。 我要求每两周自动提取异常。

因此,当我为jan的最后一周和feb的第一周(每两周14天)提取异常时,如何让netezza自动从impression_201501和impression_201502中提取数据?

1 个答案:

答案 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;

未经测试,因此您可能需要调整一下。