Я работаю над дизайном таблицы фактов хранилища данных для таблицы фактов истории контактов. Моя текущая схема выглядит примерно так:
[FK] DateKey INT
[FK] TimeKey INT
[NK] CustomerNK INT
[NK] CustomerPhoneNK INT
[FK] ContactTypeKey INT
[FK] ContactResultKey INT
[BK] ContactRefBK INT
ContactTS DATETIME
Counter INT (=1)
Одно из моих требований к приложению — найти самый последний ContactResult
для списка выбора в измерении ContactType
. Измерение ContactType
имеет атрибут ContactClass
, который будет использоваться для определения диапазона значений для фильтрации.
Приведенная выше структура позволяет мне получить всю контактную информацию для ContactType
вариантов, выбранных ContactClass
, и я могу обработать этот список, чтобы получить самые последние значения.
Вопрос в том, может ли кто-нибудь предложить модификацию вышеизложенного, которая упростила бы получение самого последнего события контакта определенного ContactClass
? В настоящее время это таблица фактов о транзакциях, но я был бы рад изменить ее, если это улучшит удобство использования.
Эта операция будет выполняться довольно часто для широкого круга клиентов (более 200 тыс.), поэтому важна производительность. Операция будет выполняться в коде C# в веб-интерфейсе, поэтому решения, специфичные для BI Tool, в данном случае мне не пригодятся.
Пока что единственная идея, которая пришла мне в голову, — это накопительная таблица фактов, в которую записываются только самые последние записи для каждого ContactClass
. Буду очень признателен за любые улучшения этой опции.