Размер времени и даты в хранилище данных

Я создаю хранилище данных. Каждый факт имеет, это timestamp. Я должен создать отчеты днем, месяц, четверть, но к часам также. Рассмотрение примеров, я вижу, что даты имеют тенденцию быть сохраненными в таблицах измерений. alt starexample
(источник: etl-tools.info)

Но я думаю, что это не имеет никакого смысла в течение времени. Таблица измерений выросла бы и выросла бы. С другой стороны, СОЕДИНЕНИЕ с таблицей измерений даты более эффективно, чем использование функций даты/времени в SQL.

Каковы Ваши мнения/решения?

(Я использую Infobright),

15
задан Glorfindel 5 July 2019 в 19:05
поделиться

3 ответа

Я предполагаю, что это зависит от ваших требований к отчетности. Если вам нужно что-то вроде

WHERE "Hour" = 10

, то есть каждый день с 10:00 : 00 и 10:59:59, то я бы использовал измерение времени, потому что оно быстрее, чем

WHERE date_part('hour', TimeStamp) = 10  

, потому что функция date_part () будет оцениваться для каждой строки. Вы все равно должны оставить TimeStamp в таблица фактов для агрегирования за границы дней, как в:

WHERE TimeStamp between '2010-03-22 23:30' and '2010-03-23 11:15' 

, что становится неудобным при использовании полей измерений.

Обычно измерение времени имеет минутное разрешение, то есть 1440 строк.

8
ответ дан 1 December 2019 в 00:26
поделиться

Кимбалл рекомендует иметь отдельные измерения времени и даты:

design-tip-51-latest-Think-on-time-dimension-tables

В предыдущих книгах по набору инструментов , мы рекомендовали создать такое измерение с компонентом минут или секунд времени в качестве смещения от полуночи каждого дня, но мы пришли к понять , что конечные приложения для конечных пользователей стали слишком сложными, особенно при попытке вычислить промежутки времени. Кроме того, в отличие от измерения календарного дня , существует очень мало описательных атрибутов для определенной минуты или секунды в пределах дня. Если на предприятии есть хорошо определенные атрибуты для временных интервалов в течение дня, такие как названия смен или рекламные временные интервалы, дополнительный временной интервал В проект можно добавить измерение дня, где это измерение определяется как количество минут (или четных секунд) после полуночи. Таким образом, это измерение времени суток будет иметь либо 1440 записей, если зернистость составляет минуты , либо 86 400 записей, если зернистость составляет секунды.

33
ответ дан 1 December 2019 в 00:26
поделиться

Время должно быть измерением в хранилищах данных, так как вы часто хотите агрегировать по нему. Вы можете использовать схему снежинки , чтобы уменьшить накладные расходы. В целом, как я указал в своем комментарии, часы кажутся необычно высоким разрешением. Если вы настаиваете на них, выделение часа дня в отдельное измерение может помочь, но я не могу сказать вам, хороший ли это дизайн.

4
ответ дан 1 December 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: