Добрый день.
Есть проблема при просмотре koob-table-simple, возможно только при работе с Oracle.
Версия luxmsbi-pg-8.8.18
При обновлении страницы таблицей сначала выполняется странный запрос. Зачем-то перемножаются таблицы, данные искуственно увеличиваются в 11 раз, потом из всего отсортированного набора берутся первые 128(опять некая магическая цифра) строк
Далее похоже этот результат бросается и никак не используется. Зачем нагружать БД?
SELECT *
FROM (
SELECT koob__inner__select__.*, ROWNUM AS "koob__row__num__"
FROM
(SELECT koob__range__ as "measure_idx", SDOC_NUM as "SDOC_NUM", SEVNSTAT_NAME as "SEVNSTAT_NAME", SADMIN as "SADMIN",
SDEPARTMENT as "SDEPARTMENT", SPROGRAM as "SPROGRAM", DESCRIPTION as "DESCRIPTION", (SUM_AGR) as "s",
(TO_CHAR(DDATE_CON_PLAN,'DD.MM.YYYY')) as "SDATE_CON_PLAN", (TO_CHAR(DDATE_DELIVERY,'DD.MM.YYYY')) as "SDATE_DELIVERY",
SPURCHASE_CODE as "SPURCHASE_CODE", SREQUEST_TYPE as "SREQUEST_TYPE"
FROM
(
здесь внутренний запрос самого куба
) PARUS_UDO_MV_GOVBUYRQ_INF,
(
select LEVEL-1 AS koob__range__ from dual
where LEVEL between 0+1 and 11
connect by LEVEL <= 11
)
WHERE (1=1) AND (NDOC_YEAR = '2022')
ORDER BY "measure_idx"
) koob__inner__select__
) koob__top__level__select__
WHERE "koob__row__num__" <= 128
Далее начинается постраничное получение данных в визуальную таблицу по 100 строк.
Выполняется первый запрос:
SELECT * FROM
(SELECT koob__inner__select__.*, ROWNUM AS "koob__row__num__"
FROM
(SELECT SDOC_NUM as "SDOC_NUM", SEVNSTAT_NAME as "SEVNSTAT_NAME", SADMIN as "SADMIN",
SDEPARTMENT as "SDEPARTMENT", SPROGRAM as "SPROGRAM", DESCRIPTION as "DESCRIPTION",
(SUM_AGR) as "s", (TO_CHAR(DDATE_CON_PLAN,'DD.MM.YYYY')) as "SDATE_CON_PLAN",
(TO_CHAR(DDATE_DELIVERY,'DD.MM.YYYY')) as "SDATE_DELIVERY", SPURCHASE_CODE as "SPURCHASE_CODE",
SREQUEST_TYPE as "SREQUEST_TYPE"
FROM
(здесь внутренний запрос самого куба
)
WHERE (1=1) AND (NDOC_YEAR = '2022')
ORDER BY "SDOC_NUM"
) koob__inner__select__
) koob__top__level__select__
WHERE "koob__row__num__" <= 100
Пролистываем до низа, выполняется следующий такой же запрос с условием
WHERE “koob__row__num__” > 100 AND “koob__row__num__” <= (100 + 100)
и нас сбрасывает в визуальной таблице на самую первую строчку(таблица отрисовалась на экране заново с первой строки), но данные в неё добавились.
Опять проматываем до низу ( очередной запрос WHERE “koob__row__num__” > 200 AND “koob__row__num__” <= (200 + 100)) и снова оказываемся на первой строчке с самого верха таблицы.
И так, пока не выберем все данные. Очень неудобно просматривать при большом количестве строк.
Особенности реализации постраничного вывода для Oracle(ORDER BY “SDOC_NUM” - как я понял просто взято первое поле из набора) отключают указанную сортировку из JSON-конфига:
“display”: {
“sort”: “DESC”,
“sortBy”: “s” – была попытка сортировать по-умолчанию по сумме
}
Просьба это учесть - если в конфиге указана сортировка, то использовать по-умолчанию её в запросе(определить нужное поле), а не просто взять первое поле из набора.