В IBM Cognos BI между БД и отчётом есть набор промежуточных слоёв — модель данных. Тем не менее, разработчики регулярно игнорировали её возможности и вставляли SQL-запросы непосредственно в отчёты.
Это была небольшая речь, призванная пресечь данную практику.
Слайды были оформлены в виде короткого видео (как современные сториз).
Достигнутый результат: SQL в отчётах был запрещён (с парой исключений). При проверке отчётов перед релизом — проверяется в т.ч. отсутствие SQL-запросов.
Оглядываясь назад: Использование SQL является симптомом, что в данном случае Cognos является неподходящим BI-инструментом, а промежуточная модель не требуется. Степень связанности данных между отчётами практически нулевая, и модель не решает никаких реальных проблем, а только усложняет архитектуру и требует дополнительных ресурсов и времени на разработку и поддержку.
Логическая модель начинает быть нужна, когда появляется какая-то единая система показателей, сквозных метрик и т.п. Следующий уровень зрелости. Чтобы дойти до него, требуется много времени и усилий. А потому, пока этой потребности нет, лучше выбирать более простой BI-инструмент. По моему опыту, аналитика в большинстве организаций до уровня потребности в промежуточной модели вообще никогда не дорастает.
Кроме того, та же единая система показателей может быть реализована на уровне витрин, и модель опять получается не нужна.
IBM Cognos также позволяет интегрировать между собой данные из нескольких источников (выполнять федеративные запросы). Однако такая обработка (соединения) происходит уже не на источниках (push-down), а на сервере Cognos. BI-сервер это не СУБД и не полноценный SQL-движок, и эта доп. обработка существенно замедляет запросы и нагружает сервер.
Получается, что эту функциональность можно использовать только на небольших объёмах. На которых модель не особо и требуется, можно обойтись чистым SQL.
А уже при средних объёмах надо делать полноценную интеграцию данных на уровне БД, строить хранилище, и модель опять становится не нужна.
В данном случае наличие модели было требованием заказчика. Заказчик преследовал две цели:
1) Строить отчёты самостоятельно — но фактически практически не строил
2) Искать показатели по бизнес-названиям — но для выполнения этой функции правильнее было бы реализовать каталог данных