需求:给公司的核心Boss系统做各种报表
困难:fineRePort软件熟悉的还凑合,难点在于java做的boss系统web界面和业务逻辑不熟悉,数据库的表和字段一概不知
熟悉数据库的思路:这次没有想几百张表怎么熟悉,或划模块熟悉。
而是直接参考同事以前做的报表,看他写的sql,并结合数据库文档,不断的改不断的试
看sql的难点在于,我们这报表一般的都要连十几张表,里面还各种if、case when、函数、关键字...等,一条sql写100多行,看着真心晕,真心懵逼啊。
1、先打开他那报表,试着跑起来,发现查不出来数据
2、选择查询条件,还是查不出来。这时候就只能看他那sql是咋写的了
看sql的思路(如下图,顺序无所谓,总共就3步):
1、先摒弃case等 多余的东西,只找出要查的字段
2、然后找出所有连表,并 分出来哪一张是主表,其他都是从表。
找外键关系,看他表的关系(通过sql的连表 + on的条件,对应真实表看)
3、根据查询条件分析使用,看他最后一个连表,后面跟的where条件
结果发现是没有授权,但是这思路我觉得对我还是有帮助的
解决:同事提点,给出了要操作哪5张表
我想出来了一个 在上千张表的库中,快速筛选有用数据表的方法
思路:只要数据不是今天或本月(不是热门表)就筛掉,换下一张表看
sql:select 添加时间 from 每个表 order by 添加时间 desc limit 100
使用总结:
- $$$是当前行
- 父子格的默认过滤关系,相当于拿父格进行分组 查询
- 在公式中&B10 给b10列自动生成编号
- x轴是分类,Y轴是系列
- 单元格图表和悬浮图表的不同处:单元格图表是要先合并出一个图表大小的位置,悬浮的不用合并(悬浮,不基于单元格大小而显示)
- 在局域网中,如何让同事看见你的报表:给url上的localhost换成本机ip就可以了
颜色标志相关:
左上角红色 是 条件属性
左上角绿色 是 右侧-》单元格属性-》形态-》数据字典
右上角绿色 是 右侧-》单元格属性-》其他-》分页(行前分页)
左下角黄色 是 过滤条件
蓝色字带下划线 是 超链接
蓝色箭头 是 父格
重要的参考文档:
sql上加limit
单元格的绝对定位(写在公式中,语法是 []):
1、普通定位
思路:先看[]里,在看[]外
示例:=A1[A1:3]//这3是取A1扩展后的A3单元格的值(下面这4个特殊的值。是放到:3这个位置上的)
1 //第1个值
-1 //上一个值
!0//所有的值
!-1//最后一个值
2、带条件定位
[]后面跟{条件写这里} //带条件
示例:=A1[!0]{A1!=3} //取A1单元格扩展出的值,输出 值!=3的
3、特殊定位
$ //绝对定位时,不写才能取,取当前的值
& //每个
多源报表:
简单多源报表:连表查询。添加过滤条件时,选单元格
复杂多源报表:连库查询(使用的是内置数据集)
多源分片报表:最复杂的。多源就是一张报表的数据来源来自多个数据表,甚至是多个物理数据库。这里的“多个”常常不是两个三个,而是七八个乃至十几个,无法转成单源;
分片是指一张报表的纵向或横向或双向同时被分成了多个区域,往往每个区域来自不同的数据源;【蒙了,没学会】
分组报表:
按段分组:选中单元格-》分组-》高级-》自定义,设置分组条件(就和使用if写 && 条件一样)
归并分组:选中单元格-》分组-》高级-》自定义,设置分组条件(就和使用if写 || 条件一样)
自定义公式分组:【没学会】
常用小技巧
连接本地数据库
动态隔间运算
主要参考的文档:
概念:
使用方法总结:
单元格的绝对定位(写在公式中,语法是 [])
1、普通定位
思路:先看[]里,在看[]外
示例:=A1[A1:3] //这3是取A1扩展后的A3单元格的值(下面这4个特殊的值。是放到:3这个位置上的)
1 //第1个值
-1 //上一个值
!0//所有的值
!-1//最后一个值
2、带条件定位
[]后面跟{条件写这里} //带条件
示例:=A1[!0]{A1!=3} //取A1单元格扩展出的值,输出 值!=3的
3、特殊定位
$ //绝对定位时,不写才能取,取当前的值
& //每个
单元格计算:
比较:当前月 减 1月份,的值(数字)
占比:当前月 / 所有月份的和(百分比)
环比:当前月 / 上一个月的值(百分比)
逐层累计:同一年中,每月的和,都加之前的和
跨层累计:2年中,18年的1月份+17年的整年和(比逐层多个判断,如果>1月份就要加上一年的和,用逐层累计的公式。否则)
条件属性
下图是,勾上复选框后,深绿色的地方隐藏
行式报表-隔行换色:
在id那列,通过设置表达式 row()%2==0
宽度不够,想出现滚轴:
打印参数
数据字典的使用方法
多源报表
多源报表:多源指的是多个数据源。就是多张表中取数据。
注意:连表,它不会自己判断搜索条件,需要手动设置on 谁等于谁
先选中b表的字段(看右侧单元格元素)-》过滤条件(点编辑)-》选单元格(输入和哪个单元格关联)-》先添加,在确定
主子报表
超级链接
思路:点击模板1的xx,跳转到一个新网页(模板2)
模板2数据集的,where条件使用参数(变量)代替
模板1的超级链接中
参数
参数总结:在大数据量时使用,数据集参数;数据量不大,使用模板参数;
参数分2种:
1、数据集参数,就是在sql中直接写
先在sql中定义参数,语法 ${参数名}
2、模板参数,菜单-》模板-》模板参数中定义
只比数据集多了下面这一步,联合过滤使用(sql的where用的是这可选列,and or是你添加多个条件时...)
传参方式(都是操作模板参数):
1、模板参数-》添加到参数面板中-》传给单元格过滤用
2、Url参数-》定义模板参数-》在url后面加参数-》在单元格中使用(公式-》$调用参数名)就能接收到
url参数在sql中直接使用的语法: '${url上的参数名}'
公式的2种传参方式:
1、传模板参数:$参数名 //直接放到公式中(如上图)
2、传模板参数:$参数名 //在公式中,将模板参数,当函数参数用
参数为空选择全部
思路:参数为空不过滤
1、数据集参数(在sql上处理)看demo(11-1)
SELECT * FROM 销量 where 1=1 ${if(len(area)==0,"","and 地区='"+area+"'")}
2、模板参数。看demo(11-2)
if(len($a)==0,nofilter,$a)
填报相关
总思路:填报是对数据库进行【改删】
1、设计报表(和平常一样。数据集-》字段拖过来-》加样式)
2、添加填报控件(相当于html的,各种不同type的input框)
3、设置填报属性。菜单-》模板-》报表填报属性(设置主键。表格字段和数据库表字段的对应关系等)
4、填报预览(进行修改测试)
多sheet填报
多个sheet修改,提交时,是全部提交
图表
单元格-》图表
概念:x轴是分类,Y轴是系列
1、先合并单元格(用于放图表)
2、插入图表(菜单-》插入-》单元格元素-》插入图表)
3、定义图表的数据
悬浮-》图表
填报设计的-》图表
饼图的特殊点
部署发布(上线)
嵌入式部署:是有选择的复制文件夹,不是整个项目全复制过去
插件的安装和使用
使用时:只有决策报表才能使用插件