Фильтр в запросе куба

Добрый день.

Есть дэш с конфигурацией

  dataSource: {
    koob: 'parusdbwrk.UDO_MV_ECONPLAN_BDDS_TOTAL_TBL',
    style: {
      SLABEL: {
        title: 'Поступления',
      },
      measures: {
        VALS: {
          title: 'млн. руб.',
          format: '-### ### ###.00',
          _fontSize: 10,
          textAlign: 'right',
        },
      },
    },
    xAxis: 'measures;SLABEL',
    sortBy: '+NUMS',
    filters: {
      SECTION: [
        '=',
        'Поступления',
      ],
      NDOC_YEAR: true,
      SDOC_MONTH: true,
      SDOC_QUART: true,
      SDEPARTMENT_1: true,
      SDEPARTMENT_2: true,
    },
    measures: [
      'VALS:VALS',
    ],
    dimensions: [
      'SLABEL',
    ],
  },
  view_class: '1II.koob-table-simple',

Есть управляющий дэш с конфигурацией:

    "options": [
      "EastPanel",
      "Hidden"
    ],
    "dataSource": {
      "koob": "parusdbwrk.UDO_MV_ECONPLAN_BDDS",
      "xAxis": "SDEPARTMENT_1;SDEPARTMENT_2;NDOC_YEAR;SDOC_QUART;SDOC_MONTH",
      "yAxis": "measures",
      "dimensions": [
        "SDEPARTMENT_1",
        "SDEPARTMENT_2",
        "NDOC_YEAR",
        "SDOC_QUART",
        "SDOC_MONTH"
      ]
    }

Есть куб с конфигурацией и запросом (в конфигурации поля NDOC_YEAR - “defaultValue”: “2023”):



{
  "skip_where": 1,
  "is_template": 1
}

select nums, ndoc_year, section, slabel, vals
from
(
  select
  m.nums,
  nvl(t1.NDOC_YEAR, t2.NDOC_YEAR) NDOC_YEAR,
  m.section,
  m.slabel,
  case m.slabel
    when 'План' then round(nvl(t1.sum_APPROVED/1000000,0),2)
    when 'Факт' then round(nvl(t1.sum_FULFILLED/1000000,0),2)
    when '% исполнения' then nvl(t1.sum_pr,0)
    when 'Динамика за месяц' then round((nvl(t1.sum_FULFILLED,0) - nvl(t2.sum_FULFILLED,0))/1000000)
    when '% динамики' then
      case 
        when nvl(t1.sum_FULFILLED,0) = 0 then 0
        else round(nvl(t2.sum_FULFILLED,0)/nvl(t1.sum_FULFILLED,1)*100, 0)
      end
  end vals
  from
   (
  
      select B.NVER_PLAN , B.NDOC_YEAR, B.sYearMonth,
      SECTION,
      sum(APPROVED) sum_APPROVED, sum(FULFILLED) sum_FULFILLED, round(nvl(sum(FULFILLED)/nvl(sum(APPROVED),1)*100, 0)) sum_pr 
      from PARUS.UDO_MV_ECONPLAN_BDDS B
      where 
            NHIERLEVEL = 1
            and
            NVER_ACTIVE  = 1
            and
            ((SECTION = 'Поступления') and (SSTRCODE != '0001_БДДС') or (SECTION = 'Выплаты') and (SSTRCODE != '0002_БДДС')
            )
            and
            --B.NDATE_YEAR = 2023
            ${filters(NDOC_YEAR,SDOC_QUART,SDOC_MONTH,SDEPARTMENT_1,SDEPARTMENT_2)}
      group by B.NDOC_YEAR, B.NVER_PLAN, B.sYearMonth, SECTION
      order by NVER_PLAN desc, section asc
   ) t1,   
   (
      select B.NVER_PLAN , B.NDOC_YEAR, B.sYearMonth,
      SECTION,
      nvl(sum(APPROVED),0) sum_APPROVED, nvl(sum(FULFILLED),0) sum_FULFILLED, round(nvl(sum(FULFILLED)/nvl(sum(APPROVED),1)*100, 0)) sum_pr
      from PARUS.UDO_MV_ECONPLAN_BDDS B
      where 
            NHIERLEVEL = 1
            and
            ((SECTION = 'Поступления') and (SSTRCODE != '0001_БДДС') or (SECTION = 'Выплаты') and (SSTRCODE != '0002_БДДС')
            )
            and
            --B.NDATE_YEAR = 2023
            ${filters(NDOC_YEAR,SDOC_QUART,SDOC_MONTH,SDEPARTMENT_1,SDEPARTMENT_2)}
            and 
            B.NVER_PLAN = ( select D.Nver_Plan-1 
                            from PARUS.UDO_MV_ECONPLAN_BDDS D
                            where ${filters(NDOC_YEAR)} /* D.NDATE_YEAR = 2023 */
                              and D.NVER_ACTIVE  = 1 and rownum =1
                          )
      group by B.NDOC_YEAR, B.NVER_PLAN, B.sYearMonth, SECTION
      order by NVER_PLAN desc, section asc
   ) t2,
   (
      select rownum nums,
             case 
               when rownum < 6 then 'Поступления'
               else 'Выплаты'
             end SECTION,
             case 
               when rownum = 1 then 'План'
               when rownum = 2 then 'Факт'
               when rownum = 3 then '% исполнения'
               when rownum = 4 then 'Динамика за месяц'
               when rownum = 5 then '% динамики'
               when rownum = 6 then 'План'
               when rownum = 7 then 'Факт'
               when rownum = 8 then '% исполнения'
               when rownum = 9 then 'Динамика за месяц'
               when rownum = 10 then '% динамики'
             end sLABEL
           from dual
           where LEVEL between 1 and 10
           connect by LEVEL <= 10
   ) M
  where 
   m.SECTION = t1.section(+)
   and
   m.section = t2.section(+)
  order by 1
)
where
  ${filters(SECTION)}
