去年“最具业务价值奖”的销售数据分析案例由FineBI爆改FineReport决策报表-技巧汇总

楼主
我是社区第773587位番薯,欢迎点我头像关注我哦~

上篇从项目介绍、页面布局和整体概览、具体分析过程、整体分析结论、下一步改进计划五个方面具体阐述了报告的分析思路和分析结论,本篇主要写一些里面涉及到的操作,也当自己留个备忘录啦。如果更简单或更适用的方法欢迎大家交流。

上篇具体链接如下:https://bbs.fanruan.com/thread-150185-1-1.html

原型图带*号的操作即为本篇的内容。

具体内容包含:

(一)fr小技巧应用

1、条件属性-斑马纹(隔行填充)效果

示例:《客户进一步分析》-“客户明细”。

具体效果如下:

添加条件属性,设置背景应用于当前行。条件设置为ROW()%2==0。row() 为获取当前行号,包含标题行。

参考链接详见:https://help.fanruan.com/finereport/doc-view-952.html

2、图表预定义配色

在模版主题中,颜色的设置是有限的,如果系列过多,可以服务器-图表预定义配色中设置配色组合色。

参考链接详见:https://help.fanruan.com/finereport/doc-view-496.html

(二)JS使用汇总

1、JS-页面跳转

示例:每个报表上面的切换页面按钮。

具体效果如下:

对按钮添加点击后事件,实现跳转后进入别的页面

 window.location="PC端预览链接";

同时通过按钮的属性-背景里面,通过不同的背景颜色,区分显示此时看到的页面。

2、JS-图表排序接口

示例:《客户进一步分布》-“近3年客户价值分类情况-基于FRM模型”,点击右上角排序按钮,切换正序或倒序。

具体效果如下:

添加一个按钮,按钮名字为排序。添加点击后事件:

 var chart = FR.Chart.WebUtils.getChart("组件名").getChartWithIndex(0); 
 // 获取图表对象
 chart.sortChart(); //

参考链接详见:https://help.fanruan.com/finereport/doc-view-2332.html?source=4#

3、JS-走马灯效果

示例:《客户进一步分析》-“客户明细”。

具体效果如下:

对组件添加初始化后事件:

 setTimeout(function(){
 _g().getWidgetByName('组件名').startMarquee()
 }, 500);

参考链接详见:https://help.fanruan.com/finereport/doc-view-2393.html

(三)参数相关用法

1、日期控件控制数据集结果-$开始日期&$结束日期

1)控件设置

添加两个时间控件,分别命名为开始日期和结束日期(控件名称即为绑定的参数名)。

注意在属性中返回值类型修改为字符串。

格式默认日期型(yyyy-MM-dd)。

控件值可以用公式默认显示本年至今:开始日期=DATEINYEAR(TODAY(),1),结束日期=TODAY();其中FR函数:

 DATEINYEAR(date,number):函数返回在一年当中第几天的日期

2)数据集中参数设置

 where 1==1
 AND (STR_TO_DATE(业务时间,'%Y-%m-%d') BETWEEN STR_TO_DATE('${开始日期}','%Y-%m-%d')
  AND STR_TO_DATE('${结束日期}','%Y-%m-%d'))

3)同比写法举例

 select *,(本年_万-前年_万)/前年_万 as 增长率,concat(销售姓名,":",round((本年_万-前年_万)/前年_万*100,2),"%") as 销售姓名_增长率
 from(
 SELECT `销售姓名`,round(sum(CASE WHEN (STR_TO_DATE(结算时间,'%Y-%m-%d') BETWEEN STR_TO_DATE('${开始日期}','%Y-%m-%d')
AND STR_TO_DATE('${结束日期}','%Y-%m-%d')) THEN 收入金额 else 0 END)/10000,2) as 本年_万,

  round(sum(CASE WHEN (STR_TO_DATE(结算时间,'%Y-%m-%d') BETWEEN date_sub(STR_TO_DATE('${开始日期}','%Y-%m-%d'),INTERVAL 2 year)
AND date_sub(STR_TO_DATE('${结束日期}','%Y-%m-%d'),INTERVAL 2 year)) THEN 收入金额 else 0 END)/10000,2) as 前年_万

 FROM view_revenue
 where 区域 is not null
 ${if(len(区域2)==0,"","and 区域='"+区域2+"'")}
 group by 销售姓名
 ) as a
 where (本年_万-前年_万)/前年_万 is not null and 本年_万>50
 order by 增长率 desc

2、组件超级链接传参到另一组件-$区域

示例:《收入目标概览》-“区域维度收入完成率”&“全部销售收入完成情况”。点击区域后,全部销售只显示改区域对应的销售数据。

具体效果如下:

1)传值组件操作

在数据编辑界面,特效-超级链接-选择“当前表单对象”;表单对象选择被传传值的组件,并设置参数(注意,这里的参数不能加$符号)


2)被传值组件操作

数据集:如果是空,返回全部,非空,返回参数值

 WHERE 1==1 
 ${if(len(区域1)==0,"","and 金额.区域='"+区域1+"'")}

组件标题可以设置fr函数为:

 CONCATENATE(IF(LEN($区域1)==0,"全部",$区域1),"销售收入完成情况")

3)自己传值给自己操作(点击自身后返回全部)

参考链接详见:https://help.fanruan.com/finereport/doc-view-4494.html

3、组件点击修改排序方式-$排序字段&$排序顺序

示例:《客户进一步分析》-“客户明细”,点击表头之后切换排序字段,再点击一次后正序切换为倒序。

具体效果如下:

1)对排序字段添加超级链接-当前决策报表对象

2)数据集设置

 order by ${排序字段} ${排序顺序}

注意:不要加单引号!

本办法提供者为@weibw(uid:256388)(在使用FineReport11 从零开发微型CRM系统课程中的讲解)

4、图表自身钻取并返回

示例:《产品进一步分析》-“各不同产品大类收入占比-基于帕累托模型”,点击大类后,钻取到小类。

具体效果如下:

1)数据源的设置

一级产品大类维度正常设置。二级产品小类维度设置参数$产品大类如下:

 where 产品大类='${产品大类}'

2)组件数据的设置

分别设置柱形图和折线图的数据。

数据来源修改为“单元格数据“。

设置分类名公式示例如下:

 if(len($产品大类)==0,帕累托各不同产品大类收入占比.select(产品大类), 帕累托各不同产品小类收入占比.select(产品小类))

设置系列值公式示例如下:

 if(len($产品大类) = 0, 帕累托各不同产品大类收入占比.select(本年_万), 帕累托各不同产品小类收入占比.select(本年_万))

3)特效-交互属性-设置超级链接-当前表单对象

该组件是组合图,可以分别对柱形图和折线图添加超级链接,此处只对柱形图设置。

方法1:点击二级之后组件显示空

参数值设置为:分类名。

方法2:点击二级之后组件不变

参数值设置为:IF(LEN($产品大类)=0,category,$产品大类)

方法3:点击二级之后返回一级

IF(LEN($产品大类)=0,category,"")

注意:数据源名称中不能有特殊符号,例如-!!!

参考链接详见:https://help.fanruan.com/finereport/doc-view-4088.html

 

本篇特别鸣谢@weibw(uid:256388)大佬提供的帮助~

分享扩散:

沙发
发表于 前天 14:54
厉害厉害
板凳
发表于 前天 15:14
大佬果然是大佬
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

3回帖数 1关注人数 924浏览人数
最后回复于:前天 15:29

返回顶部 返回列表