3.切片分析提升分析准确性

切片分析就是利用数据加工处理的程序的逻辑(通常是Sql脚本中的where条件),将中间的物理的汇总表切分为几个逻辑表,分别从汇总表前切分及汇总后进行切分。汇总表前切分,建立明细数据表A与逻辑汇总表A(虚拟的)关系。汇总表后切分,建立逻辑汇总表A(虚拟的)与指标A之间的关系。

汇总表前切片分析:

假如以下SQL是“明细数据A”到“指标汇总表”加工ETL


insert into Cc01, c02, c03

select '100', T.t02, T.t03 from

select tt.a01 as t01, tt.a02 as t02, tt.a03 as t03 from A tt

T

以下SQL是“明细数据B”到“指标汇总表”加工ETL


insert into Cc01, c02, c03

select '200', T.t02, T.t03 from

select tt.b01 as t01, tt.b02 as t02, tt.b03 as t03 from B tt

T

通过Jsqlparese解析Where条件中的逻辑,建立AC100(物理表名称+kpid)关系,BC200(物理表名称+kpid)的数据流向关系。

汇总表后切片分析:

从指标汇总表进入单一的指标表的数据加工过程,也需要进行切片分析。通常进行加工的sql语句长这样的


insert into Kkpid, value1, value2

select C.kpid, C.c01, C.c02 from

select tt.b01 as t01, tt.b02 as t02, tt.b03 as t03 from C tt where kid=100 and name like'公司%'

C

解析Insertupdate语句中case whenwhere条件表达式,依照指标编号字段和指标值字段的配置信息,构建业务指标对象K100(物理表+kpi),解析出业务指标表与虚拟汇总表C100(物理表+kpi)的依赖关系。

这种解决方案,能够从一定程度上提升分析结果的准确性。但是实现起来比较复杂,同时还需要部分的人工梳理切片字段工作。实施起来难度较大,且不具备通用性。