复杂报表实现多层表头横向扩展
场景
复杂报表里需要使用多个维度字段横向扩展,例如,维度是区域,需要横向扩展出每个月每个城市线的零售流水和目标。最终效果如下图。
实现方法
数据准备
新建复杂报表,新建视图,把需要呈现的必要数据先计算出来。此案例里横线扩展部分数据来源于视图“月份”,这里筛选了日期范围“2019年”和城市线“一线”和“二线”。
模板编辑
点击“保存并继续”进入模板编辑界面,先制作好固定文本部分的表头。该例子里横向扩展从J列开始,所有横向扩展使用公式如下图。
第一二层表头都使用公式 G_EXPFIELD ( 视图名, 派生字段1|字段2..., 派生字段名, 合并单元格数 ) ,该公式用于对派生表(字段内容去重,并升序排列)内的某一派生字段所有值自动依次横向扩展,扩展时支持对单元格进行横向合并。具体用法和解释如下:
第一层表头:月份 =G_EXPFIELD(月份,月,月,4)**
解释:基于视图“月份”里的字段“月”来生成派生表,然后选取“月”这个派生字段;视图里筛选了一年,12月都有数据所以会依次横向扩展12次;4代表每个月要合并4个单元格。
派生表(月)实际内容(派生表本身不可见):
第二层表头:城市线 =G_EXPFIELD(月份,月|城市线,城市线,2)
解释:基于视图“月份”里的字段“月”和“城市线”生成派生表,此时派生表里共有12*2=24行数据(参考下图);然后选取“城市线”这个派生字段,只有“一线”和“二线”两个值;视图里筛选了一年,2个城市线会依次横向扩展12次;2代表每个城市线要合并2个单元格。
派生表(月|城市线)实际内容(派生表本身不可见):
第三层表头:零售流水|目标 =G_EXPMETRIC(月份,月|城市线,零售流水|目标)
这层表头是固定字段,使用公式 **=G_EXPMETRIC(月份,月|城市线,零售流水|目标),该公式用于对一个或者多个文本自动依次横向扩展,扩展的次数由视图生成的派生表字段数值的个数决定。
解释:基于视图“月份”里的字段“月”和“城市线”来生成派生表(数值个数为24),然后,对每个月|城市线生成固定文本字段“零售流水”和“目标”,总共扩展出48列。
预览保存
点击“保存并继续”来进入下一步预览效果,然后再点击“模板编辑”回到模板上调整公式或者样式,直至达到需要的效果。最后点击“完成”按钮保存。
注意:
A. 数值和总计行使用的公式里都需要使用同一个派生表(月|城市线)才能保证横向扩展的列数和表头一致;G_LOOKUPEXP公式里需要同时引用上面第一二层表头字段作为查询字段。
B. 此列所有公式都不需要专门设置动态属性,无论是否勾选“复制单元格格式”都不影响最后展示效果。
C. 如果要做更多层表头,那么构建派生表可能需要使用更多字段。
D. 派生表里的字段默认升序排列,且不可调整排序方式。如果表头是普通文本且需要自定义排序,那就不能使用派生表,需要为使用到的维度字段创建新视图,在视图里排序,然后引用该视图里的字段,设置扩展方式。
E. 本文案例里扩展公式都在同一列,只能统一设置格式。如果公式里需要扩展的多个数值指标要求的格式不同(例如一个金额,一个百分比),则需要在原有公式列后新增列,把数值部分公式拆分为多个公式,然后设置动态属性“间隔写入”,可参考案例复杂报表交替插入数据案例分享。