--order by nums

В итоге при изменении фильтров в упр. дэше в куб кроме значения для поля NDOC_YEAR ничего в подстановку
${filters(NDOC_YEAR,SDOC_QUART,SDOC_MONTH,SDEPARTMENT_1,SDEPARTMENT_2)}
не приходит.
Что я делаю не так?

Добрый день!

Подскажите версию и тип вашей БД.
Также советуем указывать ${filters(NDOC_YEAR,SDOC_QUART,SDOC_MONTH,SDEPARTMENT_1,SDEPARTMENT_2)} в нижнем регистре, как в JSON-configs, так и в дименшенах.

Если данные действия не помогают, рекомендуем для локализации проблемы ${filters()} указать пустыми, отправить запрос и посмотреть в логах, какой запрос уходит. Обрабатывается ли он в таком случае?

Добрый день.

Версия Oracle 11r2/
luxmsbi-web 8.12.0
luxmsbi-pg 8.12.5

Перевел наименование полей в нижний регистр, и год почему-то перестал передаваться.
Указал фильтр в запросе пустым, стали приходить 2 поля: (SECTION = ‘Поступления’) AND (NDOC_YEAR = ‘2023’)
Складывается впечателение, что если в результате выборки не выводятся эти же поля, что в в фильтре, то он их игнорирует. Таким образовом применяет фильтр по году(NDOC_YEAR ), но не желает по месяцу(SDOC_MONTH), например.

Добрый день!

Приложите пожалуйста лог Datagate за тот период, когда выполнялся данный запрос.

Добрый день.

Добавилась ещё одна проблема.
Обновили данный экземляр luxms bi на 9-ую версию.
И luxmsbi-datagate больше не выводит в журнал тексты запросов. По команде journalctl -u luxmsbi-datagate -f вижу только различные некие события java при обновлении страницы или дэша.
Опция logging.level.com.luxms.bi.datagate.service.DatagateService=DEBUG в /opt/luxmsbi/conf/datagate/application.properties раскоментарена и сервис перезапущен.

Напишите пожалуйста по данному вопросу в поддержку:
support@yasp.ru

Рекомендую использовать информацию по включению DEBUG из поста ниже:
https://help.luxmsbi.com/-1255/debug-datagate

Добрый день!

Для решения возникшей проблемы рекомендуем воспользоваться статьей - https://help.luxmsbi.com/-1299