Доброго дня!
Вопрос не напрямую об OLAP и DWH, однако, наверняка именно здесь можно найти ответ на данный вопрос. Имеется DWH на Oracle СУБД. Имеется BI как отчетная с
В процессе работы с разного рода отчетностью, приходится сталкиваться с запросами со стороны бизнеса, где требуется в одну книгу Excel выгружать несколько отчетных форм. Суммы в данных отчетах отражаются в тысячах и целых числах. Перед формированием отчетных форм первоначально собирается расшифровка нижнего уровня - клиент, счет, сумма, дата, идентификатор конкретной операции и т.д. Для двух форм одни данные и одна расшифровка.
Отчетные формы, расположенные в книге(они могут располагаться и отдельно - не принципиально) имеют разную группировку исходных данных. В частности - в одной отчетной форме пользователь хочет видеть некие суммы в разрезе по опер.дню, валюте, рейтингу клиента, а в другой по дню и еще по неким статьям отчетным.
При этом пользователь хочет, чтобы итоги между отчетными формами бились, ведь это "одни и те же данные", но из-за разной группировки и округления итоги не бьются на единицы.
Есть вариант использовать подход, когда сумма нижнего уровня(уровня уникальной операции) делится на тысячу, округляется, а уже потом подвергается сложением с другими суммами и группировке(как не суммируй и группируй округленные целые числа - итоговая сумма будет одна). Однако, при таком подходе сильно разнятся по понятным причинам итоговые суммы с балансом.
Поэтому для приведения сумм к общим итогам пользовались функцией, куда передавались суммы всех слагаемых без округления и требуемая итоговая сумма. Функция анализирует разницу между требуемым тоталом и фактическим и принудительно округляет в большую или меньшую сторону, работая при этом с дробными числами(в качестве слагаемых могут передаваться и целые). Но разница не всегда = 1, а иногда и несколько единиц. При таком подходе одними играми с тем, в какую сторону округлять, не обойтись. Приходится разницу в жесткую садить на какое-то слагаемое.
Есть ли опыт решения подобного рода задачки?