【BIEE】15_时间维度建立
时间维度的建立
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_时间维度建立的更多相关文章
- 《BI项目笔记》创建时间维度(2)
创建步骤: 序号 选择的属性 重命名后的名称 属性类别 1 DateKey DateKey 常规 2 Month Key Month Key 月份 3 English Month Name Eng ...
- 《BI项目笔记》创建时间维度(1)
SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库.但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞 ...
- DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate Date Dimension)
跟大家的交流是我的动力. :) DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate Date Dimension) 难度: ★☆☆☆☆(1星) 适用范围: ★ ...
- MySQL学习笔记:生成时间维度表
# ---- 对应时间戳怎么生成的? ---- /*TIME_CD TIME_CD1000000 000005000001 000005000002 000005000003 000005000004 ...
- DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension)
DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension) 难度: ★☆☆☆☆(1星) 适用范围: ★★★★★(5星) 这个时间系列想 ...
- 揽货最短路径解决方案算法 - V2(增加了时间维度-客户允许的服务时间段,C#/JAVA同步实现,带python作图)
继上篇,这里改进增加了客户允许服务的时间范围这个维度,并且把C#版本翻译成java,加强了更加形象的图表展示路径(继续是用python的matplotlib作图). 这里的时间范围维度是指:每个客户都 ...
- 【BIEE】BIEE报表根据维度表展示事实表不存在的维度
事实表数据 维度表数据 现在报表展示如下: 这样展示报表让人感觉数据缺失了,需要显示成如下样子,感觉会比较舒服一点 那么,如何实现上面的完美操作呢? 实现步骤 分析编辑页面→表视图属性→包含仅具有空行 ...
- [Java Code] 时间维度循环生成代码片段
public static void main(String[] args) throws ParseException { String str = "20140301"; St ...
- MySQL学习笔记:生成时间维度表2
实现目的: 测试: # 测试 加一秒 SECOND), INTERVAL SECOND); SECOND),'%H%i%s');# 第一秒 SECOND),'%H%i%s');# 最后一秒 SELEC ...
随机推荐
- 运行微信支付demo
首先要说说写这篇文章的初衷:集成支付宝支付运行demo都是可以正常运行的,但是我下载下来微信支付的demo,却发现一大堆报错,而且相关文章几乎没有,可能大家觉得没必要,也许你觉得很简单:但是技术大牛都 ...
- 在使用Arduino中遇到的问题(无法使用中文注释、程序无法下载)
在使用Arduino中遇到的问题: 在用arduino给蓝牙模块供电时,下载程序是下不进去的.即使显示下进去了,其实也是没下进去. 解决方法:拔掉蓝牙模块再下程序,或给蓝牙供电的线上加上一个开关. 在 ...
- 详解Oracle数据货场中三种优化:分区、维度和物化视图
转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的 ...
- Eclipse 教程 | 菜鸟教程
http://www.runoob.com/eclipse/eclipse-charset.html
- 【找规律】URAL - 2065 - Different Sums
就让0出现得尽可能多嘛……大概感受一下就是这样…… 0 0 ... 0 0 0 0 4 -4 3 -3 2 -2 1 -1 #include<cstdio> using namespace ...
- 【树上莫队】bzoj3757 苹果树
学习这位神犇的:http://blog.csdn.net/jiangyuze831/article/details/41476865 注意: ①排序时第一关键字是左端点所在块编号(块状树),第二关键字 ...
- 1.4(Spring学习笔记)Spring-JDBC基础
一.Spring JDBC相关类 1.1 DriverManagerDataSource DriverManagerDataSource主要包含数据库连接地址,用户名,密码. 属性及含义如下配置所示: ...
- OC语言基础之NSArray
0.数组的分类 NSArray :不可变数组 NSMutableArray : 可变数组 1: // @[] 只创建不可变数组NSArray 2: /* 错误写法 3: NSMutableArray ...
- 【Linux】ubuntu或linux网卡配置/etc/network/interfaces
转自:http://gfrog.net/2008/01/config-file-in-debian-interfaces-1/ 青蛙准备写一个系列文章,介绍一些Debian/Ubuntu里面常用的 ...
- 浅谈Uber与滴滴快的提供差异化服务带来的商业模式思考
一.引言 滴滴和快的烧钱的时代已经过去,在那个时代我们消费者着实得到了不少实惠.自从他们温柔的在一起之后,这种实惠就木有了.让我不禁感叹坐车的几率有降低了50%.前段时间,Uber悄无声息的进入我的视 ...