-
Notifications
You must be signed in to change notification settings - Fork 12
DataTalk S1W1
RebieKong edited this page Mar 9, 2018
·
1 revision
- 提问环节
- [issues #5]:实时数据中存在与历史数据相关的需求,如何科学高效的完成这个功能
- [issues #10]:数据更新频率比较高的需求,有什么比较好的解决方案
- 回答环节
- [issues #1]:在设计数据表的时候,是一个宽表好,还是多个维度表好?
- @lxg2014:数据仓库每张表的搭建,主要依赖于这个表在整个数据仓库中的作用和相关意义。首先要清楚这个表的存在是为了解决那些问题,什么角色使用,怎么保证使用者尽可能好的体验解决问题。从以上所提到的角度去看待问题,拆解以下几点因素:
- 拆表情况下多张数据表的查询SQL的编写难度有多大,是否会出现为了数据提取需要关联多张表,并且需要提前知道各个表之间的关联关系。如果使用这个数据的人员较多,每个人都需要先了解所需要多张表的关联关系,然后才进行数据查询,这样是不是维度沟通成本较高,查询体验下降,影响使用者的工作效率?
- 多表关联查询的使用频次有多高,将重复高频的事情简化,是不是更好?
- 查询体验上需要考虑多表关联之后的查询性能问题,如果一张表的内容过度,是否影响查询速度?
- 多表关联的合理性,不同的数据维度和内容与订单表关联,是不是会存在违背常理的坑存在。比如,数据字段的对应关系是一对一,还是多对多,是否会让使用者忽略查询数据时候的过滤限制条件。
- 数据的安全问题,每张数据表的安全范围不同,合并成同一张表是面临的是更大的权限开放。比如订单表可能仅需要让一部分人员知晓订单信息,并不想让他们知道供应商信息。
- @AlanHand:结合我司的一些经验来说说哈,我司会将数据用于各种各样不同主题和纬度的报表,也会将数据用于数据挖掘做模型的 , 因此数据分成肯定是必要的,针对报表类的数据根据报表的不同反向划分出不同的纬度表,这种方式其实就是将mysql业务库的数据经过sql语句之后重新生成一张或者多张维度表,在这之中根据经验会抽取出一个经常用的字段作为公共字段放入公共层数据中,一些经常需要用到的度量值也会抽取到度量表中,那么一些非开发人员来看数据的时候只要在页面上简单写几个sql语句就可以统计出数据来,比如月销量,周销量,日销量这些。若是机器学习模型的同学要数据的话,我们就只需要从维度表,度量表,事实表中抽取数据做成大宽表给他们了,由于模型做的比较少,对于大宽表的经验比较少,暂时只能来一个模型数据的需求,单独写sql语句去抽取。
- @lxg2014:数据仓库每张表的搭建,主要依赖于这个表在整个数据仓库中的作用和相关意义。首先要清楚这个表的存在是为了解决那些问题,什么角色使用,怎么保证使用者尽可能好的体验解决问题。从以上所提到的角度去看待问题,拆解以下几点因素:
- [issues #7]:ods有的公司说几乎不处理,有的说这一层要做第一次数据清洗,大家怎么看?
- @unknow:我感觉基本的监控要做,然后字段类型,命名统一可以做,ip转地址也可以做。复杂的 不太容易做,数据源的接入不一定都可控。
- @unknow:看数据的规整性吧。有的公司业务方数据很规整。ODS层只用做简单的砍字段即可,有的业务数据不规整比如埋点类的那么不做清洗就肯定不行了。有公司是从业务库直接到ODS,那么需要做备份, 有的是从业务库到汇总库再到ODS。那么汇总库就可以看作是备份了。
- @rorovic:个人觉得ODS层的数据还是需要清洗并存入到数据仓库比较合适。如果不清洗,是ETL任务的计算资源和计算时间的浪费。除非是有特殊需要,规定要原汁原味的“原始数据”。
- [issues #11]:为什么把特征组合之后还能提升,反正这些基本都是增强了特征的表达能力,或者说更容易线性可分
- 这是一个空间变换的问题~ 首先需要抓住一个关键,理解什么是线性可分。线性可分的定义是一个线性函数可以将两类样本完全分开。比如说在二维平面内,就是指一条直线能区分开来两类样本;对应到分类器中,就是指我们有x1、x2两个特征,那么这条分界直线的解析表达式是ax1+bx2+c=0,ax1+bx2+c>0是一类样本,ax1+bx2+c<0是了另一类的样本。更进一步的说,就是分界线(面)可以由一个“多元一次方程式”来表达。 下面问题来了,假设两类样本的真实分界线是一个圆(x1^2+x2^2+a=0),或者一条双曲线(xy+a=0),在原来的二维空间中,我们能否找到一条直线分开两类样本?答案明显是不能的。但如果我们非要用直线区分样本呢?那就做空间变换吧。对于上面分界线是圆的情况,将原来的(x1,x2)映射到(x1^2,x2^2);对于双曲线的情况,将原来的(x1,x2)映射到(x1x2),是不是在新的空间中,又可以用一条直线把两类分来啦~~(注:空间变换严谨点应该用基向量来表示,这里讲个意思,不要介意) 所以提到特征组合,实际上做的就是空间变换,更准确说是把原有的特征空间映射到了一个更加高维的特征空间中。在一个真实问题中,我们并不知道分界线到底是圆还是双曲线还是别的什么,所以对于上面的例子,我们一般会尝试把原来的(x1,x2)映射到(x1,x2,x1^2,x2^2,x1x2),正所谓扩大搜索范围。特征组合增强了特征的表达能力,基本等价于说高维空间比低维空间更有表达力。
- [issues #1]:在设计数据表的时候,是一个宽表好,还是多个维度表好?
- 标签体系相关的讨论
- 标签体系的设计与构建
- 标签体系的实现与落地
- 讨论地址