OBIEE TOPN 显示功能

Posted

技术标签:

【中文标题】OBIEE TOPN 显示功能【英文标题】:OBIEE TOPN Display Function 【发布时间】:2014-09-22 08:21:36 【问题描述】:

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)

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

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

表达式如下:

TOPN (n_expression, n)

地点:

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

请注意,一个查询只能包含一个 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 OBIEE函数和SQL中的TOP()是一样的! @mark-p OBI 是针对 SQLServer 生成的查询吗?您的回答显示了 TOP 函数在 SQLServer 上的工作方式,但没有说明这是否是 OBI 调用的函数。 修复了来自 OBIEE 的示例物理 SQL

以上是关于OBIEE TOPN 显示功能的主要内容,如果未能解决你的问题,请参考以下文章

OBIEE 12.2.1.2 - 0,0% 显示在图表中

obiee中的预测功能,如何使用?

Obiee 度量仅显示空值

obiee 显示度量,即使它为空

RPD 的变化未显示在 OBIEE 中

Obiee 公式仅显示 TIMESTAMP 小时格式