主页 > 超兔理念 > 数据报表引擎的原子抽象

数据报表引擎的原子抽象

一、数据分析引擎的演化过程

数据报表引擎,最早起源于:大型商业数据库的开发工具。大概在90年代中期,类似PowerBuilder 这类的数据开发软件 ,就提供内嵌数据报表引擎。随着报表生成器在商业应用过程中的不断演进,过去几年,随着数据大屏热潮出现的帆软FineBI 、百度SugarBI……这类BI工具内嵌数据分析表引擎,可连接多种数据库,可生成各种大屏的图表组件。

先有报表引擎,后有图表引擎。画图的本质是信息传达。图形化思维模型表现数据的「关系」「结构」「步骤」「概念」「方针」等关系,在数据的表达上会更直观,有利于辅助思考。图形引擎在数据大屏项目中广泛落地。

【优势】:综合来看,数据大屏基于图表引擎,图表引擎来的数据结果基于报表引擎,报表引擎的原始数据来自数据库(大屏>图表>报表>原始数据)。只要结果数据的业务含义足够精准明确,可快速实现表现丰富、内部组件联动的高级动态大屏。

【劣势】:数据分析引擎大多面向统计结果,而面向明细的实现非常复杂,普通用户较难操作,最关键的是:与数据库(DataBase)之间存在巨大的业务含义的鸿沟。在业务数据处理中,业务表关系/字段关系/表关联关系各种约束和制约关系,从这些数据的梳理出具有统计价值的报表,即便是非常熟悉数据结构的技术人员,也要投入大量的时间精力,更何况企业用户,在实际操作过程中会面临非常复杂的:业务逻辑到数据逻辑的翻译工作。

二、基于业务的数据报表引擎

由此可知:“报表引擎直连DataBase,直连业务,即:业务系统内嵌的数据引擎,紧贴业务的数据分析;企业用户在[完整业务逻辑的表关系]基础上配置数据报表”的方案会更有利于一线企业用户的应用。

优势:业务直连DataBase,无需业务诉求翻译到数据结构。

超兔报表引擎对数据的处理逻辑:

1.取数据:1)数据筛选、获取;2)清洗,数据加工。

2.形成二维表形式的中间数据,我们把这个数据形式叫作:“Base”。

数据报表引擎的原子抽象

Base数据的关键在【满格二维表】,数据特征:

①“最简”:最简单的二维表结构(x,y);

②“满格”:每个单元格都赋值,字符型无值填空,数字型无值填0,满格处理是为了在后面生成汇总时更容易满足各种计算方式;

③“纯数据”所有数据均无业务含义,行与行、列与列相互独立,无从属关系、无排序,利于整行与整列数据的变换。

【问题1】:这里有一个反常识的问题,为何要没有业务含义的纯数据?我们不是希望把报表引擎赋予业务含义才做这个开发设计吗?

对,数据没有业务含义,报表就毫无价值。数据的业务特征在第一步取数据的过程中完成。在去取数据模块中,同样是引擎化设计,根据超兔丰富的业务数据表,提取出几十种内联逻辑的业务表,这些业务表的内联关系无需用户关心,只需指定:主表、关联表,两个参数,即可通过内部逻辑自动形成获取复杂关联数据的SQL。

【问题2】:为何是简单二维表作为Base?

维度和度量(指标)是数据分析领域常用的概念,也是满格二维表计算的内在基本逻辑:

维度,是数据的观察角度,即从哪个角度去分析问题,看待问题,翻译为数据要求即为:用哪个角度去做汇总和计算。

度量,指的是需要汇总和计算的:值。

举个简单的例子,“上海男性互联网从业人数”,这里面有三个维度:城市、性别、行业;度量指的是:从业人数。

维度与度量最基本的方式是按照原值分布。在原值的基础上增加计算方法,就可以生成更多差异化的、更符合常规业务逻辑的组合。这里的计算是广义的概念,指处理方法。例如,度量时常见计算方式:求和、求平均、求中位数;维度时常见计算方式:直等、分组、数据桶。另外,还有特殊的数据处理,比如日期,可以按日、按月、按季度、按年,进行数据分组。

3.生成报表。

超兔的报表引擎,生成报表的数据处理过程有4步:

① 填数据。获取Base数据。

② 排序。从外向内维度排序,并填入数据。

③ 插入分层小计行:上下相等隔开。

④ 纵向合并相等。

这四个步骤看起来不复杂,也意味着开发过程的复杂度可控。这就是优秀的业务抽象带来的优秀设计结果。我们把这四个环节,叫做数据报表引擎的原子抽象。