当前位置: 首页 > news >正文

【BIEE】11_根据显示指标展示不同报表

报表开发过程中,我们经常会需要根据所选择的不同指标,展示不同的报表!例如:

image

显示指标有:金额与合同数,可以根据显示指标选择的内容进行相应报表数据展示

一、环境准备

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_dept varchar(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','crm001@163.com');
insert into crm_info  values('苏语凝','crm002','vip','B','01','S','02',to_date('1986-1-2','yyyy-mm-dd'),'A04','USA','crm002@163.com');
insert into crm_info  values('南枯月漓','crm003','vip','D','01','D','02',to_date('1973-02-02','yyyy-mm-dd'),'A03','UK','crm003@163.com');
insert into crm_info  values('赫兰铁朵','crm004','uvip','B','01','M','01',to_date('1999-12-01','yyyy-mm-dd'),'A02','USA','crm004@163.com');
insert into crm_info  values('牧云寒','crm005','vip','D','01','T','02',to_date('1965-01-01','yyyy-mm-dd'),'A01','USA','crm005@163.com');
insert into crm_info  values('硕风和叶','crm006','uvip','D','02','U','01',to_date('1996-01-23','yyyy-mm-dd'),'A01','CN','crm006@163.com');
insert into crm_info  values('盼兮','crm007','uvip','C','01','B','02',to_date('1998-01-01','yyyy-mm-dd'),'A03','CN','crm007@163.com');
insert into crm_info  values('穆如寒江','crm008','vip','D','02','S','01',to_date('1976-12-4','yyyy-mm-dd'),'A02','CN','crm008@163.com');
insert into crm_info  values('兰钰儿','crm009','vip','A','01','S','02',to_date('1986-4-6','yyyy-mm-dd'),'A03','UK','crm009@163.com');
insert into crm_info  values('牧云陆','crm010','vip','B','01','L','01',to_date('1988-4-5','yyyy-mm-dd'),'A01','CN','crm010@163.com');
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

image

V_DIM_CRM_COUNTRY

image

将上述两个视图导入到资料库,然后关联,接着设计分析

二、仪表盘提示设计

image

使用变量VAR接受值,然后传值给分析,在分析中通过@{VAR}进行引用

三、分析设计

image

①国家:

"V_DIM_CRM_COUNTRY"."VALUE"

image

②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)

image

③非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)

image

④金额:

'@{VAR}{金额}'

image

四、仪表盘设计

将分析与仪表盘结合在一起,然后展示报表

image

五、展示报表

当选择【金额】时,

image

当选择【合同数】时

image

通过以上可以发现,我们的报表现在可以通过选择的【显示指标】不一致,显示不同的结果。

相关文章:

  • 流程(上)
  • 好领导:提升领导威信力的110个管理奥秘
  • 我的重构第二步
  • 部署eolinker开源版接口管理
  • 基于django的生成二维码的接口
  • 09-移动端开发教程-Sass入门
  • while循环按行读文件的方式总结
  • ElasticSearch「1」本地安裝Elasticsearch 6.0.1 + Elasticsearch-head插件
  • 2018/02/09
  • PhysicsBasedAnimation学习
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • Mybatis分页插件PageHelper简单使用
  • 企业IM-2技术选型
  • 干货分享微服务spring-cloud(1.初探)
  • java 内存溢出 栈溢出的原因与排查方法
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • C++类中的特殊成员函数
  • classpath对获取配置文件的影响
  • CSS中外联样式表代表的含义
  • ES6核心特性
  • GitUp, 你不可错过的秀外慧中的git工具
  • IP路由与转发
  • maya建模与骨骼动画快速实现人工鱼
  • Mybatis初体验
  • ng6--错误信息小结(持续更新)
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Python学习之路13-记分
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • TypeScript实现数据结构(一)栈,队列,链表
  • uni-app项目数字滚动
  • Web设计流程优化:网页效果图设计新思路
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 飞驰在Mesos的涡轮引擎上
  • 分布式任务队列Celery
  • 今年的LC3大会没了?
  • 智能网联汽车信息安全
  • 走向全栈之MongoDB的使用
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)scrum常见工具列表
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ../depcomp: line 571: exec: g++: not found
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务