OBIEE利用全局临时表开发复杂报表
需求描述
最近开发了一个BIEE分析报表,报表需求原型来自HFM,和BIEE的维度和度量的方式匹配不上。
解决方法
想了很多办法也无法用数据仓库的思维解决,最后只好采取比较极端的方式解决,即在后台将所有数据先计算好,BIEE的分析仅仅是作为展现使用。计算好的数据存放在Global Temporary 表中。
方法描述
创建会话级别的全局临时表
Global Temporary Table有两种类型,一种是会话级别,一种是事务级别,具体应用场景这里不多说了,在这里我们是创建会话级别的全局临时表,例如:
CREATE GLOBAL TEMPORARY TABLE test
(column1 varchar2(10),
....
column10 varchar2(10))
ON COMMIT PRESERVE ROWS;
创建准备报表数据的存储过程
在数据库里创建存储过程,存储过程的功能是将报表数据准备好,插入上一步创建的临时表中。利用这个存储过程,无论报表逻辑有多复杂都可以实现了。
设置资料库调用存储过程
设置步骤如下:
1 右键点击连接池,点击属性,进入连接脚本页签, 点击查询前执行部分的新建按钮
2 在物理sql处填写调用上一步准备好的存储过程
例如:
begincux_test(p_user => 'VALUEOF(NQ_SESSION.USER)');fhfm_icp_prepare_data(p_entity_code => 'VALUEOF(NQ_SESSION.HFMENTITY)',p_icp_code =>'VALUEOF(NQ_SESSION.HFMPARTNER)',p_year =>'VALUEOF(NQ_SESSION.HFMYEAR)',p_period =>'VALUEOF(NQ_SESSION.HFMPERIOD)',p_user => 'VALUEOF(NQ_SESSION.USER)');end;
创建资料库模型
以全局临时表为事实表,再加上其他相关维表,创建物理模型,业务模型和表示层模型,这一步是OBIEE资料库的基本开发方法,不多说了。
注意:全局临时表在物理层需要设置为不可高速缓存,否则查询报表时数据不刷新的问题。
创建分析展示数据
这一步根据报表展示内容正常创建分析即可,本文中的报表因为连合计都是事先计算好的(主要是因为合计计算公式很奇葩,无法使用聚合规则),所以做了‘假’的合计行展示。
1 合计行的颜色字体等均和数据行不同,采用条件格式实现,例如
2 全局临时表需要增加一个分组字段,准备数据时计算好的合计行要和组内数据的这个分组字段要填入同样值,创建的分析要把这个分组字段放在第一列
3 有这种‘假’的合计行的分析用户不能按列排序,所以要把分析属性相关列排序等属性去掉
OBIEE利用全局临时表开发复杂报表相关推荐
- 查询表授权给谁了_SQL Server 全局临时表竞争条件漏洞利用
在网络和应用程序渗透测试期间,SQL Server 全局临时表通常不是关注的焦点.然而,它们被开发人员周期性地不安全地用来存储敏感数据和代码块,这些数据和代码块可以被非特权用户访问.在本博客中,我将介 ...
- 基于TIA博途利用SCL语言开发沿指令FC全局库来减少工作存储区的使用
基于TIA博途利用SCL语言开发沿指令FC全局库来减少工作存储区的使用 在程序中调用R_TRIG或F_TRIG时,系统会自动生成1个背景DB块,用于存放检测信号的边沿存储位,当程序中有较多信号需要检测 ...
- 利用XML实现通用WEB报表打印(转载)
原文地址: http://www.microsoft.com/china/community/Column/65.mspx 利用XML实现通用WEB报表打印 卢彦 方案适用性 . 1. 远程数据打印. ...
- 巧用SQL server的全局临时表防止用户重复登录
内容摘要:SQL Server的临时表具备这个特性!但是我们这里的这种情况不能用局部临时表,因为局部临时表对于每一个connection来说都是一个独立的对象,因此只能用全局临时表来达到我们的目的. ...
- 利用XML实现通用WEB报表打印 卢彦
利用XML实现通用WEB报表打印(1) 卢彦 摘要 开发B/S结构的应用程序最头疼的问题可能就是报表打印了,由于只能采用浏览器来作为用户界面进行交互,所以不能精确控制客户端的打印机.而很多B/S结构的 ...
- 巧用SQL的全局临时表防止用户重复登录
在我们开发商务软件的时候,常常会遇到这样的一个问题:怎样防止用户重复登录我们的系统?特别是对于银行或是财务部门,更是要限制用户以其工号身份多次登入. 可能会有人说在用户信息表中加一字段判断用户工号登录 ...
- 局部临时表 全局临时表 表变量
表变量: DECLARE @tb table(id int identity(1,1), name varchar(100)) INSERT @tb SELECT id, nam ...
- 利用XML实现通用WEB报表打印(参考)
原文地址: http://www.microsoft.com/china/community/Column/65.mspx 利用XML实现通用WEB报表打印 卢彦 方案适用性 . 1. 远程数据打印. ...
- Oracle全局临时表
Oracle全局临时表 目前所有使用Oracle作为数据库支撑平台的应用,大部分是数据量比较庞大的系统,即表的数据量级一般情况下都是在百万级以上.当然,在Oracle中创建分区是一种不错的选择,但是当 ...
最新文章
- 三层交换机的热备实验
- AI算法 真的能算出人类的欲望吗?
- RTEMS 的 AT91SAM9260 移植(5): 调试串口驱动
- 使用SAP WebIDE开发SAP Fiori Worklist应用消费OData服务
- android 打开谷歌导航,国内开启google位置记录功能/android版google maps 7+上,恢复位置记录功能在国内使用(需root)...
- VS2008 C++ 项目添加“依赖”、“库目录”和“包含目录”
- 使用javascript及java对Cookie的读写
- python 切片_知乎问答之 Python 切片整理
- [RL] 配置 gym 与 atari 游戏
- adalm pluto_Apache Pluto和Velocity集成教程示例
- mysql 联合索引 range_MySQL 联合索引使用情况
- WorldList3
- python主线程执行回调函数_Python并发编程06 /阻塞、异步调用/同步调用、异步回调函数、线程queue、事件event、协程...
- 计算机病毒的危害与防范
- 语音文件怎么转换文字?这两个方法就能轻松解决。
- MIUI9线刷包精简
- MDM9607 SE1801A安全芯片调试记录
- python 柱状图 内部颜色_Matplotlib/seaborn柱状图使用不同的颜色分组存储箱
- 牛客练习赛60C 操作集锦(DP)
- matlab智能体运动轨迹,智能车辆运动轨迹规划方法的研究
热门文章
- python中的迭代器,可迭代对象(详细剖析)
- 【容器】Podman和常用命令
- 面向对象的程序设计原则之SOLID原则
- 一文理解Linux的基本指令(下)(三分钟学会Linux基本指令)
- 时光煮雨 Unity3D实现2D人物动画① UGUINative2D序列帧动画
- 【Vue入门实践3】不调后端接口==>el-table单纯前端实现查询和重置功能==>【el-table组件使用】表格静态前端筛选、查询重置功能
- 牛客网——华为题库(71~80)
- Linux基础知识与命令
- linux文本剪切命令---cut
- 一个字节能表示的范围及详解