Postgres: создание DATE Dimension в соответствии с Ralph Kimball - PullRequest
2 голосов
/ 17 августа 2011

Я новичок в postgres и DW, и мне нужно создать DATE Dimension, как указано в book . Я видел много мест в Интернете, но пока мне это не удалось, некоторые могут объяснить, как заполнять такие поля, как 'Fiscal Week', 'Fiscal Month', 'Fiscal Half year'

Спасибо

Ответы [ 2 ]

6 голосов
/ 18 августа 2011

Полагаю, вам нужна таблица с датой измерения за 10 лет со всеми столбцами, представленными на рисунке 2.4 (на основе Google Книги ). Проверка в документации:

Чтобы получить все дни в течение 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 создайте таблицу как, например ::1010 *

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

Надеюсь, это даст вам некоторые рамки и отправную точку.

0 голосов
/ 23 августа 2011

Как устроен ваш финансовый год? Когда это начнется? Соблюдает ли он какие-либо стандартные правила 4-4-5 или 4-5-4? Лучше всего загружать его из CSV-файла, например, как обсуждалось в ответе на этот вопрос: 4-5-4 Национальный розничный фонд Загрузка календаря csv или функция для создания . Финансовые годы, как известно, нестандартны. Например, финансовый год нашей компании начинается 1 июля.

Мне пришлось добавить поля в наше календарное измерение для календаря вещания (начинается в понедельник недели, включающей 1 января), и я смог сделать это с некоторыми вычислениями.

...