Еженедельная сводная таблица; как ссылаться на измерение времени - PullRequest
2 голосов
/ 17 сентября 2010

Мы думаем о том, чтобы добавить еженедельную сводную таблицу в наше небольшое хранилище данных. У нас есть классическое измерение времени до дневного уровня (год / месяц / день) с соответствующей неделей / кварталом / и т. Д. столбцы.

Мы бы хотели, чтобы ключ времени в этой новой еженедельной сводной таблице ссылался на наше измерение времени. Какова лучшая практика здесь - указывать ли временной ключ идентификатор первого дня недели, которую он представляет? Или последний день? Или что-то совсем другое?

Ответы [ 4 ]

0 голосов
/ 20 сентября 2010

По поводу более раннего ответа, я фактически ожидал бы сохранить данные, связанные с промежуточным уровнем иерархии измерения времени - когда это относится к атомарным измерениям за этот промежуточный период времени - путем присоединения к ключу, связанному с первым день периода - это делает его гораздо более простым при загрузке (особенно с месяцами - я думаю, недели могут всегда требовать некоторых вычислений), а также при составлении отчетов - тем не менее, это соглашение и до тех пор, пока вы выбираете здравый смыслвариант (и придерживайтесь его) у вас все будет в порядке.

Кстати, не создавайте измерение недели - вы должны использовать измерение с богатым временем со всеми доступными внутри него иерархиями для года, квартала, месяца, недели,день и т. д. (имея в виду, что часто встречаются множественные, исключительные иерархии), и в этом случае только рекомендовал бы бессмысленный суррогатный ключ в форме 20100920 - даты неизменны и в этом формате могут легко содержаться в столбцах типа int, поэтомумаленькая ценностьИспользование бессмысленных ключей для дат (или в dim_time) - если вам когда-либо приходилось писать запросы к данным разыменования, где бессмысленные SK используются для измерения времени, которое вы знаете (ненужный) боль ...

M

0 голосов
/ 17 сентября 2010

А как насчет создания нового измерения "Неделя"?

При необходимости вы можете создать связь между измерением времени и недели.

0 голосов
/ 17 сентября 2010

По соглашению таблицы фактов с агрегациями периода даты (неделя, месяц ...) ссылаются на DateKey последнего дня периода - поэтому в этом примере вы будете ссылаться на последний день недели.

Вроде бы логично, неделя должна закончиться, чтобы быть агрегированной.

Важно четко указать (где-то), что размер таблицы фактов составляет одну неделю, чтобы разработчики отчетов знали об этом.

0 голосов
/ 17 сентября 2010

Дни являются хорошим примером сущности, лучше всего идентифицируемой естественными ключами - их представлениями в григорианском календаре.

Чтобы определить неделю или месяц, лучше использовать первый день. В Oracle вы можете легко получить его, позвонив по номеру TRUNC:

SELECT  TRUNC(fact_date, 'month'), SUM(fact_value)
FROM    fact
GROUP BY
        TRUNC(fact_date, 'month')

В других системах это немного сложнее, но и довольно просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...