Oracle BIEE11中提供了EVALUATE这个函数,扩展了可以使用oracle函数的功能.
以前看过晃晃悠悠写的EVALUATE的用法。我想补充另外用法。
EVALUATE系列不只有BIEE Admin tool 或者answer中提到的EVALUATE 和 EVALUATE_AGGR两种函数事实上还有另外的两个
EVALUATE:
EVALUATE_AGGR:
EVALUATE_ANALYTIC:
EVALUATE_PREDICATE:
这两天在工作中遇到这样一个需求,因为分析数据需要涉及到排序,而且排序的规则不只有一个不是通常的rank()就可以解决,且通常会变,面对这种情况,排序存在数据库中不是很好的办法, 这时候我想起来有一个叫做EVALUATE的函数。
通过 EVALUATE 结合oracle数据库中的 rank() over(partion group by ... order...)来实现数据排序。
EVALUATE ('rank() over (PARTITION BY %1,%2 ORDER BY %3 desc)' as INT, "D1 Time"."Day Of Year Biee","D2 Platform"."Platform",CASE WHEN "F3 Bug Report"."崩溃IP数">0 THEN "F1 Device Useage"."IP数day ver" ELSE 0 END)
上面的语句出来了,排序也会按照时间和平台给我排了,但是还遇到一个问题在表格中可以显示排序号正确.但是在出排名曲线图时总时会出现数据显示不出来的情况.
接着换成 EVALUATE_ANALYTIC,
EVALUATE_ANALYTIC ('rank() over (PARTITION BY %1,%2 ORDER BY %3 desc)' as INT, "D1 Time"."Day Of Year Biee","D2 Platform"."Platform",CASE WHEN "F3 Bug Report"."崩溃IP数">0 THEN "F1 Device Useage"."IP数day ver" ELSE 0 END)
如表格
同时,曲线图可以正常显示了。
附:
EVALUATE
此函数将包含作为参数的可选引用列的指定数据库函数传递给后端数据源,以供求值时使用。此函数专门用于标量计算;当要使用由基础数据源识别但 Oracle BI Server 不支持的专用数据库函数时,此函数会十分有用。
嵌入式数据库函数可能需要一个或多个列。这些列将由该函数中的 %1 到 %N 引用。实际列必须列在该函数后面。
默认情况下禁用了使用 EVALUATE 的功能。要启用对此函数的支持,请在 NQSConfig.INI 中更改 EVALUATE_SUPPORT_LEVEL 参数。有关详细信息,请参阅 Oracle Fusion Middleware System Administrator's Guide for Oracle Business Intelligence Enterprise Edition。
语法
EVALUATE('db_function(%1...%N)' [AS data_type] [, column1, columnN])
其中:
db_function 是由基础数据源识别的任何有效数据库函数。
data_type 是可选参数,它指定返回结果的数据类型。每当无法从输入参数可靠地预测返回数据类型时,就可以使用此参数。但是,请勿使用此参数进行类型转换;如果该函数需要返回特定数据类型,请添加显式转换。如果特定于数据库的函数用于生成不必返回到 Oracle BI Server 的中间结果但该函数的返回类型不受 Oracle BI Server 支持,则通常可以忽略此参数。
column1 到 columnN 是可选参数,这是以逗号分隔的列的列表。
示例
此示例显示嵌入式数据库函数。
SELECT EVALUATE('instr(%1, %2)', address, 'Foster City') FROM employees
使用 EVALUATE_AGGREGATE 和 EVALUATE 来利用唯一 Essbase 函数的示例
以下示例使用了 EVALUATE_AGGREGATE 和 EVALUATE 函数。请注意,这些表达式应用于引用了物理立方的逻辑表源中的列。请使用 EVALUATE_AGGREGATE 实施定制聚合。例如,您可能希望将总体区域利润与区域中排名前三名的产品的利润进行比较。您可以定义新度量来表示前三名产品的利润,从而生成以下逻辑 SQL 语句:
SELECT Region, Profit, EVALUATE_AGGREGATE('SUM(TopCount(%1.members, 3, %2), %3)',
Products, Profit, Profit) Top_3_prod_Profit FROM SampleBasic
Oracle BI Server 为定制聚合生成以下表达式:
member [Measures].[MS1] AS 'SUM(Topcount([Product].Generations(6).members,3,[Measures].[Profit]),[Measures].[Profit])'
在投影维上使用 EVALUATE 函数以实施聚合后计算的标量函数。如果 EVALUATE 的定义对不在查询中的维 (或属性) 进行了显式引用,则该函数可能会更改查询的粒度。
例如,如果您希望查看某个区域中按销售额排名的前 5 个产品的利润,则在创建适用的度量之后,生成的逻辑 SQL 语句如下所示
SELECT Region, EVALUATE('TopCount(%1.members, 5, %2)' as VARCHAR(20), Products, Sales), Profits FROM SampleBasic
Oracle BI Server 生成以下表达式来检索前 5 个产品:
set [Evaluate0] as '{Topcount([Product].Generations(6).members,5,[Measures].[Sales]) }'
EVALUATE_ANALYTIC
此函数将包含作为参数的可选引用列的指定数据库分析函数传递给后端数据源,以供求值时使用。
嵌入式数据库函数可能需要一个或多个列。这些列将由该函数中的 %1 到 %N 引用。实际列必须列在该函数后面。
默认情况下禁用了使用 EVALUATE_ANALYTIC 的功能。要启用对此函数的支持,请在 NQSConfig.INI 中更改 EVALUATE_SUPPORT_LEVEL 参数。有关详细信息,请参阅 Oracle Fusion Middleware System Administrator's Guide for Oracle Business Intelligence Enterprise Edition。
语法
EVALUATE_ANALYTIC('db_function(%1...%N)' [AS data_type] [, column1, columnN])
其中:
db_function 是由基础数据源识别的任何有效数据库分析函数。
data_type 是可选参数,它指定返回结果的数据类型。每当无法从输入参数可靠地预测返回数据类型时,就可以使用此参数。但是,请勿使用此参数进行类型转换;如果该函数需要返回特定数据类型,请添加显式转换。如果特定于数据库的分析函数用于生成不必返回到 Oracle BI Server 的中间结果但该函数的返回类型不受 Oracle BI Server 支持,则通常可以忽略此参数。
column1 到 columnN 是可选参数,这是以逗号分隔的列的列表。
示例
此示例显示嵌入式数据库分析函数。
EVALUATE_ANALYTIC('dense_rank() over(order by %1 )' AS INT,sales.revenue)
如果前面的示例需要返回双精度类型,则应添加显式转换,如下所示:
CAST(EVALUATE_ANALYTIC('Rank(%1.dimension.currentmember, %2.members)',
"Foodmart93"."Time"."Month" as Double)
EVALUATE_AGGR
此函数将包含作为参数的可选引用列的指定数据库函数传递给后端数据源,以供求值时使用。此函数专门用于带有 GROUP BY 子句的聚合函数。
嵌入式数据库函数可能需要一个或多个列。这些列将由该函数中的 %1 到 %N 引用。实际列必须列在该函数后面。
默认情况下禁用了使用 EVALUATE_AGGR 的功能。要启用对此函数的支持,请在 NQSConfig.INI 中更改 EVALUATE_SUPPORT_LEVEL 参数。有关详细信息,请参阅 Oracle Fusion Middleware System Administrator's Guide for Oracle Business Intelligence Enterprise Edition。
语法
EVALUATE_AGGR('db_agg_function(%1...%N)' [AS data_type] [, column1, columnN)
其中:
db_agg_function 是由基础数据源识别的任何有效聚合数据库函数。
data_type 是可选参数,它指定返回结果的数据类型。每当无法从输入参数可靠地预测返回数据类型时,就可以使用此参数。但是,请勿使用此参数进行类型转换;如果该函数需要返回特定数据类型,请添加显式转换。如果特定于数据库的函数用于生成不必返回到 Oracle BI Server 的中间结果但该函数的返回类型不受 Oracle BI Server 支持,则通常可以忽略此参数。
column1 到 columnN 是可选参数,这是以逗号分隔的列的列表。
示例
EVALUATE_AGGR('REGR_SLOPE(%1, %2)', sales.quantity, market.marketkey)
EVALUATE_PREDICATE
此函数将包含作为参数的可选引用列的指定数据库函数传递给后端数据源,以供求值时使用。此函数专门用于带有布尔返回类型的函数。
嵌入式数据库函数可能需要一个或多个列。这些列将由该函数中的 %1 到 %N 引用。实际列必须列在该函数后面。
请注意,不支持将 EVALUATE_PREDICATE 用于 Essbase 数据源。
默认情况下禁用了使用 EVALUATE_PREDICATE 的功能。要启用对此函数的支持,请在 NQSConfig.INI 中更改 EVALUATE_SUPPORT_LEVEL 参数。有关详细信息,请参阅 Oracle Fusion Middleware System Administrator's Guide for Oracle Business Intelligence Enterprise Edition。
语法
EVALUATE_PREDICATE('db_function(%1...%N)', [, column1, columnN)
其中:
db_function 是由基础数据源识别的、具有布尔返回类型的任何有效数据库函数。
column1 到 columnN 是可选参数,这是以逗号分隔的列的列表。
如果希望对数据库函数建立模型以进行比较,则不应使用 EVALUATE_PREDICATE。请改为使用 EVALUATE 并在函数外部进行比较。例如,不要使用 EVALUATE_PREDICATE,如下所示:
EVALUATE_PREDICATE('dense_rank() over (order by 1% ) < 5', sales.revenue)
请改为使用 EVALUATE,如下所示:
EVALUATE('dense_rank() over (order by 1% ) ', sales.revenue) < 5
示例
SELECT year, Sales AS DOUBLE,CAST(EVALUATE('OLAP_EXPRESSION(%1,''LAG(units_cube_
sales, 1, time, time LEVELREL time_levelrel)'')', OLAP_CALC) AS DOUBLE) FROM
"Global".Time, "Global"."Facts - sales" WHERE EVALUATE_PREDICATE('OLAP_
CONDITION(%1, ''LIMIT time KEEP ''''1'''', ''''2'''', ''''3'''', ''''4'''' '')
=1', OLAP_CALC) ORDER BY year;
- 大小: 49.5 KB
分享到:
相关推荐
Oracle BIEE 架构还提供了一个基于 ODBC 的数据访问机制,允许用户从不同的数据源中检索数据,例如关系数据库、平面文件、XML 文件等。 Oracle BIEE 架构中的 Oracle Interactive Dashboard 是一个交互式的仪表盘...
Oracle BIEE支持使用ODBC和JDBC连接到各种数据源,通过Data Integration工具如Oracle Data Integrator (ODI)实现数据抽取、转换和加载(ETL)。 三、数据仓库与数据模型 Oracle BIEE通常与Oracle数据库中的数据仓库...
BIEE使用Oracle Warehouse Builder(OWB)进行数据抽取、转换和加载(ETL)过程,确保数据质量并准备数据分析。 BIEE的技术架构主要由以下组件构成: 1. **Oracle BI Server**:负责处理查询和分析请求,管理元数据...
2. **数据集成**:Oracle BIEE支持多种数据源,包括Oracle数据库、非Oracle数据库、文件系统等,通过Data Access Layer (DAL) 实现数据的抽取、转换和加载(ETL)。 3. **元数据管理**:元数据是理解数据的关键,...
知识点: 在 Oracle BIEE 中,默认禁止直接通过 sql 生成报表,需要修改开通进入设置—>管理—>权限管理,修改执行直接数据库请求为管理员组。 问题9:Ibot 安装 * 安装好 BIEE 10g 之后,服务中不是出现了 Oracle...
### SUSE Linux Enterprise Server 10 下安装 Oracle BIEE 10g 详细步骤 #### 系统环境概述 本篇文章将详细介绍如何在 SUSE Linux Enterprise Server 10 (i586) 操作系统上安装 Oracle Business Intelligence ...
在 Oracle BIEE 中,除了外观和布局的自定义之外,还可以更改默认的应用程序短语,以使其更加贴近用户的实际使用场景。 ##### 3.1 更改默认应用短语的方法 1. **访问管理控制台**:通过 Oracle BIEE 的管理控制台...
Oracle BIEE 提供的解决方法是时间轴函数。时间轴函数是位于逻辑模型层内的函数,使用时间轴函数能够定义出“去年同期值”或“本年累计值”之类的与时间相关的计算字段。Oracle BIEE 现在支持两个时间轴函数: Ago...
Oracle BIEE 11g 需要一个符合特定版本和字符集的数据库环境,即 Oracle Database 11g Enterprise Edition Release 10.2.0.4.0 或以上版本,并且数据库的字符集应设置为 UTF8。这是因为 BIEE 需要与数据库进行交互,...
Oracle BIEE(Business Intelligence Enterprise Edition)11g是甲骨文公司推出的一款商业智能产品,它提供了数据整合、数据分析、报表制作、在线分析处理(OLAP)、企业报告等功能,是实现企业数据仓库和业务智能...
Oracle BIEE的全方面介绍,为什么选用BIEE,满足了哪些业务等可以参考
- **优化策略**:提高Oracle BIEE的性能主要包括几个方面:优化查询效率、调整缓存设置、改进数据库索引结构以及利用硬件资源等。此外,还可以考虑使用负载均衡技术和集群部署来进一步提升性能。 以上仅为部分常见...
Oracle Business Intelligence Enterprise Edition (BIEE) 是一款强大的企业级商业智能平台,它为企业提供了全面的数据分析、报表制作和决策支持功能。这篇文章将通过一个"Hello World"式的例子,引导你了解如何在...
本开发手册强调了如何将Oracle BIEE的功能集成到使用Oracle JDeveloper、ADF和WebCenter构建的应用程序中。开发者通过这个手册能够了解和掌握如何使用Oracle BIEE提供的各种工具和组件,实现对数据的提取、转换、...
Oracle BIEE(Business Intelligence Enterprise Edition)是一款强大的商业智能解决方案,用于数据分析和报表制作。本文档主要涵盖了从数据源的导入到前端展示的全过程,详细介绍了如何使用BIEE Administration ...
Oracle Business Intelligence Enterprise Edition (BIEE) 是Oracle公司推出的一款强大的商业智能解决方案,它提供了从数据集成、数据仓库建设到数据分析的一整套工具。本中文教程旨在帮助用户深入理解和掌握BIEE的...
Oracle BIEE 11G 企业版完全安装文档