входе у меня датасет с оборотами по банковским счетам. Данные в разрезе дней и счетов. Если оборотов нет, то данные не поставляются. Важна историчность, т.к. требуется обращаться к различным версиям, актульаным на момент поставки, и простота восстановления выписок с нулевым оборотом. Историчность побеждаем scd2, а вот структуру для кейса нулевых выписок не придумал. Варианты, которые пришли в голову.
1. Замерджить с матрицей со счетами на каждый день и прописывать заполнение null. Достаточно ресурсоёмко и требует доп контролей сортировки таблицы по каждому дню после мержда,
2. Перейти на хранение только оборотов и постоянно рассчитывать таблицу. Таже ресурсоёмко
3. Также применить SCD2 для простоты развёртования, но при возникновении промежуточных элементов придётся менять end date для каждой версии счета за дату + скрипт восстановления нулевых выписок будет похож на п 1.
Можете направить на путь истинный?
Сами банки в своих хранилищах (в двух разных банках поработал) используют SCD2. История обновляется регламентной процедурой, единообразно для всего хранилища. Причём необязательно end_date хранить, иногда только дату изменения (effective_date) хранят. Первые два варианта на больших объёмах отпадают из-за дороговизны хранения неинформативных строк. Когда у тебя валидных строк миллиард+, это уже критично
А что ты потом хочешь получить в результате запроса? Не оч понял.
Требуется получить баланс по каждому счёту на каждый день.
У тебя сальдообороты что ли меняться могут задним числом, в этом проблема?
Баланс это что? Остаток?
Верно, может быть недопоставка или изменение уже внесённых значений
Входящий/исходящий?
Остаток входящий и исходящий (в разных процессах разные показатели используются)
Обсуждают сегодня