2016-05-31 1 views
0


ли измерение Дата/время рекомендуется в моем случае

Я проектирование хранилища данных, который имеет вызовы и данные телефонии в нем. В моей таблице фактов (факты звонков) У меня есть несколько DATETIME полеев, такие как CallStart, CallEnd, CallAnswered, CallRecordSaved и т.д ... (все из них имеет year, month, day, hour, minute, second)

Мой вопрос я должен сохранить эти поля как тип DATETIME данных или я должен ссылаться на них к другой таблице (измерение даты/времени) с учетом того, что я планирую сгенерировать куб из этого DW и планировать вычислять разницу во времени между некоторыми из этих значений DateTime.

Что вы думаете?

+2

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

+0

@GordonLinoff Я согласен, но я должен спросить, будет ли анализ без измерения даты и времени намного тяжелее (пример: получение звонков, по месяцам, дням и т. Д.)? – Fourat

+0

Согласитесь с Гордоном и Фуртом. Я бы назвал CallStart как datetime, а затем Duration int как секунды. Все преимущества datetime без необходимости вычислять продолжительность для каждой функции агрегации –

ответ

0

Что я делал в прошлом, имеет размер даты/времени для наиболее важных дат, а затем имеет другое измерение (например, «Звонок» в вашем случае), в котором хранится вся загрузка дат, которые может быть полезным в одном месте. Это измерение не обязательно должно содержать все столбцы таблицы дат и обычно имеет только поля даты и времени для этих дополнительных свойств.

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

1

Мне нравятся более ранние комментарии и соглашаемся, что вам нужно всего лишь выполнить полный размер в одном поле - callStart. Но какие объемы вызовов вы смотрите? В среднем 1 вызов в минуту, 10 в минуту и ​​т. Д. Как пики ваши пики? Если скорость звонка изменяется плавно, вы можете увеличить время детализации. Вам нужны дата и время в одном измерении. Не могли бы вы иметь ведра времени и дату как отдельные размеры. Аналогично длительности. Удерживайте его как длительность и значение ведра. У вас уже есть дата начала звонка. Редактировать Чтобы вернуться к вопросу. Я бы сохранил дату и время для каждого, но я бы связал только начало с измерением. Остальное будет доступно для отображения, но не для навигации.

+0

Мне нужно сохранить значения datetime (для целей истории), поэтому я не делаю никаких вычислений в ETL. Тем временем мне нравится идея ссылаться на CallStart на измерение даты/времени, а другие поля - на дату и время в отдельном измерении. Кроме того, теперь я получаю 100 + звонок в минуту (в среднем) и растущий – Fourat

Смежные вопросы