微信公众号:次世代数据技术 关注可了解更多的教程。问题或建议,请公众号留言或联系本人; 如果您有报表开发需求或者定制化功能开发,也可以联系本人; 微信号:weibw162
本教程视频讲解可以关注本人B站进行观看:次世代数据技术 同时,您也可以在抖音及微信视频号平台搜索次世代数据技术进行观看。
一、需求描述
在使用决策报表开发大屏看板时,我们经常遇到这样一种场景。在展示一些时间维度的数据时需要能够快速的切换维度。比如,当我们在前台查看销售金额在时间维度上的波动趋势时,我们可以在页面快速的自由切换日统计维度,周统计维度,月统计维度。FineReport目前是不支持该操作的,本文提供一种方案。
本方案的实现步骤如下:
- 在数据集中使用
switch()
公式根据判断维度
参数的值而进行不同维度的统计。 - 使用报表块创建模拟维度切换按钮。
- 给维度按钮增加超级链接,通过对当前决策报表对象传递对应的参数值进行维度的切换。
注1:不支持移动端使用。注2:本文涉及到的技术及流程均仅在FineReport 11.0 版本进行实际验证,如果您在使用过程中出现问题可以联系本作者。
二、具体操作
第一步
改造现有数据集,增加switch()
公式,使用公式动态判断统计维度。 公式展开如下:
switch(维度,
"日","day(下单时间)",
"周","concat('W',week(下单时间))",
"月","month(下单时间)")
switch(维度,
"日","day(下单时间)",
"周","concat('W',week(下单时间))",
"月","month(下单时间)")
2
3
4
此公式表示,当维度值为日
时,返回day(下单时间)
,当维度值为周
时,返回concat('W',week(下单时间))
,当维度值为月
时,返回month(下单时间)
。
有关switch()
公式的解释如下: 要注意公式后面要给一个统一的字段别名,比如这里我们就使用时间
作为动态维度的别名。
完整数据集代码如下:
SELECT
${switch(维度,"日","day(下单时间)","周","concat('W',week(下单时间))","月","month(下单时间)")} '时间'
,count(数量) '总销售数量'
FROM 下单记录表
group by ${switch(维度,"日","day(下单时间)","周","concat('W',week(下单时间))","月","month(下单时间)")}
limit 10
SELECT
${switch(维度,"日","day(下单时间)","周","concat('W',week(下单时间))","月","month(下单时间)")} '时间'
,count(数量) '总销售数量'
FROM 下单记录表
group by ${switch(维度,"日","day(下单时间)","周","concat('W',week(下单时间))","月","month(下单时间)")}
limit 10
2
3
4
5
6
7
第二步
决策报表中拖入一个折线图,然后将我们的数据集配置上去。
第三步
增加一个模板参数,取名维度
,并设置默认值为日
。
第四步
在决策报表中拖入一个报表块,并调整其尺寸。然后在报表块内合适单元上模拟出我们的维度按钮。
第五步
给报表块中所有的按钮添加一个条件属性,通过判断当前单元格的值是否等于第二步中创建的模板参数维度
,然后设置其样式,目的是区别被选中的维度按钮。
第六步
给报表块中所有的按钮添加两个超级链接,类型都选择为当前决策报表对象
,且都需要传递参数维度
,值就是当前单元格的值,可以用公式$$$
表示。唯一不同的就是选择的表单对象不同
,一个是我们影响的图表对象,一个是当前按钮所在的报表块。当然,如果你想同时控制多个图表,那么你就需要多增加几个超级链接。
以上配置都结束后,点击预览即可看到我们需要的效果。
三、模板文件下载
扫码即可下载文档示例模板及其他代码文件 如果您在阅读或实际操作过程中有问题,可以随时添加作者好友进行咨询。