项目背景:车险行业中,各地协会按照每月统计本省的新车,非新车,商用车,乘用车的签单保费。
项目需求:根据业务源数据,制作报表展示:
透析表:查看不同公司各年、季度、月的销售额
-
- 数据源分析
数据来源:EXCEL表,存储于某个文件夹内
表结构:
数据源描述:EXCEL表中包含多个工作表,每个工作表是河北省的一个市的各保险公司的保费情况,每个EXCEL表名都包含了统计的年份月份。
公司维度(表名称:COMPANY_DIM)
时间维度(DATE_DIM)
车辆用途种类维度(CAR_USED_DIM)
车辆新旧维度(CAR_TYPE_DIM)
地区维度(LOCAL_DIM)
事实表(FACT_PREMIUM)
CREATE USER auto_insurance_dm IDENTIFIED BY 123456;
GRANT CONNECT,RESOURCE TO auto_insurance_dm;
--创建公司维度表
CREATE TABLE COMPANY_DIM(
C_ID NUMBER,
COMPANY_CODE VARCHAR2(50),
COMPANY_NAME VARCHAR2(50),
START_TIME VARCHAR2(50),
END_TIME VARCHAR2(50));
--创建时间维度(DATE_DIM)
CREATE TABLE DATE_DIM(
DATE_VALUE VARCHAR2(50),
DATE_YEAR VARCHAR2(50),
DATE_MONTH VARCHAR2(50),
DATE_QUATER VARCHAR2(50));
--创建车辆用途种类维度(CAR_USED_DIM)
CREATE TABLE CAR_USED_DIM(
C_ID NUMBER,
CAR_USED_CODE VARCHAR2(50),
CAR_USED_NAME VARCHAR2(50),
START_TIME VARCHAR2(50),
END_TIME VARCHAR2(50));
--创建车辆新旧维度(CAR_TYPE_DIM)
CREATE TABLE CAR_TYPE_DIM(
C_ID NUMBER,
CAR_TYPE_CODE VARCHAR2(50),
CAR_TYPE_NAME VARCHAR2(50));
--创建地区维度(LOCAL_DIM)
CREATE TABLE LOCAL_DIM(
C_ID NUMBER,
LOCAL_CODE VARCHAR2(50),
LOCAL_NAME VARCHAR2(50));
--创建事实表(FACT_PREMIUM)
CREATE TABLE FACT_PREMIUM(
C_ID NUMBER,
COMPANY_CODE VARCHAR2(50),
LOCAL_CODE VARCHAR2(50),
CAR_USED_CODE VARCHAR2(50),
CAR_TYPE_CODE VARCHAR2(50),
DATE_VALUE VARCHAR2(50),
F_VALUE NUMBER);
查询数据库,与流中数据做对比,返回对比表中的字段数据
筛选掉不需要更新和插入的记录
选择源数据的字段作为流出数据
将源数据的数据与目标表对比,按照公司编号对比,相同时返回目标表字段有数据,不相同时返回目标表字段为空值。
将数据通过筛选步骤分为两个流,一个为新纪录,一个为更新数据流
新纪录流字段选择,只保留源数据中的字段
获取系统时间
转换系统时间的格式
通过笛卡尔积将每个新纪录关联上一个系统时间,系统时间作为START_TIME
增加一个空值作为END_TIME
调用数据库中的序列
--创建序列
CREATE SEQUENCE COMPANY_SEQ
INCREMENT BY 1 --增长值为1,如果为负数,则是递减
START WITH 1 --从1开始递增
MAXVALUE 9999999 --最大值,MINVALUE为最小值的意思
--NOCYCLE:达到最大值后不循环
--NOCACHE:不对序列进行缓冲
--CACHE:对序列进行缓冲,对序列进行缓冲,可以改善序列的性能
--CYCLE:达到最大值后循环
NOCYCLE NOCACHE;
插入到数据表
以上新纪录的操作完毕,以下是旧数据的更新和历史数据保存操作
在使用筛选记录步骤分拨数据时,字段选择4,为需要做旧数据的更新和历史数据保存操作的流
由于筛选记录步骤只能连接两个步骤,因此字段选择四将流出的所有字段都选择
然后在通过两个字段选择,分别选择对应需要做历史数据保留操作所需的字段,和需要做更新数据操作的字段;历史数据保留操作就是将目标表的END_TIME更新为系统时间;
更新数据直接将数据插入到目标表中并将start_time置为系统时间,end_time为空。
CREATE OR REPLACE PROCEDURE P_DATE_DIM(
START_DATE IN STRING,
END_DATE IN STRING)
IS
v_date DATE;
v_year VARCHAR2(20);
v_month VARCHAR2(20);
v_quater VARCHAR2(20);
v_count NUMBER;
v_number_month NUMBER;
v_str_date VARCHAR2(20);
BEGIN
SELECT COUNT(*) INTO v_count FROM DATE_DIM;
IF v_count>0
THEN DELETE FROM DATE_DIM;
COMMIT;
END IF;
v_date := TO_DATE(START_DATE,'YYYY-MM');
LOOP
v_year := SUBSTR(TO_CHAR(v_date,'YYYY-MM'),1,4);
v_month :=SUBSTR(TO_CHAR(v_date,'YYYY-MM'),6,2);
v_number_month := TO_NUMBER(v_month);
CASE
WHEN v_number_month >=1 AND v_number_month<=3
THEN v_quater :='第1季度';
WHEN v_number_month >=4 AND v_number_month<=6
THEN v_quater :='第2季度';
WHEN v_number_month >=7 AND v_number_month<=9
THEN v_quater :='第3季度';
WHEN v_number_month >=10 AND v_number_month<=12
THEN v_quater :='第4季度';
END CASE;
v_str_date :=TO_CHAR(v_date,'YYYY-MM');
INSERT INTO DATE_DIM VALUES (v_str_date,v_year,v_month,v_quater);
v_date := ADD_MONTHS(v_date,1);
EXIT WHEN v_date > TO_DATE(END_DATE,'YYYY-MM');
END LOOP;
COMMIT;
END;
--调用存储过程
BEGIN
P_DATE_DIM('1994-01-01', '2030-12-31');
END;
--查看表
SELECT DATE_VALUE,DATE_YEAR,DATE_MONTH,DATE_QUATER FROM DATE_DIM;
CREATE SEQUENCE CAR_USED_SEQ--创建的序列
INCREMENT BY 1 --增长值为1,如果为负数,则是递减
START WITH 1 --从1开始递增
MAXVALUE 100 --最大值,MINVALUE为最小值的意思
NOCYCLE NOCACHE;
向表中插入数据
INSERT INTO CAR_USED_DIM VALUES(CAR_USED_SEQ.NEXTVAL,1001,'商用车',TO_CHAR(SYSDATE,'YYYY-MM-DD'),NULL);
INSERT INTO CAR_USED_DIM VALUES(CAR_USED_SEQ.NEXTVAL,1002,'乘用车',TO_CHAR(SYSDATE,'YYYY-MM-DD'),NULL);
车辆种类(新车/非新车)维度(CAR_TYPE_DIM)
手动插入
SELECT * FROM CAR_TYPE_DIM FOR UPDATE;
流程:物理层–逻辑层–展现层
物理层
创建资料档案库
右击选择物理表图–仅限所选对象
建立物理层外连接:
有两种结构:1.雪花模型
2.星状模型
在这里我们使用星状模型
将事实表与其中一个维度连接到一块
依次类推建立好星状模型
保存。
将逻辑层的模型直接拖到展现层,更改展现层的名称,更改图标等。
展现层表重命名:选中表,右击–重命名,修改即可
展现层,字段重命名
双击
修改图标:选中右击–设置图标,选择要使用的图标即可
登录http://tom.lan:7001/analytics/saw.dll?bieehome&startPage=1,填写安装时配置的用户名及密码。(注意有些浏览器支持打开,有些浏览器不支持)
点击新建
点击建立分析对应的主题区域
在“打开”中可以查看已经建立好的分析,可以选择打开建立的分析,对分析进行修改编辑
新建分析后
可以编辑字段的排序,对字段使用公司计算,编辑过滤器筛选数据
结果展示编辑
添加分析提示,点击新建提示,选择列提示,选择基于哪个列建立提示
再次选择了公司名称的列建立提示,点击选项进行配置,选择特定列值选项,将需要的值放到右边,默认选择为当打开时默认勾选的值
例如默认为空值时
保存分析
然后到仪表盘编辑的界面
然后保存,运行
点击确定,展示一下界面
ending…