Создайте таблицу фактов для получения показателей в SSAS

Моя цель — создать таблицу фактов, которая будет использоваться для получения показателей в SSAS. Измерение, которое я создаю, — это «средний стаж работы». Мера будет развернута на панели инструментов, и пользователи смогут выбирать календарный период и детализировать данные по месяцам, неделям и дням.

Вот как выглядят транзакционные данные:

DeptID     EmployeeID   StartDate   EndDate
--------------------------------------------
001        123           20100101   20120101   
001        124           20100505   20130101

Какие поля должны быть в моей таблице фактов? по каким полям я должен выполнять агрегацию? Как насчет усреднения? Любая помощь приветствуется.


person Thracian    schedule 15.01.2013    source источник


Ответы (1)


Всякий раз, когда вы разрабатываете таблицу фактов, в первую очередь нужно задать себе следующие вопросы:

  1. Какой бизнес-процесс вы анализируете?
  2. Что такое релевантные факты?
  3. По каким параметрам вы хотели бы проанализировать факты?
  4. Что представляет собой самый низкий (наименее агрегированный) уровень детализации в таблице фактов, т. е. какова зернистость таблицы фактов?

Процесс, кажется, человеческих ресурсов (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
comment
Приятно видеть, что вы предлагаете модель Кимбалла. Одна вещь, которую я собираюсь добавить, - это средняя мера, я бы добавил меру подсчета для таблицы фактов в SSAS (обычно она добавляется по умолчанию) и добавил вычисляемую меру в разделе «Расчеты», которая делит меру EmploymentLengthInDays на меру подсчета, дающую вы средний на любом уровне куба. - person Ali_Abadani; 16.01.2013