一、功能介绍
维度控件:实现参数值的过滤
指标:实现按哪些维度聚合以及展示哪些指标(动态聚合:例如数据有字段A、B、C、D列,但是只想按A、B列聚合展示结果)
效果图如下:
最终效果图:
指标筛选器效果:
指标筛选器效果
二、实现逻辑
1、数据表结构
CREATE TABLE test_table_1
(
date
date DEFAULT NULL,
region
varchar(100) DEFAULT NULL,
work_group
varchar(100) DEFAULT NULL,
user_no
varchar(100) DEFAULT NULL,
user_name
varchar(100) DEFAULT NULL,
work_time
bigint DEFAULT NULL COMMENT ‘工作时长(分钟)’,
customer_num
bigint DEFAULT NULL COMMENT ‘客户数’
)
2、FineReport数据集:
SELECT
${if(FIND(“日期”,colname) != 0,‘a.date AS 日期,’,‘’)}
${if(FIND(“地区”,colname) != 0,‘a.region AS 地区,’,‘’)}
${if(FIND(“班组”,colname) != 0,‘a.work_group AS 班组,’,‘’)}
${if(FIND(“工号”,colname) != 0,‘a.user_no AS 工号,’,‘’)}
${if(FIND(“姓名”,colname) != 0,‘a.user_name AS 姓名,’,‘’)}
${if(FIND(“工作时长”,colname) != 0,‘sum(work_time) as 工作时长,’,‘’)}
${if(FIND(“客户数”,colname) != 0,‘sum(customer_num) as 客户数,’,‘’)}
null
FROM test_table_1
a
where
1=1
${if(len(dimension) == 0,“”,“or a.region in ('” + dimension + “')”)}
${if(len(dimension) == 0,“”,“or a.work_group in ('” + dimension + “')”)}
${if(len(dimension) == 0,“”,“or a.user_no in ('” + dimension + “')”)}
${if(len(dimension) == 0,“”,“or a.user_n