BIEE15_时间维度建立
Posted 奔跑的金鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BIEE15_时间维度建立相关的知识,希望对你有一定的参考价值。
时间维度的建立
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主页
从上图,我们可以看出,时间维表已经被放在文件夹【维度】下边了
简单测试:
我们拖动字段制作分析如下
保存后,打开分析
点击季度值后可以一一展开【钻取】
以上是关于BIEE15_时间维度建立的主要内容,如果未能解决你的问题,请参考以下文章