Публикация

Общий итог в OLAP, и почему он может не сходиться с арифметической суммой

Скорее всего, "открытие", которое я сделал, всем хорошо известно. Но для меня было полной неожиданностью. Признаться, я пребывал в состоянии лёгкой паники, когда увидел вот такое:

Итоги по столбцам очевидно не соответствовали арифметической сумме. Ясно видно, что 707 + 1 никак не может быть равно 707-и... Картина, что называется «не верь глазам своим». Но проверив все расчеты я понял, что все три числа абсолютно верны!

Итак, что же происходит: отделы связаны с проектом через деталь «Продукты в проекте», именно там указывается отдел. Каждая ячейка в OLAP суть запрос в базу данных.

Мы спрашиваем в первой строчке: в скольких проектах участвовал отдел аудита? Система отвечает: 707. Столько проектов содержат на детали «Продукты в проекте» ссылку на отдел аудита.

Мы спрашиваем во второй строчке: в скольких проектах участвовал отдел банковского аудита? Система отвечает: в одном. То есть, один проект содержит на детали «Продукты в проекте» ссылку на отдел банковского аудита.

И то и другое верно!

Наконец, в строке общих итогов мы спрашиваем: а сколько проектов у нас всего? Система отвечает: 707! И именно так и есть. У нас действительно всего 707 проектов. Просто в одном из них участвовали оба отдела. Вытащив в куб названия проектов я нашёл тот проект, в котором участвовал отдел банковского аудита и убедился, что на детали «Продукты в проекте» действительно указаны оба отдела.

Таким образом, интеллектуальная система OLAP дала нам ответ на несколько вопросов: сколько проектов выполнил каждый отдел, и сколько проектов выполнено в целом, безотносительно отделов.

Важный вывод, который следует всегда помнить: общие итоги в OLAP это отдельный запрос, а не арифметическая сумма по строкам или колонкам. Общие итоги как по горизонтали, так и по вертикали арифметическими суммами не являются, но при этом содержат полностью достоверную информацию.

Нравится

Поделиться

2 комментария

Обалдеть! Не знал.

Это ситуация тривиальная. OLAP часто выдает показатели, кажущиеся неадекватными на поверхностный взгляд. В рознице помню, первый опыт был- количество проданных единиц определенного товара часто расходилось с количеством пробитых кассовых чеков на этот товар. Что запросили, то и получили. Расшифровывать- не OLAPа дело.

Показать все комментарии