最近在做一个需求,数据量比较大,遂自己根据查询语句建了几个索引,但是依然发现效果不明显。
让DBA帮忙优化后,指出在查询语句中,关于日期的过滤写法有问题:
T46460.gmv_date = TIMESTAMP '2012-11-01 00:00:00'
应该改成to_date的方式,这样执行起来要快不少。
首先去查了下为什么这种写法就会很慢,我在answer中针对日期列指定了具体的日期,比如2012年11月1日,以生成查询sql,BIEE在生成查询sql的时候,会用timestamp的方式进行转换,但是这样就会跳过该列的索引了,导致相当于进行了全表扫描来着。
另外的一个现象:
在查询提示器里,选择日期,一开始没有时分秒,一旦选择了执行后,查询提示器里会自动的加上了时分秒。
所以解决方案是,如何在生成的查询sql里保证使用的是to_date函数即可。
网上老外的博客里提到了针对timestamp列建立索引的方式来优化查询。
链接如下:http://obiee101.blogspot.com/2009/03/obiee-date-timestamp-and-oracle-indexes.html
遇到类似问题的文章链接:
http://www.rittmanmead.com/2009/03/dates-timestamp-and-oracle-bi-answers-filters/
数据平台的同事的文章:
http://www.alidata.org/archives/107
经过检查,rpd中针对日期维度使用的数据类型为datetime,于是修改成date类型。
这样改好后,的确查询的语句使用了to_date函数,查询性能提升明显。
但是发布后,却引入了新的问题。
发现默认展示没有问题,针对报表进行日期选择查询后,报如下错误:
A date value was expected
经过上网查询资料,说是BIEE的一个bug,patch的说明如下:
http://obiee101.blogspot.com/2010/01/obiee-patches-101341-part-2.html
在网上搜索其他文章,
https://forums.oracle.com/forums/thread.jspa?messageID=10684745
http://blog.csdn.net/mlz_2/article/details/6154805
可以通过修改globalfilterprompt.js文件解决。该文件的路径为:
OracleBI\oc4j_bi\j2ee\home\applications\analytics\analytics\res\b_mozilla\prompts\globalfilterprompt.js
我用firebug进行了debug,该文件的230多行,
var sTimeZoneOffset = tArgs[3];
var nOffset = parseInt(sTimeZoneOffset)
if (nOffset)
{
var tDTP = new DateTimeParser();
for (var i = 0; i < tValues.length; ++i)
{
tValues[i] = saw.tz.parseAndAdjustTimeZoneOffset(tValues[i], nOffset);
}
}
在for循环里面,parseAndAdjustTimeZoneOffset方法返回后,值就变成了日期+时分秒的格式。
该方法是在OracleBI\oc4j_bi\j2ee\home\applications\analytics\analytics\res\b_mozilla\common\datetime.js文件里,873行左右。
saw.tz.parseAndAdjustTimeZoneOffset = function (sDateTime, nTimeZoneOffset)
{
if (sDateTime)
{
if (nTimeZoneOffset)
{
var tDTP = new DateTimeParser();
var tDateTime = tDTP.parse(sDateTime, 1 | 2 | 4 | 8 | 16 | 32);
if (tDateTime)
{
tDateTime.adjustTimeZoneOffset(nTimeZoneOffset);
var sValue = tDateTime.dateString() + ' ' + tDateTime.timeString();
return sValue;
}
}
}
return sDateTime;
}
显式的加上了时分秒,因为上述的文章里没有具体讲到如何去更改,所以我就尝试将
tValues[i] = saw.tz.parseAndAdjustTimeZoneOffset(tValues[i], nOffset);
的调用给干掉。重新测试后,发现问题并未解决。估计js改的不彻底。
后续想到,其实我的本地OBIEE环境并没有遇到这个类似的问题。既然oracle已经打了patch,估计是我们的BIEE版本比线上的BIEE版本要新(事实上也正是如此)。
于是也不纠结js具体如何改了,把线上的js文件和我本地的js文件了进行了对比,发现的确是有差异来着。
于是将本地的js文件替换掉线上的js文件,最终问题解决。
补充下,记得清浏览器的缓存,否则浏览器加载的还是老的js,这个就坑爹了。
There is one last thing you need to know before proceeding – the browser caches the JS files so you’ll need to clear the browser’s cache every time you change your code. In Internet Explorer, you can do it in Tools -> Internet Options -> Delete Files -> Delete all offline content. You’ll do it a lot while developing, so having a button that does that will be great. You can use Microsoft’s IE developer toolbar or another developer toolbar.
分享到:
相关推荐
Oracle BIEE(Business Intelligence Enterprise Edition)是一款强大的商业智能解决方案,用于数据分析和报表生成。本文主要探讨如何使用BIEE Administration Tool创建和管理BIEE资料库,包括创建物理模型、逻辑...
本文档“BIEE_常见问题详细解答”针对BIEE开发过程中遇到的各类问题进行了深入剖析,为开发者提供了宝贵的解决方案和参考。** 1. **登录问题**:在BIEE使用中,有时会遇到无法登录或者登录后权限不足的情况。这可能...
Oracle BIEE 常见问题解决办法汇总 问题1:提示组合 * 添加筛选器选择对应的列 * 在筛选器属性页面,运算符中选择提示 知识点: 在 Oracle BIEE 中,添加筛选器可以根据需要选择对应的列,并在筛选器属性页面中...
### BIEE常见问题解答 #### 一、仪表板分组下拉显示 在Oracle Business Intelligence Enterprise Edition (BIEE) 10g中,为了更好地管理大量的仪表板,可以通过以下步骤实现仪表板分组下拉显示: 1. **配置`...
### Oracle BIEE 常见问题解答 #### 一、仪表板操作与配置 **1. 仪表板分组下拉显示** - **解决办法**:为了实现仪表板分组下拉显示的功能,需要对`instanceconfig.xml`进行配置。具体来说,在此配置文件中加入`...
以下是一些针对BIEE 11g常见问题的详细解答: 1. **如何实现下钻逻辑维**: 下钻逻辑维在BIEE中通常通过层次结构来实现。在Repository Design (RPD) 中,创建一个包含层次关系的维度,并在分析视图中设置相应的下...
BIEE入门视频,BIEE 资料,轻松学会BIEE,BIEE教程
Oracle Business Intelligence Enterprise Edition (BIEE) 是一款强大的商业智能平台,主要负责数据整合、分析和展示,帮助企业做出...通过实际操作和练习,你将能够更好地利用BIEE来解决业务问题,提供有价值的洞察。
《深入浅出Oracle之BIEE》这篇文章主要介绍了Oracle Business Intelligence Enterprise Edition (BIEE) 的安装过程以及如何通过一个完整的实例来理解BIEE的功能和操作。Oracle BIEE是Oracle公司提供的一款强大的商业...
Oracle Business Intelligence Enterprise Edition (BIEE) 是一个强大的商业智能平台,用于数据分析和报表生成。在BIEE中,仪表盘是用户交互的...在实践中,结合官方文档和社区资源,可以更好地解决遇到的问题和挑战。
【标题】:“biee简单实例教程” 在Oracle Business Intelligence Enterprise Edition (BIEE)中,创建简单的报表和数据透视表是数据分析的基础操作。本教程旨在引导初学者掌握这些基本技能,帮助他们更好地理解和...
**Oracle Business Intelligence Enterprise Edition (BIEE) 入门学习指南** ...提供的“biee入门”压缩包文件应该包含了初步的学习材料,包括文档、教程等,充分利用这些资源,你的BIEE学习之旅将会更加顺利。
9. **故障排查与支持**:手册最后会提供一些常见的问题解决策略,帮助用户诊断和修复系统故障,同时也会介绍Oracle提供的技术支持资源。 通过深入阅读并实践《BIEE12C用户操作手册(中文)》,用户不仅可以掌握BIEE...
**正文** 标题“BIEE资料(大部分)”暗示了这个压缩包主要包含了与Business Intelligence Enterprise Edition(BIEE...通过深入学习这些材料,不仅可以提升对BIEE的理解,还能增强在实际工作中运用BI解决问题的能力。
在使用过程中,BIEE可能会遇到各种问题,这通常与配置、性能、数据集成或用户访问权限有关。以下是一些可能的问题及其原因: 1. **性能问题**:当BIEE运行缓慢或查询时间过长时,可能的原因包括数据库索引不足、...
最后,用户将了解如何诊断和解决BIEE11G遇到的问题,以及如何进行日常维护,确保系统的正常运行。 通过这份全中文的BIEE11G培训资料,无论是初学者还是有经验的用户,都能得到全面的指导,进一步提升在商业智能...
安装过程中产生的日志文件对于排查问题至关重要,应定期检查和分析这些日志,以便了解安装状态和可能的错误信息。 1.3 配置 1.3.1 安装后的目录 安装完成后,了解BIEE的目录结构对后续的配置和管理至关重要。例如,...
当我们需要将BIEE的功能集成到Java应用程序中时,通常会通过BIEE提供的Web服务接口来实现。本篇文章将深入探讨如何利用BIEE的Web服务接口,让Java程序调用其中的方法,实现两者之间的紧密结合。 首先,理解BIEE的...
在IT行业中,BIEE(Business Intelligence Enterprise Edition)是Oracle提供的一个强大的商业智能解决方案,它允许用户从各种数据源中获取、分析并报告数据。而LDAP(Lightweight Directory Access Protocol)则是...