business-intelligence/data_warehouse/SCRIPT_DIM_DATE.sql
2019-04-21 17:42:10 +02:00

42 lines
1.2 KiB
SQL

WITH date1 AS (
SELECT generate_series('2018-01-01'::timestamp, '2021-12-31'::timestamp, '1 day') AS ts
), date2 AS (
SELECT get_date_primary_key(ts) AS DATE_ID,
EXTRACT(YEAR FROM ts) AS N_YEAR,
EXTRACT(MONTH FROM ts) AS N_MONTH,
EXTRACT(WEEK FROM ts) AS N_WEEK,
EXTRACT(DAY FROM ts) AS DAY_MONTH,
EXTRACT(ISODOW FROM ts) AS DAY_WEEK
FROM date1
), date3 AS (
SELECT
*,
CASE
WHEN N_MONTH = 1 THEN 'January'
WHEN N_MONTH = 2 THEN 'February'
WHEN N_MONTH = 3 THEN 'March'
WHEN N_MONTH = 4 THEN 'April'
WHEN N_MONTH = 5 THEN 'May'
WHEN N_MONTH = 6 THEN 'June'
WHEN N_MONTH = 7 THEN 'July'
WHEN N_MONTH = 8 THEN 'August'
WHEN N_MONTH = 9 THEN 'September'
WHEN N_MONTH = 10 THEN 'October'
WHEN N_MONTH = 11 THEN 'November'
WHEN N_MONTH = 12 THEN 'December'
END AS MONTH_NAME,
CASE
WHEN DAY_WEEK = 1 THEN 'Monday'
WHEN DAY_WEEK = 2 THEN 'Tuesday'
WHEN DAY_WEEK = 3 THEN 'Wednesday'
WHEN DAY_WEEK = 4 THEN 'Thursday'
WHEN DAY_WEEK = 5 THEN 'Friday'
WHEN DAY_WEEK = 6 THEN 'Saturday'
WHEN DAY_WEEK = 7 THEN 'Sunday'
END AS DAY_NAME
FROM date2
)
INSERT INTO public."DIM_DATE"
SELECT DATE_ID,N_YEAR,N_MONTH,MONTH_NAME,N_WEEK,DAY_MONTH,DAY_NAME
FROM date3;