Хранилище данных - рабочие часы - PullRequest
2 голосов
/ 20 января 2009

Я работаю над хранилищем данных, которое, в конце концов, потребует от меня создания отчетов в рабочее время. В настоящее время мое измерение времени гранулировано до часа. Мне интересно, должен ли я изменить свое измерение времени, чтобы включить битовое поле для «рабочего часа», или я должен создать какую-то рассчитанную меру для него в конце анализа? Какие-нибудь примеры были бы супер великолепны?

Ответы [ 7 ]

7 голосов
/ 20 января 2009

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

1 голос
/ 20 января 2009

рабочих часов являются бизнес-правилами, поэтому они могут измениться в будущем

представляют рабочие часы как базовое время и продолжительность, например, StartTime 0900, продолжительность 9,5 часа, таким образом вы можете легко изменить интервал, выполнить сценарии «что, если», основываясь на разных рабочих часах, и рабочие часы могут пересекать строки даты без усложнения запросов

конечно, все даты должны быть по Гринвичу (UTC), никогда по местному времени, чтобы избежать сложностей с переходом на летнее время

РЕДАКТИРОВАТЬ: Я думаю, что я неправильно понял вопрос, ваши данные уже детализированы до часа ... Нет, я думаю, мой ответ остается в силе, но с добавлением даты начала и окончания для интервалов рабочего времени. Это позволит изменить гранулярность в будущем, сохраняя при этом историю

1 голос
/ 20 января 2009

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

Плюс, вы хотите рассчитать это только один раз - когда продажа импортируется в хранилище данных - потому что эти данные вряд ли будут меняться очень часто. Это не значит, что вы скажете: «Раньше эта распродажа была в рабочее время, но это уже не так».

0 голосов
/ 20 января 2009

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

0 голосов
/ 20 января 2009

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

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

0 голосов
/ 20 января 2009

Если вы используете Microsoft PerformancePoint 2007, вы можете играть и тестировать с различными опциями. Вы можете изменять свои измерения и выводить результаты в виде диаграмм, сводных таблиц, других инструментов отчетности и т. Д.

http://office.microsoft.com/en-us/performancepoint/FX101680481033.aspx

0 голосов
/ 20 января 2009

Я не уверен, поможет ли это, но я бы использовал UCT для хранения всех времен, а затем имел бы время начала и окончания, чтобы указать рабочие часы. Как только это настроено, это будет простая операция If (SpecificHour >= BusinessStartingHour) And (SpecificHour <= BusinessEndingHour) Then ....

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