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)
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)
從OBIEE的角度來看,TOPN功能允許OBIEE進行TOPN分析。 Top'N'分析是指從結果集中獲取前n行(例如按薪水查找前三名員工)。在答案中添加TOPN作爲公式列時,數據會自動過濾。您不需要添加任何特殊的TOPN過濾器。
表達如下:
TOPN (n_expression, n)
其中:
作爲說明,查詢只能包含一個TOPN表達式。
下面是進入式的屏幕截圖,並從OBIEE向數據庫發出該公式的物理SQL:
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
topn函數用於標準c olumn公式,但具有較小數據集的結果。如果你使用topn(第10列),你的結果集只有10行。
topn函數不會傳遞迴數據庫,但會將適當的查詢發送到數據庫。例如,對於Oracle RDBMS,子查詢包含秩函數和基於秩的外部查詢過濾器。
它將什麼查詢提交給SQLServer?我不知道,也許別人能夠回答。
我不認爲TOPN OBIEE函數與SQL中的TOP()相同! – QAIS 2014-09-22 12:51:23
@ mark-p查詢OBI是否針對SQLServer生成?您的答案顯示了TOP函數如何在SQLServer上工作,但沒有說明這是否是OBI調用的函數。 – jackohug 2014-09-24 15:43:28
修復了來自OBIEE的物理SQL示例 – 2014-09-26 11:16:01