最近帆软君开了一个新系列,立足FineBI在行业中的应用场景,帮助大家更加深刻体会到FineBI是如何在不同行业中体现其数据分析价值的。
第一篇分享一个来自帆软服务的某家互联网零售企业,看他们是如何利用FineBI对舆情数据进行数据监控。
业务背景
零售企业需面对市场众多热点信息,这就催生了一个相当敏感的分析内容——舆情分析。
了解舆情,对舆情现状做及时呈现,并将其与自身业务链路进行匹配分析,对一家零售企业的运营来说十分重要。在舆情分析中,企业需要根据自己的业务情况,关联一定周期内的舆情事件信息,进行联动的数据查看。
分析目标
为了分析舆情中的事件及自身运营动作对公司网站访问量的影响程度,该企业运营人员希望BI能够帮其实现:能在自行选择时间段后,动态选取到“某段时间内记录的全部事件”,将其在时间段内排序后,与其企业运营平台的访问量情况进行联动查看,其效果类似于下方所示的“百度指数”。
分析思路
在本次分析中,该企业本身有两张核心的数据表单,将内容脱敏后使用到的字段如下:
表一:XX平台日访问量汇总表
表二:“大事件”信息明细表
分析过程
第一步:构建关联
首先,我们不难发现先需要把表二中的“大事件名称”与表一中的“当日访问量数据”进行联动查看,因此需要把两个数据表的信息关联到一起。
此时利用FineBI的“主题模型”功能,就可以免去合并表这一步骤,只需在模型视图中就可建立起表与表之间的关联关系(如下图所示),支持直接拖拽来自不同表的跨表字段进行计算、分析。
第二步:设计参数
由于目标是“可以动态地选取到某段时间内记录的全部大事件”,因此我们需要设计对应的时间参数来实现。
第三步:通过FineBI Def函数计算动态排序
整个分析的核心可以看出重点在于**“动态根据时间参数展现当前的事件并排序**”,这里涉及到两个问题,即我们既要计算大事件发生的排序,也要使得排序和时间段相关。
所以我们需要用到Def函数的功能,这里我们可以书写如下Def:
DEF(COUNT_AGG(${大事件}),
[${日期}],
[${日期}>=${开始时间},${日期}<=${截止时间},${日期}<=EARLIER(${日期})]
(Def函数,即define的缩写,意为定义你想要的所有指标。在当前FineBI6.0版本中,你可以在分析主题的数据层以及在组件中创建计算字段时使用它。
函数语法:DEF(聚合指标, [维度1,维度2,…], [过滤条件1, 过滤条件2,…])
其中维度和过滤条件可以缺省。它由三个参数构成,首先是定义计算的方式,即语法中的“聚合指标”。第二个是执行聚合计算时的维度,第三个则是计算前对数据的过滤条件。)
含义即为“计算‘大事件’字段的排序,并且受到‘时间’维度的影响,同时保证‘时间’维度满足我们第二步设置的参数的过滤范围”,这样我们就可以动态计算出对应的排序了。
进而我们需要将其写入过滤条件,筛选出对应的点进行展示,因此我们获得了完整的计算函数为:
IF(${大事件}=null,
null,
TOSTRING(
DEF(COUNT_AGG(${大事件}),
[${日期}],
[${日期}>=${开始时间},${日期}<=${截止时间},${日期}<=EARLIER(${日期})]
)))
第四步:制作组合图
我们需要类似百度指数设计出类似的图表,我们可以使用FineBI的“自定义图表”,设计为“面积图+散点图”即可实现,即呈现整体的访问量趋势,同时呈现具体的事件标记:
第五步:配置仪表板
最后在仪表板中,我们设置对应的过滤组件,即可实现我们需要的效果:
最终效果呈现:
可以看到,在动态切换时间的情况下,同一个事件可以动态的根据需要进行排序并且和实际数据联动。
至此我们就顺利完成了舆情的动态分析呈现这个场景。
总结来看不难发现,Def函数可以很方便地通过一个函数实现复杂的跨纬度计算,进而满足更多更自由的数据分析诉求。曾经需要在数仓的DWS或者ADS进行多步ETL才能完成,或者需要反复多数据表进行拆分再合并才能实现的庞杂分析动作和冗余步骤都可以被省去,最终通过一个Def函数优雅的完成。
最后
本篇主要说明了企业如何利用FineBI工具对动态舆情事件进行排序呈现。
值得一提的是,国内BI工具发展到今天,已经进入深水区,企业落地时远不是找一款能够满足基础拖拉拽的可视化工具就可以,不少以前选择自研或选购国外BI的企业近期也都转而选择FineBI。因为FineBI的三大功能:数据编辑、主题模型、def函数,以及背后支撑的spider引擎,从功能到性能,都在支撑用户能够把分析思考过程中的每一步,通过数据表达出来,辅助用户深度思考复杂业务问题,最后真正实现让数据变为生产力。