mercoledì 14 dicembre 2011

PostgreSQL - Generare dim_calendar

Breve script per generare una semplice dimensione temporale (calendario) con posgres utile in ogni datawarehouse:

create table stg.dim_calendar as
select to_char( to_date('20000101', 'YYYYMMDD') + s, 'YYYYMMDD')::int8 as dw_id_calendar,
(to_date('20000101', 'YYYYMMDD') + s)::timestamp as timestamp,
(to_date('20000101', 'YYYYMMDD') + s) as date,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'YYYYMMDD')::varchar as YYYYMMDD,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'YYYYMM')::varchar as YYYYMM,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'YYYY')::varchar as Year,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'Q')::int4 as Quarter,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'MM')::int4 as Month,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'Mon') as Month_name,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'W')::int4 as Week_of_month,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'WW')::int4 as Week_of_year,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'DD')::int4 as Day_of_month,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'D')::int4 as Day_of_week,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'Dy') as Day_of_week_name,
to_char( to_date('20000101', 'YYYYMMDD') + s, 'DDD')::int4 as Day_of_year
from generate_series(0, 7300) s

Nessun commento:

Posta un commento