Как захватить SQL, запущенный из Business Object Deski - PullRequest
1 голос
/ 16 мая 2019

Я новичок в Business Objects Deski. Я имел в виду несколько старых отчетов, чтобы понять, как на самом деле это работает.

В одном отчете создано несколько поставщиков данных, а в теле отчета есть таблица, в которой используются несколько полей от нескольких поставщиков данных. Я мог видеть точный SQL за каждым DP, но, работая с ними по отдельности, я не получаю те же данные, что и в отчете на уровне BO. Я также пытался присоединиться к ним, но так и не смог получить точное совпадение.

Итак, моя проблема здесь в том, что я хочу захватить EXACT SQL, который запускается с уровня отчета, чтобы при запуске его непосредственно в БД я получал точно такие же данные.

Заранее спасибо!

1 Ответ

2 голосов
/ 16 мая 2019

В генерации отчетов в BO есть два прохода.

Этап 1 включает создание оператора SQL, отправку в базу данных и получение набора результатов. В терминах BO полученный набор данных называется «микрокуб». Вы можете увидеть содержимое микрокубов на панели «Просмотр данных».

на этапе 2 данные из одного или нескольких микрокубов отображаются в визуальной форме отчета. Это НЕ делается с помощью SQL, но с использованием собственного внутреннего механизма вычислений BO - фильтров уровня отчетов / документов, формул, переменных, агрегаций и т. Д., Все это выполняется во время этого прохода.

Таким образом, SQL, который вы видите в поставщиках данных, (в основном) идентичен тому, что фактически отправляется в базовые базы данных (если запросы содержат подсказки, то текст подсказки будет заменен статическими значениями).

Если вы запускаете SQL из провайдеров данных непосредственно в Oracle, полученный вами результат должен соответствовать микрокубам , но он не будет соответствовать представленным данным в отчетах, поскольку проход 2 не выполняется с SQL.

...