logo

6 дек. 2009 г.

BIEE: фильтр по рангу в таблице среза

Что если вы хотите фильтровать кол-во выводимых в Answer’е строк? Нет ничего проще – скажете вы – используйте функцию RANK.
Но как быть с таблицей среза?


Допустим, у меня есть представление, показывающее раскладку выручки по продукции в разрезе периодов. Я хочу вывести информацию лишь по 10 видам продукции с максимальным ID.

Я создаю вычисляемый столбец с функцией RANK по ID продукта, ограничиваю им выборку.



Всего одна строка таблицы среза???

Переключаюсь в режим табличного просмотра.


Увеличу фильтр.



Все верно, мне нужен не RANK, а DENSE_RANK.
Стандартно такой функции BIEE нам не предоставляет. Но мы можем получить ее за счет EVALUATE.




Попробуем сделать фильтр по новому столбцу



Немножко обманем систему.




Вот что получим при просмотре в табличном виде и в виде таблицы среза.



П.С. BI Server не «оборачивает» во внешний запрос нашу выборку если в ней нет функций сведения. Добавляя выражение RSUM(1) – RSUM(1) мы заставили его по сути сделать:

Select * from
(select DENSE_RANK() over (…) DR, … from …) subq
Where subq.DR < 10

Комментариев нет:

Отправить комментарий