取数模块和报告模块的区别

1.场景介绍:

假设现在有交易,地区,客户三张表

1)交易表结构

客户id 地区id 销售额

2)地区表结构

地区id 地区名

3)客户表结构

客户id 客户名称

在有数上建模如下:(关联方式是内连接)

取数模块和报告模块的区别 - 图1

2.报告和取数模块使用:

(1)报告模块使用方式:

数据连接->数据模型(固化)->报告

(2)取数模块使用方式:

数据连接->数据模型(动态)->取数

从使用步骤可以知道,差异点在是否是动态


假设现在有两个需求:

需求1:按客户维度去分析销售额。

需求2:按地区维度去分析销售额。

需求1:

(1)报告侧使用:

在表格中拖入客户名称和销售额。形成的sql如下:

1 select 客户名称,sum(销售额) from(select *from 订单表t1,地区表t2,客户表 t3 wheret1.客户id=t3.客户idandt1.地区id=t2.地区id)groupby客户名称

(2)取数侧使用:

在表格中拖入客户名称和销售额。形成的sql如下:

select客户名称,sum(销售额)from订单表t1,客户表t2wheret1.客户id=t2.客户idgroupby客户名称

需求2:

(1)报告侧使用:

在表格中拖入地区名和销售额。形成的sql如下:

select地区名,sum(销售额)from(select \ * from 订单表t1,地区表t2,客户表t3 where t1.客户id=t3.客户id and t1.地区id=t2.地区id)group by 地区名

(2)取数侧使用:

在表格中拖入地区名称和销售额。形成的sql如下:

select 地区名,sum(销售额)from 订单表t1,地区表t2 wheret1.地区=t2.地区id groupby 地区名

结论:

(1)报告侧,一旦模型确定,报告侧都是基于模型固化的sql做的分析。模型的sql:

select \ *from 订单表t1,地区表t2,客户表 t3 where t1.客户id=t3.客户id and t1.地区id=t2.地区id

(2)取数侧,表格中使用了哪些字段,就把这些使用字段的表进行关联。

优缺点:

  1. 取数是动态建模,可以适用于星型模式( 一张事实表,多个维度表关联)
    当数据量大的时候,少关联表可以大幅度提升性能。
  2. 取数是动态建模,是一种探索式分析。
  3. 报告是固化建模,有一定的使用场景。两者不可替代。