Всякий раз, когда вы разрабатываете таблицу фактов, в первую очередь нужно задать себе следующие вопросы:
- Какой бизнес-процесс вы анализируете?
- Что такое релевантные факты?
- По каким параметрам вы хотели бы проанализировать факты?
- Что представляет собой самый низкий (наименее агрегированный) уровень детализации в таблице фактов, т. е. какова зернистость таблицы фактов?
Процесс, кажется, человеческих ресурсов (HR).
Вы уже знаете факт, стаж работы, который вы можете легко рассчитать: EndDate - StartDate
. Очевидными измерениями являются Отдел, Сотрудник, Дата (два ролевых измерения для начала и окончания).
В этом случае, поскольку вы ищете «средний стаж работы» в качестве меры, кажется, что зерна должны быть отдельными сотрудниками по отделам (ваши транзакционные данные могут иметь один и тот же EmployeeID
, указанный в другом DeptID
, когда сотрудник перешел ).
Тогда ваша звездная схема будет выглядеть примерно так:
Fact_HR
DeptKey EmployeeKey StartDateKey EndDateKey EmploymentLengthInDays
-------------------------------------------------------------------------
10001 000321 20100101 20120101 730
10001 000421 20100505 20130101 972
Dim_Department
DeptKey DeptID Name ... (other suitable columns)
------------------------- ...
10001 001 Sales ...
Dim_Employee
EmployeeKey EmployeeID FirstName LastName ... (other suitable columns)
---------------------------------------------- ...
000321 123 Alison Smith ...
000421 124 Anakin Skywalker ...
Dim_Date
DateKey DateValue Year Quarter Month Day ... (other suitable columns)
00000000 N/A 0 0 0 0 ...
20100101 2010-01-01 2010 1 1 1 ...
20100102 2010-01-02 2010 1 1 2 ...
... ... ... ... ... ...
(so on for every date you want to represent)
Каждый столбец, оканчивающийся на Key
, является суррогатным ключом. Вас интересует EmploymentLengthInDays
, вы можете получить меру Avg. Employment Length
и агрегировать, используя среднее значение по всем измерениям.
Теперь вы можете задавать такие вопросы, как:
- Средняя продолжительность работы по отделам.
- Средний стаж работы сотрудников, начиная с 2011 г. или заканчивая сентябрем 2010 г.
- Средняя продолжительность работы данного сотрудника (по каждому отделу, в котором он работал).
БОНУС: вы также можете добавить в куб еще одну меру, которая использует тот же столбец, но вместо этого имеет агрегатор SUM, который может называться Total Employment Length
. Для данного сотрудника это покажет вам, как долго сотрудник проработал в компании, а для отдела — общее количество человеко-дней, которые были доступны для этого отдела. Просто пример того, как один факт может стать несколькими показателями.
person
Ezequiel Muns
schedule
16.01.2013