从数据仓库到数据视图

来源:互联网 发布:秦可卿怎么死的知乎 编辑:程序博客网 时间:2024/06/07 13:06

作者: Alison Shu

作为亿贝数据平台的技术支持团队,我们定期会和业务部门交流,了解他们对数据平台的使用和期望。这一次,我们接触了业务拓展团队。他们需要根据亿贝集市的品类销售情况及中国卖家的渗透率,部署各省的人手。他们对数据平台和工具的了解和使用仅限于MS Excel。由于资源有限,他们期望一个快速的解决方案,一次部署不用维护。相应的他们的需求也非常清晰,并且一定期限内保持不变。

 

作为亿贝数据分析平台推广活动之一,我们数据支持团队根据以上的用户需求制作了演示产品。完整步骤呈现如下:

 

一、选择合适的数据仓库

亿贝有各种数据仓库支持不同的应用场景。结合业务需求,判断是否满足以下一个或几个应用场景,我们决定选择Teradata数据仓库。

 

数据仓库不同的的业务场景:

§  OLAP (Online Transaction Processing)应用

§  储存限制级数据,比如用户人个身份信息

§  数据容错性高

§  支持商业智能报告或分析应用

§  读写操作密集度不同,比如侧重写,或者侧重读

§  内存或缓存中储存数据

§  支付多维度立方体的切片和切块

 

市场上企业级的数据平台及基本特性:

·        Mongo DB: NoSQL, 支持分布式数据存储

·        Couchbase:NoSQL, 缓存中储存数据,支持高性能读写

·        Hadoop:NoSQL,开源,支持分布式数据存储、计算的大数据应用平台

·        Hbase:NoSQL,分布式面向列的开源数据库。

·        Oracle:SQL,世界上最流行的关系型数据库管理系统。

·        MySQL:SQL,开源的关系型数据库管理系统

·        Teradata Database:SQL,高性能和精密的工作负管理

 

我们的业务需求:

§  结构化数据(业务交易数据)

§  可靠性高(减少额外维护成本)

§  支持商业智能报告和视图化(业务用户是数据的消费者)

 

二、建立数据模型

数据结构选用主流的关系型数据,也就是事实表加维度表。

关系型数据库中的表被分为三层:获取层(acquisition layer),聚合层(integration layer),和展现层(presentation layer)。这次使用的就是展现层的表。

·        获取层:获取层的数据就是源数据的复制。不同来源的数据分别丢入不同表名的获取层。

·        聚合层:获取层的数据根据主题在聚合层聚合,并进行统计量的计算。

·        展现层:聚合层的数据在展现层进一步聚合,以透视表形式直接展现给数据用户。

 

展现层的表几乎包含了所有用户需求的信息,直接对接商业智能报告和分析应用。

考虑到提取数据统计分析的的便捷,展现层的表采用宽表,将维度和统计量存放于一张表中,容许数据冗余。Teradata数据仓库14.10支持宽表,可以将所有的维度(几千个列)存放在一张表中,仍然保持良好的读写性能。我们从数据仓库找到了相应的表,这是一个宽表,将维度和统计量存放于一张表中,十分方便前端的展现。

 

三、利用第三方数据

展现层的表几乎包含了所有用户需求的信息,但是只差一个维度:省和直辖市。这只能求助于第三方数据:中国各省和直辖市的IP段。亿贝购买了大量第三方数据,包括气候数据,地理位置数据以及人口信息数据,用于用户研究及个性化服务 。其中比较有名的数据提供商是Acxiom, Acxiom 提供的人口统计信息和心理因素信息丰富了亿贝数据,支持了用户360度项目,典型的应用是基于数据库的邮件营销。气候数据有预测数据和及时数据,预测数据用于季节性的库存管理和品类推荐;及时数据用于对电商物流时间的估计。亿贝Buy It Now(当天送达)服务曾因为恶劣天气而导致货物延迟到达,引起用户不满。利用及时的天气数据,亿贝事先通知用户因为天气原因潜在的延迟,从而改善用户体验。

 

但是可惜的是,我们只购买了欧美几个主要市场的数据,没有中国的数据。既然是作演示,从提供IP服务的相关网站上找到了各省的IP段,制作了一个文本文件,准备上传到Teradata数据库和聚合层的用户表关联,新建一张展现表。

 

四、使用数据库小工具

Teradata的Fast Load 可以用于上传这个小文本。由于FastLoad 是基于命令行,而上传本地数据有广泛的应用,亿贝数据平台部开发了Data Load工具。Data Load底层是Teradata FastLoad,但前端更友好。

 

五、数据集市的使用和管理

常识问题来了,企业级数据仓库岂可随意上传文件,何况使用的是个人帐号?我上传的目的地是数据集市,数据集市(Data Mart)是从数据仓库中抽取数据,服务于特定团体或特定任务。亿贝称之为VDM(Virtual Data Mart),通过VDM工具让用户自助管理自已的VDM:包括空间申请、权限管理、表和透视图的管理。新建的展现表将储存在支持团队的VDM中,大小是1.5G,我的VDM的总空间是100G,应该不存在空间不够问题。但是在向表插值时总是报错”No more room indatabase”。查了可利用空间有60G,百思不解,查文档搞明白了:it’s caused by highly-skewed table。除了删除VDM中高倾斜的表,同时对新表改进了主索引(primary index), 终于通过。

 

·        倾斜的表(skew table on Teradata) :当数据在Teradata AMP上分布不均时,我们称为倾斜的表。倾斜因子越高,性能越差,达到40%即认为高倾斜。

·        倾斜因子的计算:100-avg(CurrentPerm)/max(CurrentPerm)*100

 

在生成新的聚合表的过程中,需要关联两张表,生成新的维度和统计量插。但一直报借”The string contains an untranslatable character due to differentcharacter set“。查了两张表所有使用到的字符型字段,发现有一个字符定义为 Unicode 字符集,而默认的是Latin字符集,更新了新表的相关字符集后,通过。

 

六、制作数据视图

数据集准备好了,就是前端工具选型了。Tableau连续四年被授予Gartner商业智能和分析平台魔力象限领先者,快速发布,设计简单,良好的视图展现和良好的服务器性能都符合轻量级业务需求。

准备的数据集有840万多条,利用Tableau Desktop从Teradata数据库抽取数据到发布者本地用时过久会产生timeout而后reload。这个错误不是因为Tableau容量过载,而是Teradata数据仓库对性能的控制。Tableau要求本地抽取数据成功后,才能发布到Tableau server。解决方法是先抽取数据子集,以减少连接时间。但子集必须能反映数据面貌,为视图设计提供思路。成功发布视图后,在数据集市相应表中中加载数据全集,在Tableau Server上更新数据抽取,完整视图即呈现。

 

Tableau Dashboard 样图:




1 0