我是postgres和DW的新手,我必須設計一個DATE Dimension
,如book中給出的。我看到網絡上很多地方,我沒有到目前爲止成功,可一些解釋如何填充字段,如'Fiscal Week', 'Fiscal Month', 'Fiscal Half year'
Postgres:根據Ralph Kimball創建DATE維度
謝謝
我是postgres和DW的新手,我必須設計一個DATE Dimension
,如book中給出的。我看到網絡上很多地方,我沒有到目前爲止成功,可一些解釋如何填充字段,如'Fiscal Week', 'Fiscal Month', 'Fiscal Half year'
Postgres:根據Ralph Kimball創建DATE維度
謝謝
我猜你想與所有的柱10年可交付日期維度表呈現於圖2.4(基於Google Books)。檢查文檔:
to_char
與Table 9-21爲模板模式date_part
generate_series(start, stop, step interval)
要獲得10年之內的所有日子裏,你可以寫:
SELECT generate_series('2001-01-01'::date, '2010-12-31'::date, '1 day') AS day;
SELECT count(*) FROM generate_series('2001-01-01'::date, '2010-12-31'::date, '1 day');
count
-------
3652
(1 row)
根據圖2.5創建表作爲例如爲:
DROP TABLE IF EXISTS "Date Dimension";
CREATE TABLE "Date Dimension"
(
"Date Key" serial,
"Date" date,
"Full Day Description" text,
"Day Of Week" text,
"Calendar Month" text,
"Calendar Year" integer,
"Fiscal Year Month" text,
"Holiday Indicator" text,
"Weekday Indicator" text
);
Insert命令:
INSERT INTO "Date Dimension"
("Date", "Full Day Description", "Day Of Week", "Calendar Month",
"Calendar Year", "Fiscal Year Month", "Holiday Indicator",
"Weekday Indicator")
SELECT
day,
rtrim(to_char(day, 'Month')) || to_char(day, ' DD, YYYY'),
to_char(day, 'Day'),
rtrim(to_char(day, 'Month')),
date_part('year', day),
'F' || to_char(day, 'YYYY-MM'),
'', --omitting (trivial 'Holiday'/'Non-Holiday, but how to get this ??),
CASE
WHEN date_part('isodow', day) IN (6, 7) THEN 'Weekend'
ELSE 'Weekday'
END
FROM
generate_series('2001-01-01'::date, '2010-12-31'::date, '1 day') day;
我希望這給你一些框架和出發點。
您的財政年度結構如何?什麼時候開始?它是否遵循任何標準的4-4-5或4-5-4規則?你最好的選擇可能是從CSV文件中加載它,如在這個問題的答案中討論的:4-5-4 National Retail foundation Calendar csv download or function to create。財政年度非常不規範。例如,我們公司的會計年度從7月1日開始。
我不得不爲廣播日曆添加字段到我們的日曆維度(從包含1月1日的星期一開始),並能夠通過一些計算來完成。