【BIEE】12_根據顯示指標展示不同報表
報表開發過程中,我們經常會需要根據所選擇的不同指標,展示不同的報表!例如:
顯示指標有:金額與合同數,可以根據顯示指標選擇的內容進行相應報表數據展示
一、環境準備
create table crm_info( crm_name varchar(100) , crm_no varchar(40) not null primary key , crm_type varchar(8), crm_lvl varchar(8), crm_status varchar(8), crm_indu varchar(8), crm_sex varchar(8), crm_birthdate Date, crm_deptvarchar(8), crm_country varchar(8), crm_email varchar(20)); insert into crm_info values(‘牧雲笙‘,‘crm001‘,‘uvip‘,‘A‘,‘01‘,‘A‘,‘01‘,to_date(‘1987-10-02‘,‘yyyy-mm-dd‘),‘A01‘,‘CN‘,‘[email protected]‘); insert into crm_info values(‘蘇語凝‘,‘crm002‘,‘vip‘,‘B‘,‘01‘,‘S‘,‘02‘,to_date(‘1986-1-2‘,‘yyyy-mm-dd‘),‘A04‘,‘USA‘,‘[email protected]‘); insert into crm_info values(‘南枯月漓‘,‘crm003‘,‘vip‘,‘D‘,‘01‘,‘D‘,‘02‘,to_date(‘1973-02-02‘,‘yyyy-mm-dd‘),‘A03‘,‘UK‘,‘[email protected]‘); insert into crm_info values(‘赫蘭鐵朵‘,‘crm004‘,‘uvip‘,‘B‘,‘01‘,‘M‘,‘01‘,to_date(‘1999-12-01‘,‘yyyy-mm-dd‘),‘A02‘,‘USA‘,‘[email protected]‘); insert into crm_info values(‘牧雲寒‘,‘crm005‘,‘vip‘,‘D‘,‘01‘,‘T‘,‘02‘,to_date(‘1965-01-01‘,‘yyyy-mm-dd‘),‘A01‘,‘USA‘,‘[email protected]‘); insert into crm_info values(‘碩風和葉‘,‘crm006‘,‘uvip‘,‘D‘,‘02‘,‘U‘,‘01‘,to_date(‘1996-01-23‘,‘yyyy-mm-dd‘),‘A01‘,‘CN‘,‘[email protected]‘); insert into crm_info values(‘盼兮‘,‘crm007‘,‘uvip‘,‘C‘,‘01‘,‘B‘,‘02‘,to_date(‘1998-01-01‘,‘yyyy-mm-dd‘),‘A03‘,‘CN‘,‘[email protected]‘); insert into crm_info values(‘穆如寒江‘,‘crm008‘,‘vip‘,‘D‘,‘02‘,‘S‘,‘01‘,to_date(‘1976-12-4‘,‘yyyy-mm-dd‘),‘A02‘,‘CN‘,‘[email protected]‘); insert into crm_info values(‘蘭鈺兒‘,‘crm009‘,‘vip‘,‘A‘,‘01‘,‘S‘,‘02‘,to_date(‘1986-4-6‘,‘yyyy-mm-dd‘),‘A03‘,‘UK‘,‘[email protected]‘); insert into crm_info values(‘牧雲陸‘,‘crm010‘,‘vip‘,‘B‘,‘01‘,‘L‘,‘01‘,to_date(‘1988-4-5‘,‘yyyy-mm-dd‘),‘A01‘,‘CN‘,‘[email protected]‘); commit; create table contract_info( contract_no varchar(40) not null primary key, crm_no varchar(40), contract_amt decimal(18,2), start_date varchar(8), end_date varchar(8), register_date varchar(8)); INSERT INTO contract_Info values(‘contract01‘,‘crm002‘,‘1230000‘,‘20170203‘,‘20180203‘,‘20170203‘); INSERT INTO contract_Info values(‘contract02‘,‘crm003‘,‘200000000‘,‘20160209‘,‘20170209‘,‘20160209‘); INSERT INTO contract_Info values(‘contract03‘,‘crm004‘,‘200000000‘,‘20150609‘,‘20160609‘,‘20150609‘); INSERT INTO contract_Info values(‘contract04‘,‘crm005‘,‘23000000‘,‘20170203‘,‘20180203‘,‘20170203‘); INSERT INTO contract_Info values(‘contract05‘,‘crm006‘,‘1000000‘,‘20160506‘,‘20170506‘,‘20160506‘); INSERT INTO contract_Info values(‘contract06‘,‘crm007‘,‘100000000‘,‘20180101‘,‘20190101‘,‘20180101‘); INSERT INTO contract_Info values(‘contract07‘,‘crm002‘,‘2000000‘,‘20170202‘,‘20180202‘,‘20170202‘); INSERT INTO contract_Info values(‘contract08‘,‘crm003‘,‘200000000‘,‘20170405‘,‘20180405‘,‘20170405‘); INSERT INTO contract_Info values(‘contract09‘,‘crm004‘,‘500000‘,‘20110101‘,‘20170101‘,‘20110101‘); INSERT INTO contract_Info values(‘contract10‘,‘crm005‘,‘633333‘,‘20120223‘,‘20180223‘,‘20120223‘); INSERT INTO contract_Info values(‘contract11‘,‘crm006‘,‘45000000‘,‘20160101‘,‘20180101‘,‘20160101‘); create table mapping( Type VARCHAR(20), Key varchar(4), Value varchar(100)); INSERT INTO mapping VALUES(‘crm_lvl‘,‘vip‘,‘vip客戶‘); INSERT INTO mapping VALUES(‘crm_lvl‘,‘uvip‘,‘非vip客戶‘); INSERT INTO mapping VALUES(‘crm_type‘,‘A‘,‘優秀‘); INSERT INTO mapping VALUES(‘crm_type‘,‘B‘,‘良好‘); INSERT INTO mapping VALUES(‘crm_type‘,‘C‘,‘中等‘); INSERT INTO mapping VALUES(‘crm_type‘,‘D‘,‘一般‘); INSERT INTO mapping VALUES(‘crm_status‘,‘01‘,‘存續客戶‘); INSERT INTO mapping VALUES(‘crm_status‘,‘02‘,‘流失客戶‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘A‘,‘農、牧、林、漁業‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘B‘,‘采礦和采石‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘C‘,‘制造業‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘D‘,‘電、煤氣、蒸汽和空調供應‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘E‘,‘供水;汙水處理、廢物管理和補救‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘F‘,‘建築業‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘G‘,‘批發和零售業;汽車和摩托車修理‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘H‘,‘運輸與存儲‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘I‘,‘食宿服務‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘J‘,‘信息和通信‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘K‘,‘金融和保險‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘L‘,‘房地產‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘M‘,‘專業、科學和技術‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘N‘,‘行政和輔助‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘O‘,‘公共管理與國防;強制性社會保障‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘P‘,‘教育‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘Q‘,‘人體健康和社會工作‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘R‘,‘藝術、娛樂和文娛‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘S‘,‘其他服務‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘T‘,‘家庭作為雇主的;家庭自用、未加區分的物品生產和服務‘); INSERT INTO mapping VALUES(‘crm_indu‘,‘U‘,‘國際組織和機構‘); INSERT INTO mapping VALUES(‘crm_sex‘,‘01‘,‘男‘); INSERT INTO mapping VALUES(‘crm_sex‘,‘02‘,‘女‘); INSERT INTO mapping VALUES(‘crm_dept‘,‘A01‘,‘財務部‘); INSERT INTO mapping VALUES(‘crm_dept‘,‘A02‘,‘人事部‘); INSERT INTO mapping VALUES(‘crm_dept‘,‘A03‘,‘采購部‘); INSERT INTO mapping VALUES(‘crm_dept‘,‘A04‘,‘市場部‘); INSERT INTO mapping VALUES(‘crm_country‘,‘CN‘,‘中國‘); INSERT INTO mapping VALUES(‘crm_country‘,‘USA‘,‘美國‘); INSERT INTO mapping VALUES(‘crm_country‘,‘UK‘,‘英國‘); commit; ------建立維度視圖 CREATE OR REPLACE VIEW V_DIM_CRM_LVL AS SELECT KEY,VALUE FROM mapping WHERE Type=‘crm_lvl‘; CREATE OR REPLACE VIEW V_DIM_CRM_TYPE AS SELECT KEY,VALUE FROM mapping WHERE Type=‘crm_type‘; CREATE OR REPLACE VIEW V_DIM_CRM_STATUS AS SELECT KEY,VALUE FROM mapping WHERE Type=‘crm_status‘; CREATE OR REPLACE VIEW V_DIM_CRM_INDU AS SELECT KEY,VALUE FROM mapping WHERE Type=‘crm_indu‘; CREATE OR REPLACE VIEW V_DIM_CRM_SEX AS SELECT KEY,VALUE FROM mapping WHERE Type=‘crm_sex‘; CREATE OR REPLACE VIEW V_DIM_CRM_DEPT AS SELECT KEY,VALUE FROM mapping WHERE Type=‘crm_dept‘; CREATE OR REPLACE VIEW V_DIM_CRM_COUNTRY AS SELECT KEY,VALUE FROM mapping WHERE Type=‘crm_country‘; -----建立合同客戶關系視圖 CREATE OR REPLACE VIEW CRM_CONTRACT_RELATION AS SELECT A.CONTRACT_NO,A.CONTRACT_AMT,A.START_DATE,A.END_DATE,A.REGISTER_DATE ,B.* FROM contract_Info A INNER JOIN CRM_INFO B ON A.CRM_NO=B.CRM_NO
根據上述腳本建表後,可得到如下數據:
CRM_CONTRACT_RELATION
V_DIM_CRM_COUNTRY
將上述兩個視圖導入到資料庫,然後關聯,接著設計分析
二、儀表盤提示設計
使用變量VAR接受值,然後傳值給分析,在分析中通過@{VAR}進行引用
三、分析設計
①國家:
"V_DIM_CRM_COUNTRY"."VALUE"
②vip金額:
ifnull(CASE WHEN ‘@{VAR}{金額}‘=‘金額‘ AND "CRM_CONTRACT_RELATION"."CRM_TYPE"=‘vip‘ THEN "CRM_CONTRACT_RELATION"."合同金額" WHEN ‘@{VAR}‘=‘合同數‘ AND "CRM_CONTRACT_RELATION"."CRM_TYPE"=‘vip‘ THEN "CRM_CONTRACT_RELATION"."CNT" ELSE NULL END,0)
③非vip金額:
ifnull(CASE WHEN ‘@{VAR}{金額}‘=‘金額‘ AND "CRM_CONTRACT_RELATION"."CRM_TYPE"=‘uvip‘ THEN "CRM_CONTRACT_RELATION"."合同金額" WHEN ‘@{VAR}‘=‘合同數‘ AND "CRM_CONTRACT_RELATION"."CRM_TYPE"=‘uvip‘ THEN "CRM_CONTRACT_RELATION"."CNT" ELSE NULL END,0)
④金額:
‘@{VAR}{金額}‘
四、儀表盤設計
將分析與儀表盤結合在一起,然後展示報表
五、展示報表
當選擇【金額】時,
當選擇【合同數】時
通過以上可以發現,我們的報表現在可以通過選擇的【顯示指標】不一致,顯示不同的結果。
【BIEE】12_根據顯示指標展示不同報表