0

TOPI显示功能在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是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

+1

我不认为TOPN OBIEE函数与SQL中的TOP()相同! – QAIS 2014-09-22 12:51:23

+0

@ mark-p查询OBI是否针对SQLServer生成?您的答案显示了TOP函数如何在SQLServer上工作,但没有说明这是否是OBI调用的函数。 – jackohug 2014-09-24 15:43:28

+0

修复了来自OBIEE的物理SQL示例 – 2014-09-26 11:16:01

2

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

topn函数用于标准c olumn公式,但具有较小数据集的结果。如果你使用topn(第10列),你的结果集只有10行。

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

它将什么查询提交给SQLServer?我不知道,也许别人能够回答。