注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle、MySQL资料及经验

.

 
 
 

日志

 
 

实现BIEE的时间维表  

2014-07-18 10:14:24|  分类: BI报表 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

BIEE有个让人很难以理解的限制:要想展示某表数据,必须让该表跟其他表有关联。
但有时就是只展示一张表的数据时怎么办? BIEE要展示的表往往有个时间列,于是我们可以建立一张含有足够多日期的DATETABLE表,来跟前面的要展示的表关联。
下面是建立时间维表的步骤:

1.建立时间维表DATETABLE

create table DATETABLE
(
  日期  VARCHAR2(10),
  日期2 DATE,
  年   VARCHAR2(4),
  年月  VARCHAR2(7),
  季度  VARCHAR2(1),
  月份  VARCHAR2(2),
  当年周 VARCHAR2(2),
  本月周 VARCHAR2(1),
  星期  VARCHAR2(12)
);


2.使用存储过程插入30年的日期,并更新相应列
执行以下过程时,最好设置下本机环境变量为中文,否则可能出现星期为英文的情况,NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"或NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
declare
    v_sql     varchar2(200);
    v_num     number;
    v_day_num number;
begin
    v_num     := 0; --初始化循环变量值
    v_day_num := trunc(to_date('2035-10-01', 'yyyy-mm-dd') -
                       to_date('2005-01-01', 'yyyy-mm-dd')); --计算2035-10-01和2005-01-01之间的天数
    execute immediate 'alter session set nls_date_format=''yyyy-mm-dd''';
    while v_num <= v_day_num loop
        v_sql := 'insert into datetable (日期,日期2) values (to_char(trunc(to_date(''2005-01-01'',''yyyy-mm-dd'')+:1)),trunc(to_date(''2005-01-01'',''yyyy-mm-dd'')+:1))';
        execute immediate v_sql
            using v_num, v_num;
        v_num := v_num + 1;
    end loop;
    commit;
    update datetable
       set 年     = to_char(日期2, 'yyyy'),
           年月   = to_char(日期2, 'yyyy') || '-' || to_char(日期2, 'mm'), --取日期列的前7位也可以
           季度   = to_char(日期2, 'q'),
           月份   = to_char(日期2, 'mm'),
           当年周 = to_char(日期2, 'ww'),
           本月周 = to_char(日期2, 'w'),
           星期   = to_char(日期2, 'dy');
    commit;
end;


3.在常用的日期列上建立索引
create index IDX_DATETABLE_DATE on DATETABLE (日期);
create index IDX_DATETABLE_DATE2 on DATETABLE (日期2);

  评论这张
 
阅读(162)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018