Я проектирую хранилище данных с использованием многомерного моделирования.Я прочитал большую часть инструментария хранилища данных от Kimbal & Ross.Мой вопрос касается столбцов в размерной таблице, которые содержат даты.Например, вот таблица для пользователей приложения:
CREATE TABLE user_dim (
user_key BIGINT, -- surrogate key
user_id BIGINT, -- natural key
user_name VARCHAR(100),
...
user_added_date DATE, -- type 0, date user added to the system
...
-- Type-2 SCD administrative columns
row_start_date DATE, -- first effective date for this row
row_end_date DATE, -- last effective date for this row, 9999-12-31 if current
row_current_flag VARCHAR(10), -- current or expired
)
Последние три атрибута предназначены для реализации медленно меняющихся измерений типа 2.См. Страницу Кимбала 150-151.
Вопрос 1. Существуют ли передовые практики для типов данных столбцов row_start_date и row_end_date?Тип может быть DATE (как показано), STRING / VARCHAR / CHAR («YYYY-MM-DD») или даже BIGINT (внешний ключ для измерения даты).Я не думаю, что будет много фильтрации по датам начала / окончания строки, поэтому ключ к измерению даты не требуется.
Вопрос 2. Существует ли передовая практика для типа данных атрибутов измерения, таких как «user_added_date»?Я вижу, что кто-то хочет, чтобы отчеты о пользователях добавлялись за финансовый квартал, поэтому было бы полезно использовать внешний ключ для измерения даты.Есть ли у этого недостатки, кроме необходимости присоединиться от измерения пользователя к измерению даты для отображения атрибута?
Если это имеет значение, я использую Amazon Redshift.