数据集的概念

根据数据源联合构建一个全新的数据模型,简单说就是联合各个信息库,管理用户需要分析报表的数据
备注:数据集不做任何有关的原数据更改的操作,也不做具体分析的操作,只负责搭建数据模型

数据集用户操作流程

  1. 打开数据集界面,显示该用户的数据集信息
  2. 新建数据模型,显示用户所能看到所有的数据源的表数据
  3. 用户联接表之间的关系(主要是联接方式)、表达出想显示表的字段、[过滤掉用户想要数据信息+提供sql写法过滤,利用函数过滤]、模型基本信息设置,提交保存数据集模型,改用户为owner
  4. 权限(读写)分享,分享给其他需要以这个模型作为构建报表分析的同学,被分享的同学提供删除分享,可以改数据集模型,但不能直接删除整个数据集,权限在owner那里
  5. 设计图….

备注:后续可以有复制数据集、增加维度(计算字段,增加列),为数据模型扩充预留

技术实现

采用拼写sql方式构建数据集模型信息,用模型代表数据集联系关系,记录模型配置,用模型实现不同种类的功能区域,为了快速显示结果模型信息,有以下规定:

  1. 在显示各个数据源时,每个表显示10条数据
  2. 关联拼接信息对每个关联信息,主表控制的数据处理都截取limit 2000(在hive中查询响应速度ok的),表的别名表名去掉“.”,如:select shinemocubet_org_base_info.name 名称,shinemo_imt_org_uid.uid 用户主键,shinemo_cubet_org_admin_info.cg_name `cg名称`,shinemo_imt_salary.id from (select * from shinemo_cube.t_org_base_info where city=’杭州’ limit 2000) shinemo_cubet_org_base_info left join shinemo_im.t_org_uid shinemo_imt_org_uid on shinemo_cubet_org_base_info.org_id = shinemo_imt_org_uid.org_id left join shinemo_cube.t_org_admin_info shinemo_cubet_org_admin_info on shinemo_cubet_org_base_info.org_id = shinemo_cubet_org_admin_info.org_id left join shinemo_im.t_salary shinemo_imt_salary on shinemo_cubet_org_base_info.org_id = shinemo_imt_salary.org_id
  3. 过滤数据采用和后面报表实现一样的通用实现方式,对操作符(=,like,!=,<,>,between and…)和字段类型单独判断处理条件

请求数据模型样本:
image.png
构建数据集流程:
bi数据集build.png

表结构设计

t_data_set_info(数据集信息)

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create varchar 记录创建时间
gmt_modified varchar 记录修改时间
name varchar 数据集名称
owner varchar 拥用者用户id
owner_name varchar 拥用者用户名称
description varchar 描述这个数据集数据来源

t_data_set_share(数据集分享)

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create varchar 记录创建时间
gmt_modified varchar 记录修改时间
set_id bigint 数据集id
user_id varchar 用户id
user_name varchar 用户名称
reason varchar 原因说明
status int 标示:0—失效,1—修改权利,2—可读

t_data_set_contact(数据集关联模型记录表)

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create varchar 记录创建时间
gmt_modified varchar 记录修改时间
contact_id bigint 业务id
set_id bigint 数据集id
parent_id bigint 子id层级
table_name varchar 表名称(库+表)
contact_type varchar 关联类型(left join、right join)
parent_field varchar 上级关联字段
parent_field_type varchar 上级关联字段类型
field varchar 关联字段
field_type varchar 关联字段类型
data_distinct int 是否要去重
level_number int 层级数

t_useful_field(数据集-报表字段使用表)

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create varchar 记录创建时间
gmt_modified varchar 记录修改时间
resource_id bigint 资源来源id
type varchar 来源类型
table_name varchar 表名称(库+表)
field varchar 使用有效字段
field_type varchar 字段类型
alias varchar 别名

t_data_filter(过滤器)

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create varchar 记录创建时间
gmt_modified varchar 记录修改时间
set_id bigint 数据集id
resoure_id bigint 要过滤的资源id
type varchar 类型(哪种资源)
table_name varchar 表名
field varchar 字段
field_type varchar 字段类型
operator varchar 值操作符
value varchar
contact_operator operator 多字段过滤联接操作符,最后一个必为空

t_compute_field(计算字段信息)

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create varchar 记录创建时间
gmt_modified varchar 记录修改时间
set_id varchar 数据集id
column_info varchar 计算字段计算信息
alias varchar 别名

接口文档

url:/das/dataSet/create
mothed:post
param:

参数名 类型 是否必填 说明
id number 有就是add,没有就是update 主键
name String 必填 数据集名称

风险预估点

  1. 带这个子过滤条件时,主表数据控制在2000,可能会<2000,数据字段细分时会有偏差
  2. 修改数据集关联关系时,现在无法对某个关联表作出具体的修改,要后面改造,目前的做法是,先删除再重建

表与数据集的权限