读书人

Data warehouse -Time dimension

发布时间: 2012-07-29 15:26:14 作者: rapoo

Data warehouse ----Time dimension
-----Create table

CREATE TABLE DIM_DATE
(
DATE_ID INTEGER,
YEAR INTEGER,
MONTH INTEGER,
QUARTER INTEGER,
WEEK INTEGER,
DAY INTEGER,
CREATE_DATE DATE
)

-----Create a procedure to fill the data
CREATE OR REPLACE PROCEDURE fill_dim_date (start_date IN char,end_date IN char)
AS
v_counter number := 0;
v_max number := 0;
BEGIN
EXECUTE IMMEDIATE 'truncate table dim_date';

v_max :=
TO_NUMBER(TO_DATE (end_date, 'yyyy-mm-dd')
- TO_DATE (start_date, 'yyyy-mm-dd'));

LOOP
INSERT INTO dim_date (
DATE_ID,
YEAR,
MONTH,
DAY,
WEEK,
CREATE_DATE,
QUARTER
)
VALUES (
to_number(TO_CHAR (TO_DATE (start_date, 'yyyy-mm-dd') + v_counter,'yyyymmdd')),
to_number(TO_CHAR (TO_DATE (start_date, 'yyyy-mm-dd') + v_counter,'yyyy')),
to_number(TO_CHAR (TO_DATE (start_date, 'yyyy-mm-dd') + v_counter,'mm')),
to_number(TO_CHAR (TO_DATE (start_date, 'yyyy-mm-dd') + v_counter,'dd')),
to_number(TO_CHAR (TO_DATE (start_date, 'yyyy-mm-dd') + v_counter,'w')),
SYSDATE,
to_number(TO_CHAR (TO_DATE (start_date, 'yyyy-mm-dd') + v_counter,'Q'))
);

EXIT WHEN v_counter >= v_max;
v_counter := v_counter + 1;
END LOOP;
COMMIT;
END fill_dim_date;
/

读书人网 >其他数据库

热点推荐