Очень хочется хранить дату окончания действия записи (VALID_TO_DTTM или EFFECTIVE_TO_DTTM) в версионных сателлитах или линках. Ведь если ее не хранить, то как потом join-ится на такую таблицу? С использованием подзапроса и оконной функции?? Нет уж, это слишком сложно, да и на больших объемах может долго работать. Лучше просто записывать EFFECTIVE_TO_DTTM в атрибут сателлита.
Нет не лучше! Ведь это может привести к неочевидным последствиям.
Банально вы усложняете свой ETL/ELT, а также он начинает дольше работать.
Усложняете вы его, потому что добавляете логику расчета даты окончания действия записи. А дольше он становится (в случае с большим объемом данных кратно дольше), потому что вам необходимо делать update записей, у которых появилась новая версия.
Если у вас появятся в источнике данные за прошедший период (а случается это сплошь и рядом), велик риск, что ваши версии, которые уже находятся в сателлите будут поломаны. Другими словами, придется пересчитывать для всех записей версионность.
Приходит запись задним числом.
Как видно, у первой строки дата окончания действия записи стала некорректной. Придется пересчитывать все записи по ключу 1.