制作动态文本报表案例分享
需求背景:除了用各种可视化图表来分析数据,用户有时候需要制作文字版总结报告,比如月度总结,传统方式需要用户手动撰写,里面引用的分析数据需要人工提炼并手动输入,下月分析报告又要进行类似重复工作,耗费人力耗费时间长。观远BI支持制作动态文本报表,制作完成后可以复用,内容会跟随元数据变化进行自动更新。
实现方法:文本卡片里放入固定的文本模板,设置格式,引用指标卡来展示动态内容。
案例一:文本展示每日销量环比下降的商品分类
由于指标卡只能显示一个字段,所以其他需要计算的内容必须通过新建计算字段来计算。并且由于不能指定维度字段,所以可能需要借用窗口函数来划分颗粒度进行分组计算。
1. 新建计算字段:昨天销量。Over(partition by [大区],[商品分类]) 表示按照大区组分,统计每个大区的每个商品分类的销量。如果要用筛选器筛选日期时间,需要使用全局参数替代现用的时间函数来实现。
2. 新建计算字段:同期销量。如果需要计算周同比,月同比等,需要用函数来指定要对比的日期。
3. 新建计算字段:环比增长判断。把这个字段拖到筛选栏,设置为范围小于 0,筛选出销量下降的数据。
4. 新建计算字段:类目。字段类型为文本,拖到数值栏,聚合方式选无处理。
5. 把要筛选的字段拖到筛选栏设置筛选条件,或者在页面上新建筛选器,联动该文本卡片。最后文本卡片展示效果如下。
案例二:案例一中销量下降的产品类目不仅要罗列出来产品类目,还要罗列出来各个产品类目对应的同环比增长率。
方法:
1. 和上述步骤1和2相同,分别计算出当期和同期销量。
2. 步骤 3 新建字段改为计算同环比增长率。
3. 新建计算字段:类目增长率拼接。数值字段需要用函数指定格式和精度,然后和商品分类字段按照需要的格式进行拼接。
4. 新建计算字段:增长率判断,文本类型,拖到筛选栏,筛选“下降“。通过设置这个字段也可以用来实现其他筛选效果,例如筛选出增长率超过 10%的商品分类。
5. 新建计算字段:类目。字段类型为文本,拖到数值栏,聚合方式选无处理。
注意: 如果参考案例一继续使函数 concat_ws(',', collect_set([类目增长率拼接])) 然后拖到数值栏,会发现系统会弹出报错“查询包含非法字段”。这是因为案例一中是按照环比计算结果筛选后拼接了原始维度字段,是个聚合度量,但是这个用法里要拼接聚合计算结果,性质发生变化,需要使用窗口函数。over(partition by [增长率判断])) 按照上一步新建字段 [增长率判断] 进行分组。
6. 把要筛选的大区字段拖到筛选栏设置筛选条件,或者在页面上新建筛选器,联动该文本卡片。最后文本卡片展示效果如下。
Note:
1. 公式尽量不要写的太复杂,不要把所有计算逻辑放在一个计算字段里,计算效率低且容易出错、不易排查。建议拆分为多个简单字段。
2. 因为指标卡每一步计算结果不能直接验证准确度,稍有不慎可能造成最后计算结果不准确,建议同步建一个普通表格用不同的方式验证计算结果,直到确保结果准确。
3. 联动筛选器,筛选项在数据集中没有数据导致计算结果显示为 null 时,可以在指标卡里引用全局参数,给要显示的数值字段加一层判断逻辑,无数据时显示为 0。例如,筛选器选项为产品SKU,依赖于单独的产品SKU数据集,联动的指标卡依赖于其他数据集,指标卡计算库存数量。需要用新建的计算字段 case when [产品SKU] =[DYNAMIC_PARAMS. 产品SKU] then [库存数量] else 0 end 放到数值栏,聚合方式选求和,然后页面筛选器联动指标卡里的全局参数[DYNAMIC_PARAMS. 产品SKU] 即可。
4. 以上使用的函数为 Spark SQL 函数,直连数据集和高性能数据集请使用对应数据库函数。