0

Как работает функция TOPN Display в OBIEE? И как я могу это сделать с помощью SQL Server?OBIEE TOPN Функция дисплея

where TOPN(N,10) <= 10) 

Это мой запрос

SELECT 
    N, 
    SUM(column), 
    REPORT_SUM(SUM(column) BY N) 
FROM 
    TABLE 
WHERE 
    (TOPN(N,10) <= 10) 

ответ

1

С точки зрения OBIEE, функция TopN позволяет OBIEE выполнить анализ TopN. Анализ Top 'N' относится к тому, чтобы получить верхние n строк из набора результатов (например, найти трех лучших сотрудников по зарплате). Когда вы добавляете TOPN в качестве столбца формулы в ответ, данные автоматически фильтруются. Вам не нужно добавлять какой-либо специальный фильтр TOPN.

выражение выглядит следующим образом:

TOPN (n_expression, n) 

где:

  • n_expression это любое выражение, которое вычисляется в виде числового значения.
  • n - это N из TopN, которое является любым положительным целым числом. Он представляет верхнее число ранжировок, отображаемых в результирующем наборе, 1 - самый высокий ранг.

В качестве примечания, запрос может содержать только одно выражение TOPN.

Ниже приведен скриншот формулы вошел, и физический SQL выдается в базу данных из OBIEE для формулы:

Image of the TOPN formula used

SELECT DISTINCT D1.c1 AS c1, D1.c2 AS c2, D1.c3 AS c3 FROM (SELECT DISTINCT 0 AS c1, D1.c1 AS c2, CASE WHEN CASE WHEN D1.c2 IS NOT NULL THEN RANK() OVER (ORDER BY D1.c2 DESC NULLS LAST) END <= 8 THEN CASE WHEN D1.c2 IS NOT NULL THEN RANK() OVER (ORDER BY D1.c2 DESC NULLS LAST) END END AS c3 FROM ( SELECT SUM (T428861.POUND_AMT) AS c1, T428861.PURCH_ORDER_NUM AS c2 FROM WC_ASN_SHIP_F T428861 WHERE (T428861.FINAL_SAMPLE_FLG = 'Y' AND T428861.DELETE_FLG = 'N') GROUP BY T428861.PURCH_ORDER_NUM) D1) D1 WHERE (D1.c3 <= 8) ORDER BY c1

http://gerardnico.com/wiki/dat/obiee/topn

+1

Я не думаю, что функция TOPN OBIEE совпадает с TOP() в SQL! – QAIS

+0

@ mark-p Является ли запрос OBI генерируется против SQLServer? Ваш ответ показывает, как функция TOP работает на SQLServer, но не указывает, является ли это функция, которую вызывает OBI. – jackohug

+0

Исправлено с примером физического SQL из OBIEE –

2

См http://gerardnico.com/wiki/dat/obiee/topn

Функция topn используется в критериях c формула оланы, но имеет результат меньшего набора данных. Если вы используете topn (столбец, 10), ваш результирующий набор будет иметь только 10 строк.

Функция topn не возвращается к базе данных, но соответствующий запрос будет отправлен в базу данных. Например, в Oracle RDBMS подзапрос содержит функцию ранжирования и внешние фильтры запросов, основанные на ранжировании.

Какой запрос он отправляет на SQLServer? Я не знаю и, возможно, кто-то еще сможет ответить.