手册下载
35-U-Center QuickReport 2.0配置举例-整本手册.pdf (4.63 MB)
QuickReport快速报表
资料版本:5W100-20240424
Copyright © 2024 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文档中的信息可能变动,恕不另行通知。
快速报表(Quick Report)是指一种能够快速、灵活地生成可视化报表的软件工具,通过与多种数据源连接,利用内置的报表模板和图表设计功能,实现对数据的快速提取、整合和可视化展示。
· 提供丰富的可视化选项,包括图表、仪表盘、地图等,用户可以自定义多种常见图表类型。
· 用户可以轻松地创建交互式仪表盘,将不同的可视化图表组合在一起,通过拖拉拽实现所见即所得的操作体验。
· 支持为一个报表模板创建周期任务,根据配置的参数条件定期生成报表。
· 支持配置邮件,用于发送周期任务中生成的报表文件下载地址,便于用户查阅和下载。
快速报表生成工具广泛应用于企业的数据分析、业务决策和日常报表生成场景,例如财务报表、销售报表、市场分析报表等。通过该工具,用户可以在短时间内根据需要生成符合业务要求的报表,提高工作效率和数据可视化效果。
本文适用于在U-Center 2.0下配置QuickReport快速报表的场景。
· 场景一:已安装快速报表,未安装iAR 报表功能授权
¡ 可查看安装快速报表业务组件时预置的数据集、图表和模板。
¡ 不能查看用户自定义增加的数据集、图表和模板。
¡ 不能增加、修改、删除数据集、图表和模板。
· 场景二:已安装快速报表和iAR 报表功能授权
¡ 可查看安装快速报表业务组件时预置的数据集、图表和模板。
¡ 可查看用户自定义增加的数据集、图表和模板。
¡ 可增加、修改、删除数据集、图表和模板。
¡ 增加数据集时,支持U-Center内部的数据源。
¡ 支持U-Center用户关于快速报表权限的配置。
· 场景三:已安装快速报表、iAR 报表功能授权和数据分析台
¡ 可查看安装快速报表业务组件时预置的数据集、图表和模板。
¡ 可查看用户自定义增加的数据集、图表和模板。
¡ 可增加、修改、删除数据集、图表和模板。
¡ 增加数据集时,支持U-Center内部的数据源、第三方数据源。
¡ 支持数据预处理。
¡ 在自助查询页面,支持跨数据源查询。
¡ 支持U-Center用户关于快速报表权限的配置。
· U-Center 2.0服务器安装和部署完成。
· QuickReport快速报表安装部署完成。
· 已安装“iAR 报表功能授权”。
· 已为用户分配快速报表数据集、图表、模板、任务等相关权限。
某公司使用SQL查询来统计不同类型工单的新增工单数量、处理工单数量、关闭工单数量,如事件工单、问题工单等,并且可定时生成报表,发送到指定的邮箱。
工单概览页面如下图所示:
图1 工单管理页面
本例在SQL中使用Jinja模板,Jinja模板宏的说明如下所示:
· filter:在查询中应用的过滤器;
· filter_values:过滤字段的值;
· from_dttm:datetime,所选时间范围的起始值;
· to_dttm:datetime,所选时间范围的结束值;
· groupby:在查询中分组的列(不推荐);
· metrics:查询中的聚合表达式;
· row_limit:查询的行数限制;
· row_offset:查询的行偏移量;
· table_columns:数据集中可用的列;
· time_column:查询的时间列;
· time_grain:选定的时间粒度;
· current_uc_user:当前登录用户信息;
· current_uc_username:当前登录用户的用户名;
· current_uc_user_id:当前登录用户的用户ID;
· current_uc_user_operator_group:当前登录用户的操作组;
· current_ures_uuid:当前登录用户可以访问的资源UUID;
· dataset(dataset_id=2, columns=[‘name’, ‘age’, …]):数据集,使用该宏返回的是SQL语句。dataset_id(必填)为数据集ID,在数据集管理列表中可以查看,columns(非必填)为展示的列;
· dataset_result(dataset_id=2, columns=[‘name’, ‘age’, …]):数据集结果,使用该宏返回的是数据集的结果。dataset_id(必填)为数据集ID,在数据集管理列表中可以查看,columns(非必填)为展示的列;
· cmdb_permission_ci(ci_ids=[1,2,3, …]):CMDB中,具有权限的配置项(CI)包含一个参数ci_ids(非必填)。结果示例为{"all": false, "ciIDs": []},当all为true时,表示拥有所有权限;当all为false时,ciIDs表示具有权限的CIID。
宏的使用方式举例:SELECT * FROM ( {{ dataset(2) }} ) WHERE app_type = '{{app_type}}'。
使用{{ }}将宏引用起来,这里的2是数据集ID,没有列名配置时,参数名可省略。单击自助查询页面中的<参数>按钮配置模板参数,此参数为JSON格式,如{ "app_type":"linux"},参数配置完成后执行SQL语句,则会按照当前配置的参数进行查询。
(1) 选择“分析”页签,在左导航树中单击[数据分析/数据服务/自助查询]菜单项,进入自助查询页面。
(2) 在编辑器中编写SQL,如图2所示,保存为2个数据集process_instance_quantity_statistics。本例使用了Jinja模板中{{from_dttm}}、{{to_dttm}}。
图2 数据集process_ instance_quantity_statistics
(3) 在数据集管理页面,可查看已创建成功的数据集,如下图所示。
图3 数据集管理
(1) 选择“分析”页签,在左导航树中单击[数据分析/数据服务/图表管理]菜单项,进入图表管理页面。
(2) 单击<增加>按钮,进入创建新图表页面。
(3) 选择数据集process_instance_quantity_statistics,选择“表”和“条形图”,分别创建2个图表“工单数量统计表”和“工单数量统计条形图”,如图4、图5所示。
¡ 工单数量统计表参数设置:将左侧数据集中的“流程名称”、“新增工单数量”、“处理中工单数量”、“关闭工单数量”列拖到右侧的数据设置的原始数据的列中。
¡ 工单数量统计条形图参数设置:将左侧数据集中的“流程名称”列拖到右侧的数据设置里的维度中,将“新增工单数量”、“处理中工单数量”、“关闭工单数量”拖到指标中。
(4) 配置完成后,单击右上角的图标,在弹出的窗口中单击<保存>按钮保存图表。
(5) 在图表管理页面,可查看已创建的2个图表“工单数量统计表”和“工单数量统计条形图”。
图6 图表管理
(1) 选择“分析”页签,在左导航树中单击[报表/快速报表/模板管理]菜单项,进入模板管理页面。
(2) 单击<增加>按钮,进入创建模板页面。
(3) 选择布局元素,将选择的布局元素拖动到页面中间的选项卡中。
(4) 选择图表,从左侧图表列表中选择已创建的图表“工单数量统计表”和“工单数量统计条形图”,并拖动到选择的布局中进行垂直组合。
(5) 过滤器设置,在布局元素中增加一个过滤器布局,然后编辑过滤器。支持多种类型的过滤器,满足不同过滤条件,包括值、时间范围、数值范围、时间粒度、资源、资源分组、自定义过滤器。本例选择时间范围的过滤器。
(6) 配置完成后,设置模板名称为“工单统计报表”,如图7所示。
(7) 单击右上角的图标,保存报表模板并发布。发布后的报表效果如图8所示。
(8) 在模板管理页面,可查看已创建的报表模板“工单统计报表”。
图9 模板列表
(1) 选择“分析”页签,在左导航树中单击[报表/快速报表/任务管理]菜单项,进入任务管理页面。
(2) 单击<增加>按钮,进入增加任务页面。
(3) 配置如下任务信息,如图10所示。
¡ 基本信息:配置任务名称为“工单统计报表任务”,本例不配置任务描述信息,激活状态默认为激活。
¡ 模板选择:选择“工单统计报表”模板,生成报表的格式默认选择PNG。
¡ 周期策略:配置任务类型,默认选择“天”,默认生成时间为凌晨;配置任务失效日期;配置历史报表保留天数,默认配置为90天;配置执行超时时间,默认配置为3600秒。
¡ 通知方式:配置报表任务执行结果的邮件通知人,报表生成后便发送通知。
(4) 单击<确定>按钮,保存任务。
(5) 在任务管理页面,可查看已创建的任务“工单统计报表任务”。
图11 任务管理
(1) 选择“分析”页签,在左导航树中单击[报表/快速报表/任务管理]菜单项,进入任务管理页面。
(2) 单击任务列表历史报表列的<查看历史报表>按钮,进入历史报表页面。
(3) 单击历史报表列表操作列的图标,可直接下载历史报表到本地进行查看。
某公司使用快速报表来统计系统业务的变更信息,通过创建物理数据集,查询bsm_db.tbl_node_change表即可实现。创建图表、创建模板、创建任务和查看历史报表的步骤和虚拟数据集场景一致,此处物理数据集场景将不再描述。
图12 系统业务变更分析页面
(1) 选择“分析”页签,在左导航树中单击[数据分析/数据服务/数据集管理]菜单项,进入数据集管理页面。
(2) 单击<增加>按钮,进入新增数据集页面。
(3) 选择数据源MySQL-215、数据库bsm_db、数据库表tbl_node_change,将展示表字段信息,单击<确定>按钮创建数据集。
图13 创建数据集
某公司使用快速报表来统计CMDB维保到期数据,通过调用API接口,使用API接口返回值的字段创建数据表。
(1) 在数据库bi_quickreport_db中,创建数据表Maintenance_Expiry_Statistics:
CREATE TABLE `Maintenance_Expiry_Statistics` (
`ciTypeName` varchar(100) DEFAULT NULL COMMENT '资源类型',
`allCount` bigint(20) DEFAULT NULL COMMENT '资源总数',
`expireCount` bigint(20) DEFAULT NULL COMMENT '当前已到期数量',
`expireInDateCount` bigint(20) DEFAULT NULL COMMENT '统计日期内将到期数量'
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 COMMENT='维保到期统计'
(2) 在数据表bi_quickreport_db.qr_datasource中记录API接口信息:
INSERT INTO bi_quickreport_db.qr_datasource (`table`,scheme,host,port,`path`,httpMethod,description,resultPath,timeFormat) VALUES
('bi_quickreport_db.Maintenance_Expiry_Statistics','http','itom-cmdb-rs-svc.service-software.svc',8088,'/cmdb/ci/ciAudit/getCiMaxDateForReport?endTime={endTime}&startTime={startTime}','Get','维保到期统计','$.rsMaxDateForReportDetailList','%Y-%m-%d%%20%H%%3A%M%%3A%S');
表1 数据表bi_quickreport_db.qr_datasource字段说明
列 |
类型 |
描述 |
id |
bigint |
Id自动生成 |
table |
varchar(100) |
Rest接口返回数据暂存表名,表的字段与resultPath的属性字段一一对应,表名格式为bi_quickreport_db.xxx,举例:bi_quickreport_db.Maintenance_Expiry_Statistics,需要在bi_quickreport_db数据库下创建Maintenance_Expiry_Statistics表 |
schema |
varchar(256) |
Rest接口协议,包括http、https |
host |
varchar(256)
|
Rest接口主机,举例:itom-cmdb-rs-svc.service-software.svc |
port |
int |
Rest接口端口 |
path |
varchar(1024)
|
Rest接口路径,包含queryParameter,参数值由占位符代替,占位符字符串与报表模板设置的过滤参数名称一一对应,举例:/alarmReport?endTime={endTime}&startTime={startTime}&ids={resGroupIds} |
httpMethod |
varchar(256) |
Rest接口请求方式,只支持GET |
description |
varchar(256) |
Rest接口描述 |
resultPath |
varchar(256) |
返回值取值的JsonPath表达式,举例:$.data.tblDatas |
timeFormat |
varchar(100) |
Rest接口时间参数格式,可选值:%Y-%m-%d%%20%H%%3A%M%%3A%S和%Y-%m-%d |
(3) 通过表Maintenance_Expiry_Statistics创建物理数据集,具体步骤请见3.2 物理数据集场景。创建数据集时,数据源选择API_DATASOURCE,数据库选择bi_quickreport_db。创建图表、创建模板、创建任务和查看历史报表的步骤和虚拟数据集场景一致,此处物理数据集场景将不再描述。
某公司创建报表统计业务的业务得分信息,以mysql数据库bsm_db中的表tbl_business_score_day为统计数据来源,该表结构如图14所示。
添加物理数据集tbl_business_score_day,具体操作请参见3.2 物理数据集场景,如图15所示。添加虚拟数据集sql_tbl_business_score_day,具体操作请参见3.1 虚拟数据集场景中的3.1.2 创建数据集,如图16所示。
基于以上创建的数据集创建图表“业务得分趋势图”,具体操作请参见3.1.3 创建图表,如图17所示。以同样的方式增加其他图表:各业务平均得分,业务平均得分趋势图,各业务得分趋势图,各业务得分明细。
基于以上创建的图表创建模板“业务综合报表”,具体操作请参见3.1.4 创建模板,如图18所示。
如果数据集的列中包含时间列,使用该数据集的报表进行过滤器设置时,只需选择时间范围的过滤类型即可。过滤器的查询将默认包含时间列字段作为where条件。若数据集中有多个时间列,则默认按照第一个时间列进行过滤。
图19 数据集中包含时间列
图20 过滤器选择时间范围类型
图21 过滤器查询默认参数
如果数据集的列中不包含时间列,则在使用该数据集的报表进行时间过滤器设置时,需要将过滤器类型设置为时间范围,并在数据集的SQL脚本WHERE条件中传入固定的参数(from_dttm和to_dttm)。
注意:在自助查询保存数据集时,如果使用jinja模板的if等判断可能会出错。因此,建议在保证查询无误且结果符合预期的情况下保存为数据集,然后再在修改数据集时添加if等jinja模板的判断逻辑。另外,还有一种推荐方法,即先在查询中补充参数,保证查询正确,然后再保存数据集。
图22 保存数据集时出错
图23 传参
图24 保存数据集
图25 修改数据集
图26 参数判断
以上最终的数据集里包含了jinja模板的判断逻辑,默认情况下,以下的变量(宏)可以在jinja模板里使用,嵌入SQL查询和报表模板的过滤器结合来支持报表中虚拟数据集的动态过滤。
· filter:在查询中应用的过滤器;
· filter_values:过滤字段的值;
· from_dttm:datetime,所选时间范围的起始值;
· to_dttm:datetime,所选时间范围的结束值;
· groupby:在查询中分组的列(不推荐);
· metrics:查询中的聚合表达式;
· row_limit:查询的行数限制;
· row_offset:查询的行偏移量;
· table_columns:数据集中可用的列;
· time_column:查询的时间列;
· time_grain:选定的时间粒度;
· current_uc_user:当前登录用户信息;
· current_uc_username:当前登录用户的用户名;
· current_uc_user_id:当前登录用户的用户ID;
· current_uc_user_operator_group:当前登录用户的操作组;
· current_user_uuid: 当前登录用户可以访问的资源UUID;
· dataset(dataset_id=2,columns=[‘name’, ‘age’, …]):数据集,有两个参数可以使用,dataset_id(必填)为数据集ID,在数据集管理列表中可以查看,columns(非必填)为展示的列;使用该宏返回的是SQL语句;
· dataset_result(dataset_id=2,columns=[‘name’, ‘age’, …]):数据集结果,有两个参数可以使用,dataset_id(必填)为数据集ID,在数据集管理列表中可以查看,columns(非必填)为展示的列;使用该宏返回的是数据集的结果;
· cmdb_permission_ci(ci_ids=[1,2,3, …]):CMDB有权限的CI,有一个参数ci_ids(非必填)。结果示例,{“all”:False,“ciIDs”:[]},all是True时,是所有权限。all为False时,ciIDs是有权限的CIID。
图27 使用current_uc_user
图28 使用current_uc_username、current_uc_user_id
图29 使用current_uc_user_operator_group
图30 使用current_uc_user_uuid
图31 使用dataset(dataset_id=2,columns=[‘name’, ‘age’, …])
图32 使用cmdb_permission_ci(ci_ids=[1,2,3, …])
报表的过滤器里选择过滤器类型为自定义过滤器,过滤列名称和SQL数据集里的名称相同,如图33所示。注意:过滤列里的名字不要取和数据集的列名重复。
图34 过滤器查询
报表的过滤器里选择过滤器类型为自定义过滤器,然后在带like查询的SQL脚本中从过滤器的filter_values中获取过滤列。
图35 自定义参数模糊查询
图36 模糊查询
查询往往在界面上看到的是比如:是和否、类型等枚举类型,但是实际传到虚拟数据集里的查询条件判断往往是1/0或者id这样的数据。此时就需要配置过滤器标签来完成这样的过滤器条件查询。注意:过滤器范围应用于所有面板。
原始表tbl_business_other里的类型type字段外键关联tbl_business_type里的类型id字段。
图37 表数据
查询业务和业务所属类型,虚拟SQL数据集为:
图38 虚拟SQL数据集
图39 过滤器配置
图40 关联查询
图41 关键字url_param。
图42 URL传值
配置两个有关联查询的过滤器,比如第一个过滤器选择了类型,第二个查询条件需要根据第一个的值进行过滤。
图43 原始表tbl_business_disk_usage
图44 配置两个关联过滤器
图45 关联查询
配置两个类型的过滤器,一个类型为时间列,一个类型为时间范围。当有多个时间查询过滤器时,只有最后一个过滤器生效。如有物理表数据集,时间列为startTimes和endTimes,过滤器默认值为时间列startTimes,若想设置endTimes列为时间列查询,则需要手动配置。
图46 时间列类型
图47 时间范围类型
图48 多时间列查询
例如,在一个数据集中,我们使用0和1表示"否"和"是"等类似的业务逻辑作为查询条件。在查询时,我们希望将0和1转换为对应的"否"和"是"。但实际上,在后台查询时仍然使用0和1进行查询。这类似于过滤器类型标签的查询。如果没有现成的数据集可用,有两种方法可实现这一需求:
· 手动创建枚举虚拟数据集:可以手动创建一个包含"否"和"是"的枚举虚拟数据集,并将其与查询条件下拉选择框相关联。在查询时,根据用户选择的值进行匹配。
· 在编写SQL查询时使用CASE WHEN THEN语句:在编写SQL查询时,使用CASE WHEN THEN的方式,将0和1转换为对应的"否"和"是"。
图49 原始表tbl_business
新建SQL枚举查询,保存成数据集,设置过滤器时选择该枚举数据集。
图50 新建SQL枚举查询
图51 设置过滤器选择枚举数据集
图52 查询
图53 CASE WHEN THEN语句
图54 设置过滤器
图55 查询
图56 原始数据
通过编辑SQL虚拟数据集来实现同比环比的计算。以下SQL仅是参考,通过+1做简单比较。
图57 同比数据集
图58 环比数据集
图59 同比图表
图60 环比图表
图61 年月日同比环比报表
报表默认开启了交叉(联动)过滤器,同时也支持汇总数据的右键查看明细数据即下钻或者直接点击可以联动查询明细数据,同时支持返回联动或者下钻之前的返回操作,即上卷。
注意:暂时不支持在同一个widget内实现下钻效果。
图62 左边统计数据,右边明细数据
点击左侧环形图的某个扇形区域时,系统会根据所选的维度对右侧的明细数据进行过滤,从而实现联动(下钻)效果。而当您点击图标时,数据会恢复到未联动之前的状态,实现类似上卷的效果。
图63 下钻
图64 上卷
右键点击环形图,可打开下钻的明细数据,并以弹窗的方式展示。
图65 细化数据
图66 展示数据
可以使用多维(透视)表进行汇总和明细的设置。
图67 原数据表
图68 多维(透视)表
图69 汇总
图70 明细
图71 折叠效果
图72 SQL数据集汇总和明细
图73 SQL汇总和明细
通过浏览器里的开发者工具(F12)查看图表的标题,将id组合其他URL就可以组成URL地址,即可将图表分享至其他组件中。
图74 F12查看id
图75 单独URL浏览器访问
图76 在UC大屏中分享展示-1
图77 在UC大屏中分享展示-2