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?我不知道,也許別人能夠回答。