码迷,mamicode.com
首页 > 其他好文 > 详细

【BIEE】15_时间维度建立

时间:2018-03-11 02:38:46      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:table   保存   过程   定义   收入   星期几   黄色   保留   display   

时间维度的建立

1.环境准备

①新建时间维度表:TIME_DIMENSION

建立时间维度表并插入数据

---------------创建时间维度表
create table TIME_DIMENSION
(
  the_date     NUMBER not null,
  date_name    NVARCHAR2(15),
  the_year     NUMBER,
  year_name    NVARCHAR2(10),
  the_quarter  VARCHAR2(10),
  quarter_name NVARCHAR2(10),
  the_month    NUMBER,
  month_name   NVARCHAR2(10),
  the_week     NUMBER,
  week_name    NVARCHAR2(10),
  week_day     NVARCHAR2(10)
)
tablespace users
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    next 1
    minextents 1
    maxextents unlimited
  );




--创建存储过程脚本:
CREATE OR REPLACE PROCEDURE SP_CREATE_TIME_DIMENSION(begin_date in varchar2,
                                                    end_date in varchar2) is


  /*SP_CREATE_TIME_DIMENSION: 生成时间维数据
  begin_date: 起始时间
  end_date:结束时间
  */
dDate date;
v_the_date number;
v_the_year varchar2(4);
v_the_quarter varchar2(2);
v_the_month varchar2(10);
v_the_month2 varchar2(2);
v_the_week varchar2(2);
v_the_day varchar2(10);
v_the_day2 varchar2(2);
v_week_day nvarchar2(10);


adddays int;
BEGIN
adddays := 1 ;
dDate := to_date(begin_date,yyyymmdd);


WHILE (dDate <= to_date(end_date,yyyymmdd))
loop
   v_the_date := to_number(to_char(dDate,yyyymmdd));--key值
   v_the_year:= to_char(dDate, yyyy);--
   v_the_quarter := to_char(dDate, q);--季度
   v_the_month:=to_char(dDate, mm);--月份(字符型)
   v_the_month2:=to_number(to_char(dDate, mm));--月份(数字型)
   v_the_day:=to_char(dDate, dd);--日(字符型)
   v_the_day2:=to_char(dDate, dd);
   v_the_week:= to_char(dDate,fmww);--年的第几周
   v_week_day := to_char(dDate, day); --星期几




  insert into time_dimension(the_date,date_name,the_year,year_name,
                            the_quarter,quarter_name,the_month,
                            month_name,the_week,week_name,week_day)
                      values(v_the_date,v_the_year||||v_the_month2||||v_the_day2||,v_the_year,v_the_year||,
                            v_the_year||Q||v_the_quarter,v_the_year||||v_the_quarter||季度,to_number(v_the_year||v_the_month),
                            v_the_year||||v_the_month2||,v_the_week,||v_the_week||,
                            v_week_day);


   dDate :=  dDate + adddays;
END loop;
end SP_CREATE_TIME_DIMENSION;


--执行存储过程


call SP_CREATE_TIME_DIMENSION(19800101,19900101);
commit;

② 事实表直接使用EMP表即可,在该表的基础上新增一列,为后边与时间维度表关联做准备

ALTER TABLE EMP ADD  S_HIREDATE NUMBER;
update emp set S_HIREDATE=to_number(to_char(hiredate,yyyymmdd),99999999)

2.数据导入资料库

【打开PRD】—【导入元数据】--【此处数据库为Oracle:选择OCI 10g/11g】

技术分享图片

技术分享图片

技术分享图片

接着【下一步】

技术分享图片

表导入完成后

技术分享图片

3.建立物理层

此时,为了【①保留原先导入表的信息与结构;②给表排序(次要)】,我们为每个表建立别名

右键表名---然后【新建对象】---【别名】

技术分享图片

同理,为维度表【TIME_DIMENSION】也建立别名,建立完成以后如下图

技术分享图片

接着进行表关联

【选中所建立的别名:Dim_01_time与Fat_01_emp】--【右键】---【物理图表】---【仅限所选对象】

技术分享图片

技术分享图片

定义好的维度关系如下:

技术分享图片

连接建立完毕后如下图:

技术分享图片

4.模型层设计

我们可以将物理层直接拖拽到模型层,此时,我使用新建

点击【业务模型和映射】空白处-----右键---【新建业务模型】

此处,我们就保持跟物理层一致,用【SCOTT】命名

技术分享图片

建立完成后

技术分享图片

此时,我们将需要的拖拽到【业务模型和映射层】

技术分享图片

通过上图,我们就可以看到带#号的便是事实表,不带的是维度表

接着,开始建立【时间层次结构】

【右键时间维度表】--【创建逻辑维】--【具有基于级别的层次维度】,创建完成后会出现一个三维坐标图标

技术分享图片

【展开这个三维坐标图标】--【选中Detail层,右键】—【新建对象】--【父级】--【新建:月

技术分享图片

建立完成后如下:

技术分享图片

我们的【Detail层相当于日,直接修改为日即可】

技术分享图片

技术分享图片

然后右键【月】--新建【季】,接着建立【年】

技术分享图片

层级建立好之后,我们把每个层级对应的字段拖到对应层级下,例如:将Detail下的THE_MONTH拖到【月】下边

技术分享图片

其他维度也一样,拖拽完毕后,删除多余的字段

技术分享图片

从上图我们看到,【日】下的对应字段是一个黄色的小钥匙标志,这个叫做【逻辑关键字】,年、季、月也需要这种关键字

右键【月】下的【THE_MONTH】--【新建逻辑级别关键字】

技术分享图片

点击【确定】后,我们可以看到,在【月】下边可以看到小钥匙也出现了,依次设置【季、年】

技术分享图片

设置完毕后

技术分享图片

此时,我们修改一下维度的中文显示(双击即可修改)

技术分享图片

上述维度建立完成后,那么接下来就是设置事实表的聚合规则

展开【维度表】,双击【EMPNO】,此处统计客户数,选择【Count Distinct】

技术分享图片

设置完成后,我们发现字段EMPNO变成黄色的了

技术分享图片

同时,也可以【新建逻辑列】,例如:我们要计算每个员工的总收入(工资+奖金)

点击【Fat_01_emp】--【右键】--【新建对象】--【逻辑列】

技术分享图片

设置列源来自【现有列派生】

技术分享图片

点击【确定】后

技术分享图片

同时将SAL、COMM字段的聚合规则设置为SUM

接着,模型层优化与美化:①把不需要的字段删除 ②把英文改为中文

技术分享图片

上述时间表的【年、季、月、日】显示顺序,可以双【Dim_01_时间】进去修改

技术分享图片

5.展现层设计

直接将模型层拖拽到表示层即可。

如果表太多,可以在表示层对事实表与维度表分类

我们在主题区域上新建表示表。【单击SCOTT】--【右键】--【新建表示表】(例如:维度)

技术分享图片

双击【维度】

技术分享图片

点击【绿色加号】

技术分享图片

选择【Dim_01_时间】后

技术分享图片

此时,再次保存资料库,登录BIEE主页

技术分享图片

从上图,我们可以看出,时间维表已经被放在文件夹【维度】下边了

简单测试:

我们拖动字段制作分析如下

技术分享图片

保存后,打开分析

技术分享图片

点击合计后可以一一展开【钻取】

技术分享图片

【BIEE】15_时间维度建立

标签:table   保存   过程   定义   收入   星期几   黄色   保留   display   

原文地址:https://www.cnblogs.com/OliverQin/p/8542880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!