`
jianchen
  • 浏览: 349461 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

OBIEE清除缓存

    博客分类:
  • BI
阅读更多

问题:

由于底层事实表的基础上又增加了聚合表,聚合表是利用kettle去定时聚合的。不过很有可能聚合表还没将数据聚合OK时(因为聚合的时间可能比较长),用户已经进行了查询,导致了缓存,以后即使聚合完成了,在不清除缓存的情况,依然查不到最新的数据。

 

方案一:在用户反馈查询不到最新数据时,手动的利用admin Tool中的cache管理工具,进行清除缓存。

 

评估:

1,用户反馈才知道要清除缓存。这样带来的用户体验不好。

2,界面上管理还是挺方便的。可以指定清除哪张表,或者全选进行清除,也可以清除某个用户的缓存。

 

方案二:OBIEE提供了一种事件表(event table)的机制,

该表的结构如下:

create table UET (
UpdateType Integer not null, --一般为1
UpdateTime date DEFAULT SYSDATE not null, --最新的更新时间,必须唯一
DBName char(40) null, 
CatalogName varchar(40) null,
SchemaName varchar(40) null,
TableName varchar(40) not null,
Other varchar(80) DEFAULT NULL
);

利用 admin Tool中tool->utilities->oracle BI Event Tables指明BIEE需要轮询的表,这里即为UET,可以为多张。

 

在ETL过程结束后,向该事件表中插入一条记录,记录那张表的数据进行了更新,OBIEE会每隔一定时间会去Check该表数据,如果检测到某表的updatetime在上次和本次检查时间之间,则purge掉该表的cache。相应事件表里的记录也会被清除掉。在下次查询时候重建cache.

 

评估:

1,这样就要求kettle聚合完成一张表后,就要像该表写入一行记录。同时还得新建一张表。

2,需要在kettle的聚合的最后加入一条sql执行语句。增加了维护成本。

3,同时时间上还需要等待biee轮询时间到了,数据才会更新。一般biee建议,轮询时间大于10分钟,时间太短,就没必要对某张表做缓存了。所以缓存的更新不是及时的。

4,间隔的轮询,在某种程度上对数据库造成了查询压力。

 

注:我在本地按照这种方式测试没有成功,要么报:“查询表失败”,要么就报“错误的模式”的错误。网上查了说"错误的模式"要求必须按照odbc 3.5的方式import事件表到rpd中。但是我的import方式就是这个,依然错误。很诡异。试了好几次,不行。很费解。

有一篇网上的文章写得蛮全的,可以参考下:

http://gerardnico.com/wiki/dat/obiee/event_table

 

方法三:

还可以通过调用nqcmd的方式,发出相关指令。

在windows下有一个odbc client的工具,可以在界面上发出指令。

支持的指令如下:

登录web,在setting->Administration->Issue SQL

Call SAPurgeAllCache(); --Purge all the cache

Call SAPurgeCacheByTable( 'DBName', 'CatName', 'SchName', 'TabName' );

Call SAPurgeCacheByQuery('select lastname, firstname from employee where salary > 100000' );

Call SAPurgeCacheByDatabase( 'DBName' );

 

在linux下了,没有界面的话,就只能用命令的方式了:

nqcmd -d tsa -u jianchen -pjianchen -s testCleanCache.sql

testCleanCache.sql该文件的内容如下:

 call SAPurgeCacheByTable('tsamysql','tsa','','tsa_dim_hour')};--表示清除某一张表的缓存

 

评估:

1,该方式依然需要在kettle的聚合过程结尾,执行该命令

2,与方案二比,无需新建表的支持,而且不用轮询,这样没有对数据的查询压力。

3,及时看到缓存更新的效果

4,需要维护相应的执行脚本,不过只要合理管理,应该还是OK的。可以等几张表聚合完成后,再执行几条命令(几条命令放到一个隶属于同一个聚合任务的文件中),这样可以减少维护成本。

 

注:该方案在linux和windows都是可行的。在这里有一个小插曲,由于我们为了缓解数据库的访问压力,所以搞了两个presentation service,对应到的dsn分别为tsa,tsa2,对应不同的rpd,rpd的信息基本一致,除了一个指定访问主库,一个指定访问备库。

我当时只调用了更新tsa的缓存,发现没有效果。当时差点放弃了,因为虽然是两个presentation service,但是他们指向的是同一个catalog,当时以为cache的数据是放在OracleBIData的下面,以为只要清除掉之后,大家都应该会更新数据的。当时怀疑,是不是只清除了tsa的缓存,后来还是试了下,就又更新了tsa2--

nqcmd -d tsa2 -u jianchen -pjianchen -s testCleanCache.sql
如此发现缓存立马被清除了。由此可见,biee的缓存是跟rpd绑定的。
所以如果有人跟我是一样的情况的话,一定要清除两次哦。
综合:
方案二,我测试不成功。
以方案三为主,基本能够满足大部分情况,除非在自己手动补数据的过程中,需要清除缓存的话,可以结合界面工具,自己去操作一把,速度也蛮快的。

查阅文档,具体的支持三种粒度清除缓存:

  • SAPurgeCacheByQuery. Purges a cache entry that exactly matches a specified query. For example, using the following query, you would have a query cache entry that retrieves the names of all employees earning more than $100,000:

    select lastname, firstname from employee where salary > 100000;

    The following call programmatically purges the cache entry associated with this query:

    Call SAPurgeCacheByQuery('select lastname, firstname from employee where salary > 100000' );

  • SAPurgeCacheByTable. Purges all cache entries associated with a specified physical table name (fully qualified) for the repository to which the client has connected. This function takes up to four parameters representing the four components (database, catalog, schema and table name proper) of a fully qualified physical table name. For example, you might have a table with the fully qualified name of DBName.CatName.SchName.TabName. To purge the cache entries associated with this table in the physical layer of the Siebel Analytics repository, execute the following call in a script:

    Call SAPurgeCacheByTable( 'DBName', 'CatName', 'SchName', 'TabName' );

    • Nulls passed as input parameters to SAPurgeCacheByTable serve as wild cards. For example, specifying a database name but leaving the catalog, schema and table names null will direct the function to purge all entries associated with the specified database.
    • Similarly, specifying a table name but leaving database, catalog and schema names null directs the function to purge all cache entries associated with the specified table name. If multiple databases, catalogs or schemas have tables with the specified name, the function will purge all cache entries associated with any of those tables.

      CAUTION:  Leaving all input parameters null directs the function to purge all cache entries associated with the repository.

  • SAPurgeAllCache. Purges all cache entries. The following is an example of this call:

    Call SAPurgeAllCache();

分享到:
评论
3 楼 jianchen 2011-08-15  
安铁辉 写道
怎么休假了呢,明天我BAItao了

百淘可以玩的比较爽的,认识很多人。但是其实不比上班轻松哦。不能迟到的。哈哈
2 楼 安铁辉 2011-08-15  
怎么休假了呢,明天我BAItao了
1 楼 安铁辉 2011-08-15  
  很有调理  敬仰啊!~~~~!

相关推荐

    清除BIEE缓存

    2. **创建清除缓存的脚本** - 在上述指定目录下创建一个名为 `purgecache.txt` 的文件。 - 在该文件中输入以下内容: ``` CALL SAPurgeAllCache() ``` 3. **设置环境变量** - 运行以下命令来设置环境变量,...

    OBIEE10G NQSConfig.INI的参数详解

    当达到这个上限,系统会清除最早的缓存以容纳新的数据。`POPULATE_AGGREGATE_ROLLUP_HITS`参数影响缓存策略,设置为YES可以提高查询性能,但会增加缓存压力。`USE_ADVANCED_HIT_DETECTION`可能提供更复杂的缓存命中...

    BI 维护手册及问题解决方法

    - 在IE浏览器中,按F12键打开开发者工具,然后使用Ctrl+R组合键清除浏览器缓存。 - 重新加载页面进行验证。 - **服务端清理**: - **停止BI服务后**:删除指定路径下的`cache`和`tmp`文件夹中的所有内容。 - **...

    spring-ai-bedrock-converse-1.0.0-M7.jar中文文档.zip

    # 【spring-ai-bedrock-converse-1.0.0-M7.jar中文文档.zip】 中包含: 中文文档:【spring-ai-bedrock-converse-1.0.0-M7-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【spring-ai-bedrock-converse-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-bedrock-converse-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-bedrock-converse-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-bedrock-converse-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-bedrock-converse-1.0.0-M7.jar中文文档.zip,java,spring-ai-bedrock-converse-1.0.0-M7.jar,org.springframework.ai,spring-ai-bedrock-converse,1.0.0-M7,org.springframework.ai.bedrock.converse,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,springframework,spring,ai,bedrock,converse,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【spring-ai-bedrock-converse-1

    房地产 -可视化管理课件.ppt

    房地产 -可视化管理课件.ppt

    tokenizers-0.18.0.jar中文-英文对照文档.zip

    # 【tokenizers-***.jar***文档.zip】 中包含: ***文档:【tokenizers-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【tokenizers-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【tokenizers-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【tokenizers-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【tokenizers-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: tokenizers-***.jar***文档.zip,java,tokenizers-***.jar,ai.djl.huggingface,tokenizers,***,ai.djl.engine.rust,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,djl,huggingface,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【tokenizers-***.jar***文档.zip】,再解压其中的 【tokenizers-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>ai.djl.huggingface</groupId> <artifactId>tokenizers</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'ai.djl.huggingface', name: 'tokenizers', version: '***' Gradle (Short): implementation 'ai.djl.huggingface:tokenizers:***' Gradle (Kotlin): implementation("ai.djl.huggingface:tokenizers:***") ``` # 含有的 Java package(包): ``` ai.djl.engine.rust ai.djl.engine.rust.zoo ai.djl.huggingface.tokenizers ai.djl.huggingface.tokenizers.jni ai.djl.huggingface.translator ai.djl.huggingface.zoo ``` # 含有的 Java class(类): ``` ai.djl.engine.rust.RsEngine ai.djl.engine.rust.RsEngineProvider ai.djl.engine.rust.RsModel ai.djl.engine.rust.RsNDArray ai.djl.engine.rust.RsNDArrayEx ai.djl.engine.rust.RsNDArrayIndexer ai.djl.engine.rust.RsNDManager ai.djl.engine.rust.RsSymbolBlock ai.djl.engine.rust.RustLibrary ai.djl.engine.rust.zoo.RsModelZoo ai.djl.engine.rust.zoo.RsZooProvider ai.djl.huggingface.tokenizers.Encoding ai.djl.huggingface.tokenizers.HuggingFaceTokenizer ai.djl.huggingface.tokenizers.HuggingFaceTokenizer.Builder ai.djl.hu

    基于MATLAB的BP神经网络预测模型构建与应用

    内容概要:本文详细介绍了如何使用MATLAB构建和应用BP神经网络预测模型。首先,通过读取Excel数据并进行预处理,如归一化处理,确保数据的一致性和有效性。接着,配置网络结构,选择合适的训练算法(如SCG),设置训练参数(如最大迭代次数、目标误差等)。然后,进行模型训练,并通过可视化窗口实时监控训练过程。训练完成后,利用测试集评估模型性能,计算均方误差(MSE)和相关系数(R²),并通过图表展示预测效果。最后,将训练好的模型保存以便后续调用,并提供了一个简单的预测函数,确保新数据能够正确地进行归一化和预测。 适合人群:具有一定MATLAB基础,从事数据分析、机器学习领域的研究人员和技术人员。 使用场景及目标:适用于需要对多维数据进行预测的任务,如电力负荷预测、金融数据分析等。主要目标是帮助用户快速搭建一个可用的BP神经网络预测系统,提高预测准确性。 其他说明:文中提供了完整的代码框架和详细的注释,便于理解和修改。同时,强调了数据预处理的重要性以及一些常见的注意事项,如数据量的要求、归一化的必要性等。

    tokenizers-0.22.1.jar中文-英文对照文档.zip

    # 【tokenizers-***.jar***文档.zip】 中包含: ***文档:【tokenizers-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【tokenizers-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【tokenizers-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【tokenizers-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【tokenizers-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: tokenizers-***.jar***文档.zip,java,tokenizers-***.jar,ai.djl.huggingface,tokenizers,***,ai.djl.engine.rust,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,djl,huggingface,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【tokenizers-***.jar***文档.zip】,再解压其中的 【tokenizers-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>ai.djl.huggingface</groupId> <artifactId>tokenizers</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'ai.djl.huggingface', name: 'tokenizers', version: '***' Gradle (Short): implementation 'ai.djl.huggingface:tokenizers:***' Gradle (Kotlin): implementation("ai.djl.huggingface:tokenizers:***") ``` # 含有的 Java package(包): ``` ai.djl.engine.rust ai.djl.engine.rust.zoo ai.djl.huggingface.tokenizers ai.djl.huggingface.tokenizers.jni ai.djl.huggingface.translator ai.djl.huggingface.zoo ``` # 含有的 Java class(类): ``` ai.djl.engine.rust.RsEngine ai.djl.engine.rust.RsEngineProvider ai.djl.engine.rust.RsModel ai.djl.engine.rust.RsNDArray ai.djl.engine.rust.RsNDArrayEx ai.djl.engine.rust.RsNDArrayIndexer ai.djl.engine.rust.RsNDManager ai.djl.engine.rust.RsSymbolBlock ai.djl.engine.rust.RustLibrary ai.djl.engine.rust.zoo.RsModelZoo ai.djl.engine.rust.zoo.RsZooProvider ai.djl.huggingface.tokenizers.Encoding ai.djl.huggingface.tokenizers.HuggingFaceTokenizer ai.djl.huggingface.tokenizers.HuggingFaceTokenizer.Builder ai.djl.hu

    基于蒙特卡洛算法的电动汽车对IEEE 33节点电网影响的研究及应用场景分析

    内容概要:本文探讨了电动汽车(EV)对IEEE 33节点电网的影响,特别是汽车负荷预测与节点潮流网损、压损计算。通过蒙特卡洛算法模拟电动汽车负荷的时空特性,研究了四种不同场景下电动汽车接入电网的影响。具体包括:负荷接入前后的网损与电压计算、不同节点接入时的变化、不同时段充电的影响以及不同负荷大小对电网的影响。通过这些分析,揭示了电动汽车充电行为对电网的具体影响机制,为未来的电网规划和优化提供了重要参考。 适合人群:从事电力系统研究的专业人士、电网规划工程师、电动汽车行业从业者、能源政策制定者。 使用场景及目标:①评估电动汽车大规模接入对现有电网基础设施的压力;②优化电动汽车充电设施的布局和运营策略;③为相关政策和技术标准的制定提供科学依据。 其他说明:文中提供的Python代码片段用于辅助理解和验证理论分析,实际应用中需要更复杂的模型和详细的电网参数。

    房地产 -【万科经典-第五园】第五园产品推介会.ppt

    房地产 -【万科经典-第五园】第五园产品推介会.ppt

    稳压器件.SchLib

    稳压器件.SchLib

    1.jpg

    1

    模拟符号.SCHLIB

    模拟符号.SCHLIB

    基于Simulink的三相电压型逆变器SPWM与电压单闭环控制仿真

    内容概要:本文详细介绍了如何在Simulink中构建并仿真三相电压型逆变器的SPWM调制和电压单闭环控制系统。首先,搭建了由六个IGBT组成的三相全桥逆变电路,并设置了LC滤波器和1000V直流电源。接着,利用PWM Generator模块生成SPWM波形,设置载波频率为2kHz,调制波为50Hz工频正弦波。为了实现精确的电压控制,采用了abc/dq变换将三相电压信号转换到旋转坐标系,并通过锁相环(PLL)进行同步角度跟踪。电压闭环控制使用了带有抗饱和处理的PI调节器,确保输出电压稳定。此外,文中还讨论了标幺值处理方法及其优势,以及如何通过FFT分析验证输出波形的质量。 适用人群:电力电子工程师、自动化控制专业学生、从事逆变器研究的技术人员。 使用场景及目标:适用于希望深入了解三相电压型逆变器控制原理和技术实现的研究人员和工程师。主要目标是掌握SPWM调制技术和电压单闭环控制的设计与调试方法,提高系统的稳定性和效率。 其他说明:文中提供了详细的建模步骤和参数设置指南,帮助读者快速上手并在实践中不断优化模型性能。同时,强调了一些常见的调试技巧和注意事项,如载波频率的选择、积分器防饱和处理等。

    【蓝桥杯EDA】客观题解析:第十三届立创EDA出品省赛模拟题一.pdf

    【蓝桥杯EDA】客观题解析

    房地产 -物业 苏州设备房管理标准.ppt

    房地产 -物业 苏州设备房管理标准.ppt

    3.png

    3

    房地产 -2024H1房地产市场总结与展望(新房篇).docx

    房地产 -2024H1房地产市场总结与展望(新房篇).docx

    LabVIEW与PLC基于TCP协议的自动化数据交互解决方案

    内容概要:本文详细介绍了利用LabVIEW与PLC进行自动化数据交互的技术方案,涵盖参数管理、TCP通信、串口扫描、数据转移等方面。首先,通过配置文件(INI)实现参数的自动加载与保存,确保参数修改不影响程序运行。其次,在TCP通信方面采用异步模式和心跳包设计,增强通信稳定性,并加入CRC16校验避免数据丢失。对于串口扫描,则通过VISA配置实现状态触发,确保进出站检测的准确性。最后,针对不同类型的数据转移提出具体方法,如TDMS文件存储策略,确保高效可靠的数据处理。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉LabVIEW和PLC编程的从业者。 使用场景及目标:适用于需要将LabVIEW作为上位机与PLC进行数据交互的工业生产线环境,旨在提高系统的自动化程度、稳定性和易维护性。 其他说明:文中提供了多个实用代码片段和注意事项,帮助读者更好地理解和应用相关技术。

    d65689da7ed20e21882a634f8f5ce6c9_faad2735d293907fb32f7c5837f7302a.png

    d65689da7ed20e21882a634f8f5ce6c9_faad2735d293907fb32f7c5837f7302a

Global site tag (gtag.js) - Google Analytics