SSAS и SCD2 — как работать со строкой IsActive в Dim

Я использую SQL Server 2014 и Visual Studio 2015.
Например, у меня есть SCD2 для имен сотрудников.

SK     AltKey       Name            Gender    IsActive
1      15           Sven Svensson    M        1
2      16           Jo Jonsson       M        1

и в таблице фактов

SK      AgentSK      CallDuration    DateKey
100     1            335             20160808
101     2            235             20160809

Итак, вы можете видеть, что куб в настоящее время связан с FctAgentSK и DimSK. Это работает, как и планировалось. Однако, когда Джо меняет пол, SCD2 делает строку неактивной (0) и вставляет новую строку с новым полом и IsActive равным «1».

Проблема, с которой я сталкиваюсь, заключается в том, что factSK 101 по-прежнему ссылается на «СТАРЫЕ» данные для агента. Как мне справиться с этим, чтобы иметь возможность по-прежнему сообщать о звонке, но также ссылаться на «правильные» данные агента, отражающие их текущий пол.

Когда вставляется новый факт, ему будет назначен «НОВЫЙ» SK, но в основном мне нужно будет сообщить обо ВСЕХ звонках, которые произошли по обе стороны от смены пола.

Любые предложения, пожалуйста?

Спасибо.


person user3735855    schedule 16.12.2016    source источник
comment
Так работает SCD2 — исторические записи указывают на старую запись (и ее атрибуты). Новые записи указывают на новую запись (и ее атрибуты). Если вы хотите изменить историю, используйте SCD1 (просто обновите запись). Если вам не нужна функциональность SCD, не используйте ее.   -  person Nick.McDermaid    schedule 16.12.2016


Ответы (1)


Как предложил Nick.McDermaid, если вам не нужны функциональные возможности SCD2, вы можете удалить их из дизайна измерений (я часто видел, как они чрезмерно реализовывались, когда они на самом деле не нужны: возможно, вы унаследовали такую ​​​​настройку?) .

Если вы хотите/должны сохранить дизайн SCD2, но хотите сообщить о текущих атрибутах персонала (пол и любые другие атрибуты SCD2).

  1. Кимбалл документирует «Тип 6» здесь: типы SCD 0,4,5,6,7. Вы добавляете «текущее» значение атрибута к существующему проекту Type2. Затем вы можете сообщить только о «текущих» атрибутах.

  2. Я предполагаю, что имя персонала «Alt Key» является постоянным ключом сотрудника, который остается неизменным при изменении атрибутов персонала? Вы можете создать немного другое измерение «Сотрудник» (или иерархию внутри измерения «Сотрудник»), в котором в качестве ключа конечного уровня используется клавиша Alt. Если у вас по-прежнему нет SK в качестве атрибута измерения, это приведет к тому, что таблица измерения «свернется» на один элемент на AltKey, а не на один элемент на SK. Очевидно, вы не можете добавить какие-либо атрибуты SCD2 в эту иерархию Alt Key, так как не будет единого значения для каждого ключа; и это поднимает особые проблемы о том, как называть долговременного «сотрудника» (т. е. каким будет столбец имени конечного уровня), поскольку имя сотрудника — один из наиболее очевидных атрибутов SCD2, который не останется. одинаковый. Вероятно, этот подход лучше всего сочетается с базовым включением «Тип 6» «текущего значения» в данные измерения, как описано в (1) выше.

person SebTHU    schedule 19.12.2016
comment
Спасибо @SebTHU, который полностью отвечает на мой вопрос. Ваше здоровье - person user3735855; 20.12.2016