OBIEE TOPN显示功能

时间:2014-09-22 08:21:36

标签: sql-server business-intelligence obiee oracle-fusion-middleware

OBIEE中的TOPN显示功能如何工作?我怎么能用SQL Server做到这一点?

where TOPN(N,10) <= 10)

这是我的查询

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

2 个答案:

答案 0 :(得分:2)

请参阅http://gerardnico.com/wiki/dat/obiee/topn

topn函数用于条件列公式,但具有较小数据集的结果。如果使用topn(列,10),结果集将只有10行。

topn函数不会传递回数据库,但会向数据库发送适当的查询。例如,对于Oracle RDBMS,子查询包含排名函数和基于排名的外部查询过滤器。

它向SQLServer提交了什么查询?我不知道,也许其他人也能回答。

答案 1 :(得分:1)

从OBIEE的角度来看,TOPN功能允许OBIEE执行TOPN分析。 Top'N'分析是指从结果集中获取前n行(例如,按薪水查找前三名员工)。在答案中添加TOPN作为公式列时,会自动过滤数据。您无需添加任何特殊的TOPN过滤器。

表达式如下:

TOPN (n_expression, n)

其中:

  • n_expression是任何计算结果为数值的表达式。
  • n是TopN的N,它是任何正整数。它表示结果集中显示的最高排名数,1表示排名最高。

注意,查询只能包含一个TOPN表达式。

下面是输入公式的屏幕截图,以及从OBIEE发给数据库的物理SQL公式:

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