宽表的定义与作用
从字面意义上讲就是字段比较多的数据库表。通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范,随之带来的主要坏处就是数据的大量冗余,与之相对应的好处就是查询性能的提高与便捷。宽表的设计广泛应用于数据挖掘模型训练前的数据准备,通过把相关字段放在同一张表中,可以大大提高数据挖掘模型训练过程中迭代计算时的效率问题。(一句话,空间换时间,便于训练迭代、减少表关联数量,修改少量数据时不需要该多张表)。
DataEase的关联数据集
DataEase(dataease.io/),是开源的数据可视化… 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与他人分享。
DataEase的关联数据集如下图所示,采用多数据集间关联关系的构建以及通过对数据集字段的选择展示组合完成,更易理解,使用方便。在DataEase中宽表的处理主要就是利用关联数据集创建和生成。
基础数据说明
为了展示方便,预先准备了表和测试数据(所有数据为通过函数伪造生成,如果类似,纯属巧合),ER图如下:
具体表的内容说明如下:
- 学生表student,包含10000条数据。
- 学院表faculty,包含5条数据。
- 专业表major,包含21条数据。
- 课程表,包含2个基础课程数据。
- 成绩表,包含每个学生的每个课程分数。
制作宽表
此宽表主要需要将上述五张表中的数据进行整合,需要在一张表表包含以下信息:学生、年龄、入学时间、电话、院系、专业、课程、成绩等信息。
第一步:接入数据源
将原生数据导入MYSQL数据库中(demo.sql),在DataEase数据源中接入MYSQL数据源,如下图:
第二步:在数据集中创建独立的目录【考试成绩】用于存放数据集。
第三步:创建数据库数据集,将五张表全部导入,可以采用直连或者抽取方式。本次采用直连方式。
第四步:创建关联数据集,将数据库数据集中的五张表以学生表开始,采用右连接的方式进行一一关联。
- 创建管理数据集
- 选择学生表
- 关联成绩表
- 设置学生表和成绩表关联关系
- 设置成绩表和课程表的关联关系
- 以此类推可以设置课程表和专业表的关联关系,专业表和学院表的关联关系,最终通过预览得到我们需要的宽表如下:
说明:
join(连接)是SQL的一种语法,可以通过不同的运算方式将多张表中的数据集中在同一张表里。在DataEase中支持以下几种连接:
- left join (左连接,左外连接):返回包括左表中的所有记录和右表中连接字段相等的记录。SQL语法:select a.name,b.job from A a left join B b on a.id=b.A_id
- right join (右连接,右外连接):返回包括右表中的所有记录和左表中连接字段相等的记录。SQL语法:select a.name,b.job from A a right join B b on a.id=b.A_id
- inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。SQL语法:select a.name,b.job from A a inner join B b on a.id=b.A_id*
仪表盘使用
当宽表完成后,可以在DataEase的仪表盘中进行使用和视图制作。
附件
本文用到的测试DEMO数据SQL:
链接:pan.baidu.com/s/1XaBbGSOo…
提取码:wlwn