Я работаю над дизайном витрины данных HR, используя подход Kimball, описанный в «Набор инструментов хранилища данных».
Согласно проекту Kimball, я планировал иметь медленно изменяющееся измерение с отметкой времени для отслеживания изменений профиля сотрудника (для поддержки анализа состояния сотрудника на определенный момент времени) и таблицу фактических снимков периодического снимка подсчета сотрудников. поддержать меры по найму, увольнению, увольнению, зарплате и т. д.
Проблема, с которой я столкнулся, заключается в том, что в некоторых случаях наши сотрудники могут быть назначены на несколько ролей / заданий, и каждое из них должно отслеживаться отдельно (т.е. структура моих фактов должна быть на уровне работы, а не уровень сотрудника).
Как проект Кимбалла может быть адаптирован к сценарию, в котором сотрудник и роль / работа образуют иерархию, подобную этой? В идеале я хочу избежать дублирования данных профиля сотрудника (адрес, демография и т. Д.) Для каждой роли / работы, на которую назначен сотрудник, но означает ли это, что мне нужно засорять измерение?
Варианты, которые я рассматривал, включают в себя следующие - меня будут интересовать любые мысли или предложения сообщества по этому поводу, поэтому любые отзывы приветствуются!
1) (см. В приложении, дизайн 1) Подход в виде снежинки с таблицей сотрудников, в которой есть таблица ролей ссылок 1-ко-многим, которая, в свою очередь, имеет ссылку 1-ко-многим с таблицей фактов , Преимущество здесь - в чистом измерении сотрудников, но я не хочу вносить ненужные сложности. Есть ли причина, по которой я не должен связывать оба измерения непосредственно с таблицей фактов? Видимые снежинки не видят этого.
2) (см. Вложение, схема 2) Комбинированное измерение «Сотрудник / Роль», где у каждого сотрудника есть запись для каждой назначенной роли, но только одна из них помечена как «Основная роль». Запросы на определенный момент времени для измерения можно выполнить, ограничив флаг «Первичная роль».