帆软图表钻取钻回

黎明至暗 2024-10-02 17:33:01 阅读 99

这是工作记录,是一个刚接触帆软的新人,所以如有不对,请直接指出,在这祝大家前途坦荡,一马平川,事业有成。

这一次记录的内容是帆软的图表钻取和钻回,操作基本上跟帆软的帮助文档大差不差,我也写了一篇“帆软图表多层钻取”。这就是一个两层的钻取和钻回,无需特意弄一个返回按钮。

图表钻取钻回

(一)、方式一

1、sql数据集准备

1.1、第一层sql数据集

select 

T1.v_rate_code_dec 房价大类,

-- T1.v_rate_code_dec2 房价二级分类,

sum(T1.n_room_rate) 房租收入  

from f_room_report_day_sum T1

where T1.v_rate_code_dec is not null

and T1.n_business_date between ${开始日期} and ${结束日期}

${if(len(酒店星级) == 0,"","and T1.v_star_dec in ('" +酒店星级+ "')")}

${if(len(酒店品牌) == 0,"","and T1.v_brand_dec in ('" +酒店品牌+ "')")}

${if(len(酒店档次) == 0,"","and T1.v_hotel_level_dec in ('" +酒店档次+ "')")}

${if(len(酒店功能) == 0,"","and T1.v_hotel_type_dec in ('" +酒店功能+ "')")}

${if(len(行政级别) == 0,"","and T1.v_if_publish_complay in ('" +行政级别+ "')")}

${if(len(酒店名称) == 0,"","and T1.v_hotel_code in ('" +酒店名称+ "')")}

group by 房价大类-- ,房价二级分类

第一层需要展示的系列名是“房价大类”,对应需要展示的值是“房租收入”。这个就正常sql语句,就注释与第一层数据无关的其他层字段就行。比如:第一层展示的数据有“饮品”,“食品”,“海鲜”等。

1.2、第二层sql数据集

select 

-- T1.v_rate_code_dec 房价大类,

T1.v_rate_code_dec2 房价二级分类,

sum(T1.n_room_rate) 房租收入  

from f_room_report_day_sum T1

where T1.v_rate_code_dec is not null

and T1.n_business_date between ${开始日期} and ${结束日期}

${if(len(rate_code_dec) == 0,"","and v_rate_code_dec in ('" + rate_code_dec + "')")}

${if(len(酒店星级) == 0,"","and T1.v_star_dec in ('" +酒店星级+ "')")}

${if(len(酒店品牌) == 0,"","and T1.v_brand_dec in ('" +酒店品牌+ "')")}

${if(len(酒店档次) == 0,"","and T1.v_hotel_level_dec in ('" +酒店档次+ "')")}

${if(len(酒店功能) == 0,"","and T1.v_hotel_type_dec in ('" +酒店功能+ "')")}

${if(len(行政级别) == 0,"","and T1.v_if_publish_complay in ('" +行政级别+ "')")}

${if(len(酒店名称) == 0,"","and T1.v_hotel_code in ('" +酒店名称+ "')")}

group by -- 房价大类,

房价二级分类

第二层需要展示的系列名是“房价二级分类”,对应需要展示的值是“房租收入”。这一层就注释与第二层数据无关的其他层字段,然后再加一个参数来判断钻取的是第一层数据的哪个下级。比如:第二层要展示的是“饮品”的下级,有“牛奶”,“可乐”,“矿泉水”等。

2、图表设置

2.1、图表样式

说一下这个是带我的人做的,我做的是第二种方式,至于为什么样式这里是分开的两个环形图,因为在分类名那里输入了一个等号“=”,然后就出现。

2.2、图表数据设置

数据设置这里首先是数据来源选择“单元格数据”,之后就是公式填写了,不过因为我这个是饼图,所以分类名可以跳过不填,只需要在系列名和值这两个地方填写就行。

注意:因为我没搞过柱状图的自身钻取钻回,所以这个填写方式我就按多层钻取的思路来写了,如果是柱状图的话,可能是直接把饼图系列名的公式移动到柱状图分类名的位置,然后柱状图的系列名要么自己手动填写,要么就是继续公式,只不过公式的目标需要重新用其他的数据字段,这个数据字段还要跟分类名和值的数据字段有关联。

这里系列名用的公式:=if(len($rate_code_dec) = 0,fj_ds1.select(房价大类),fj_ds2.select(房价二级分类))。

这里值用的公式:=if(len($rate_code_dec) = 0,fj_ds1.select(房租收入),fj_ds2.select(房租收入))。

2.3、图表特效设置

参数是${rate_code_dec},对应的值的公式为:=if(len($rate_code_dec) = 0,series,"")。

3、效果图

在第二层点击的环形图后会直接返回到第一层。

(二)、方法二

1、sql数据集准备

原先sql数据集

select 

T1.v_hoteltype_dec 注册渠道大类,

T1.v_extend_hotel_name 注册渠道酒店,

count(1) 本日新会员数量

from d_member_info T1 

where -- T1.v_extend_hotel_code Not In('YJJR01') and 

date(T1.d_create_date)= '${日期}'

group by 注册渠道大类,

注册渠道酒店

修改后的sql数据集

select 

if('${month}' = "",T1.v_hoteltype_dec,T1.v_extend_hotel_name) 注册渠道类型,

count(1) 本日新会员数量

from d_member_info T1 

where -- T1.v_extend_hotel_code Not In('YJJR01') and 

date(T1.d_create_date)= '${日期}'

${if(len(month) == 0,"","and v_hoteltype_dec in ('" + month + "')")}

group by 注册渠道类型

主要修改的思路就是把原先的“注册渠道大类”和“注册渠道酒店”整合成“注册渠道类型”,添加一个参数来判断需要使用层级,在筛选的区域加上参数的筛选确保层级的状态

2、图表设置

2.1、图表样式

2.2、图表数据设置

这种方式的就是在sql数据集里面设置好层级的展示,然后图表数据设置的数据来源选择“数据集数据”,数据集选择修改后的数据集;因为是饼图,所以分类这里不用填;系列名就直接用数据集的“注册渠道类型”字段;值用数据集的“本日新会员数量”;汇总方式选择“求和”。

2.3、图表特效设置

参数是${month},对应的值的公式为:=if(LEN($month) = 0,series,"")。

3、效果图

在第二层点击的环形图后会直接返回到第一层。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。