让决策更智能
新一代智能数据分析平台

制作动态文本报表案例分享

观小远发表于:2021年03月20日 17:19:49

需求背景:除了用各种可视化图表来分析数据,用户有时候需要制作文字版总结报告,比如月度总结,传统方式需要用户手动撰写,里面引用的分析数据需要人工提炼并手动输入,下月分析报告又要进行类似重复工作,耗费人力耗费时间长。观远BI支持制作动态文本报表,制作完成后可以复用,内容会跟随元数据变化进行自动更新。

 

实现方法:文本卡片里放入固定的文本模板,设置格式,引用指标卡来展示动态内容。文本卡片插入指标卡方法请参考 文本卡片

 

案例一:文本展示每日销量环比下降的商品分类

        由于指标卡只能显示一个字段,所以其他需要计算的内容必须通过新建计算字段来计算。并且由于不能指定维度字段,所以可能需要借用窗口函数来划分颗粒度进行分组计算。

1. 新建计算字段:昨天销量。Over(partition by [大区],[商品分类]) 表示按照大区组分,统计每个大区的每个商品分类的销量。如果要用筛选器筛选日期时间,需要使用全局参数替代现用的时间函数来实现。

0016055b93c12512842c3a656be3c5d

2. 新建计算字段:同期销量。如果需要计算周同比,月同比等,需要用函数来指定要对比的日期。

0016055b93c385f76ec6213801929c7

3. 新建计算字段:环比增长判断。把这个字段拖到筛选栏,设置为范围小于 0,筛选出销量下降的数据。

0016055b93c2fbfa8fff2a9f811b8ed

4. 新建计算字段:类目。字段类型为文本,拖到数值栏,聚合方式选无处理。

0016055b93c2ef8a56093cbef623369

5. 把要筛选的字段拖到筛选栏设置筛选条件,或者在页面上新建筛选器,联动该文本卡片。最后文本卡片展示效果如下。

0016055b93c3a9dbe239769a691965d

案例二:案例一中销量下降的产品类目不仅要罗列出来产品类目,还要罗列出来各个产品类目对应的同环比增长率。

方法:

1. 和上述步骤1和2相同,分别计算出当期和同期销量。

2. 步骤 3 新建字段改为计算同环比增长率。

0016055b93c363e7d7bf3eb811fe37e

3. 新建计算字段:类目增长率拼接。数值字段需要用函数指定格式和精度,然后和商品分类字段按照需要的格式进行拼接。

0016055b93c31cfc177189b6826a656

4. 新建计算字段:增长率判断,文本类型,拖到筛选栏,筛选“下降“。通过设置这个字段也可以用来实现其他筛选效果,例如筛选出增长率超过 10%的商品分类。

 0016055b93c83300375c9829008c6eb

5. 新建计算字段:类目。字段类型为文本,拖到数值栏,聚合方式选无处理。

注意: 如果参考案例一继续使函数 concat_ws(',', collect_set([类目增长率拼接])) 然后拖到数值栏,会发现系统会弹出报错“查询包含非法字段”。这是因为案例一中是按照环比计算结果筛选后拼接了原始维度字段,是个聚合度量,但是这个用法里要拼接聚合计算结果,性质发生变化,需要使用窗口函数。over(partition by [增长率判断])) 按照上一步新建字段 [增长率判断] 进行分组。

0016055b93c70a0ef2108e6dc16aded

6. 把要筛选的大区字段拖到筛选栏设置筛选条件,或者在页面上新建筛选器,联动该文本卡片。最后文本卡片展示效果如下。

 0016055b93c607b9e536a1030bc9825

Note:

1. 公式尽量不要写的太复杂,不要把所有计算逻辑放在一个计算字段里,计算效率低且容易出错、不易排查。建议拆分为多个简单字段。

2. 因为指标卡每一步计算结果不能直接验证准确度,稍有不慎可能造成最后计算结果不准确,建议同步建一个普通表格用不同的方式验证计算结果,直到确保结果准确。

3. 联动筛选器,筛选项在数据集中没有数据导致计算结果显示为 null 时,可以在指标卡里引用全局参数,给要显示的数值字段加一层判断逻辑,无数据时显示为 0。例如,筛选器选项为产品SKU,依赖于单独的产品SKU数据集,联动的指标卡依赖于其他数据集,指标卡计算库存数量。需要用新建的计算字段 case when [产品SKU] =[DYNAMIC_PARAMS. 产品SKU] then [库存数量] else 0 end 放到数值栏,聚合方式选求和,然后页面筛选器联动指标卡里的全局参数[DYNAMIC_PARAMS. 产品SKU] 即可

4. 以上使用的函数为 Spark SQL 函数,直连数据集和高性能数据集请使用对应数据库函数。

    您需要登录后才可以回复