作者: 永洪BI 来源: 永洪科技 时间:2020年03月11日
想要满足提升业务人员进行可视化分析的需求,不仅需要支持丰富的图表类型,更需要满足不同用户可视化关系型数据、层级结构数据分析展示需求。对于数据分析结果追根溯源,明细数据的提取展示同等重要。
永洪BI提供了丰富的表组件可以进行详细数据的展示分析,例如:表、交叉表、自由表。本文主要介绍永洪自由表的常用功能,帮助使用人员进行复杂报表的制作分析。
自由式表格组件不同于表或者交叉表的组件,表或者交叉表展现出来的数据模式很固定,不能满足不同用户的需求,但是自由式表格的方式灵活多样,可以满足用户对表格特定格式的需求。
01
制作
1、创建自由式表格
拖拽仪表盘的右侧面板-组件中的自由式表格组件FreeStyleTablecreate1到仪表盘编辑区。
2、绑定数据源
新建自由式表格后会自动进入绑定模式,或者选中自由式表格组件将鼠标移动至组件的工具栏处,点击绑定数据按钮bindingdata,打开自由式表格组件的绑定界面。自由式表格组件的绑定界面为置灰状态的。
自由式表格的绑定方式:
1)拖拽数据段到自由式表区域实现绑定,如图所示:
2)直接拖拽一个数据段到要替换的字段上,则可替换原有数据段。
3、移除数据段
直接选中要移除数据段的单元格,键盘输入Delete键即可移除选中的数据段。
4、设置自由式表格的单元格
拖拽了自由式表格后点击绿色绑定数据图标或者点击组件的工具栏上的绑定数据按钮 ,此时就是将自由式表格与查询中相应的数据进行关联起来,具体绑定哪一个字段还需要进入元数据模式下并且通过相应的设置进行绑定,下图是绑定了查询后的自由式表格,默认的是4行4列,可通过右键选中单元格。
5、设置自由式表格的表头、行数、列数
在右侧面板-设置-行列数中设置自由式表格的表头、行数、列数,如下图所示:
1)默认为2行4列,也可以自由设置自由式表格的总行数、总列数;
2)冻结窗格:通过表头行列设置作为表头的行和列的数量,当出现滚动条的时候,被设置为表头的行或者列不会随着滚动条的滚动而滚动。
02
支持多源
1、使用场景
多源数据表可将多个数据集的数据展示到同一个表格中,方便不同数据源数据汇总,简化SQL语句,满足行业复杂报表需求。(为了方便分别出不同数据来源的数据,我们在此约定「在下文的描述中使用单元格背景色来区分不同数据集数据」)
2、单元格过滤
单元格过滤是自由表组件特有的功能,选中自由表单元格后在右侧面板的计算模块底部可以看到此功能入口【单元格过滤】 ,主要功能有以下两点:
单元格过滤是将自由表中不同数据集关联在一起的重要桥梁。
例如:某客户要制作的表格的数据需要来源于多个数据源(如:query1、query2、query3...),在没有将这些数据源组合为1个总的数据源时,各个数据集的数据是独立无关联的(见下图表格:未设置单元格过滤),此时可以使用单元格过滤中【多源过滤】功能实现客户需求,效果如图所示:
单元格过滤对话框中功能详解(在此我们对勾选【多源过滤】的场景进行说明,未勾选【多源过滤】是普通过滤器):
【1】显示当前单元格使用的数据集。
【2】【多源过滤】默认不勾选。当自由表中绑定多个数据源,并且不同数据集数据之间存在扩展关系时【多源过滤】可用,其余场景置灰不可用。不可用场景如图所示:
【3】显示当前单元格所在数据源的数据列。
【4】勾选【多源过滤】时置灰不可被修改,默认值为“=”
【5】显示当前单元格有扩展关系的非同源数据集名称。
【6】显示【5】选中的数据集绑定到自由表中有扩展的字段名称。
【7】显示两个数据集之间的关联关系:query1:column = query2:column。
单元格过滤是针对当前单元格生效,不影响其他单元格数据的过滤器,可以满足企业对数据进行局部过滤的需求。
例如:某客户希望显示各个market中 profit>100 的数据,但又希望sales的数据保持不变。这个时候就可以在profit单元格中设置【单元格过滤】实现客户需求,如图所示:
注意:
(1)单元格过滤仅对当前单元格生效,不影响其他单元格数据;
(2)单元格过滤的【多源过滤】和数据的【局部过滤】是共存的,共同起作用;
(3)单元格过滤和自由表的过滤器也是共存的。
03
设置单元格
在绑定模式下,选中自由式表格,表格就进入元数据模式。在元数据模式下选中单元格,在右侧面板点击计算,如图所示:
1、类型
单元格类型支持分为5种,常量、 SQL 表达式(数据集)、脚本表达式(数据集)、脚本表达式(格间计算)、列。
1)常量:所见即算的,可以自由输入单元格内容;
2)SQL表达式(数据集):支持SQL语法进行列的运算等,引用列的方式为col[“state”];
3)脚本表达式(数据集):访问 column,比如 col[“state”] ;支持对数据集列进行聚合运算和任意脚本,例如聚合的数据使用sum(col[“sales”]);
4)脚本表达式(格间计算):可以通过cell 的名字引用别的cell(dimension) 的值 cell(“cella”),或者是通过行列坐标引用别的值 cell(1,3),是从 0 开始计数 ,cell 还开放 rsize 和 csize, 他们分别表示表格的总行数和总列数, ridx 和 cidx 表明当前的行数和列数。当引用格子的时候,如果用名称进行引用的话需要的是 dimension 的字段;也支持引用脚本,比如,if...else...
2、排序
对字段进行排序,分为无序、升序、降序、定制排序、手动改排序和高级排序。
3、扩展类型
是指字段以什么方式进行扩展,可以为空、横向或者纵向进行扩展。选择了横向的扩展类型后,点击仪表盘的空白区域退出表格的元数据模式或者预览,维度值则会横向展开;展示效果类似列表头;顾名思义,纵向扩展即向下展开,类似行表头。如下图,完成交叉表效果。
4、横向、纵向负单元格
按照父节点的展开方式进行展开。
04
单元格脚本示例
1、示例一
从会员等级、门店不同维度统计咖啡销售的订单数、占比及平均库存。
1、将订单ID列绑定到单元格,聚合方式改为计数,则得到订单数,纵向父单元格选择门店得到各门店的订单数;父单元格不选清空则为总订单数,如下图:
2、单元格上右键在会员等级下方插入一列,选中单元格,计算-类型为常量,输入小计,或者直接双击单元格输入文本,绑定需要小计的字段,并设置纵向扩展,且父单元格为会员等级,如下图:
此时实现了一个包含总计、小计的表格,效果如下:
3、此时,可以通过格间计算进行占比、平均库存等的计算,自由表允许格子之间进行加减乘除等运算,自由式表格行列从0开始计数,例如上图中总计库存的绝对位置为(1,3),所以格间计算时可以通过cell(1,3)引用总库存的数值,选中(1,4)单元格,设置计算类型格间计算,输入公式cell(1,3)/cell(1,2),得到平均库存的总计值。
对于各门店的平均库存,因为行数是自由扩展的,所以绝对位置不在适用,此时格间计算可以使用相对位置引用其他单元格的值,选中单元格的位置坐标为(ridx,cidx),所以平均库存=总库存/订单数即为,cell(ridx,cidx-1)/cell(ridx,cidx-2),如下图:
注意:对于上述几种情况,均可以增加判断脚本,对空值及分母为0的情况进行预处理,
2、示例二
对于某些场景下总计/合计的计算逻辑不是简单的相加,此时就不能使用示例一中的父单元格不同来实现了。此时,可以通过另外一种方法来实现。例如,订单ID不仅仅对应一种会员等级,各种会员等级的订单ID不同值计数之后相加的结果会大于全部数据的订单ID不同值计数,如果我们希望总计是前者的话,可以使用下面的方法实现:
实现思路为先将各种会员等级的订单数显示出来,然后使用循环脚本相加,如下图:
注意:如果将总计置于第一行,可适当修改脚本如下:
4、示例三
自由式表单元格支持引用仪表盘的参数值,设置单元格时格间计算可以直接使用,格式为param[‘参数名’]。
1、常用场景为根据参数值动态显示自由表某列的值,如下图:
2、根据参数值筛选符合条件的数据,例如新增一列数据如果库存大于参数1则值为1,否则为0。
自由式表格支持针对单个单元格的操作及格式设置,使用起来更为便捷。既可以对整体数据按照特定条件过滤,也可以以单元格为单位进行局部过滤,同时支持多源,对不同数据集的数据进行关联。
合理运用自由式表格,可以最大限度的满足用户对于复杂报表的需求,无论是数据显示还是样式上都更为灵活。
疫情期间
免费使用Yonghong Desktop
永洪BI
更敏捷、更快速、更强大