从数据仓库到数据视图
来源:互联网 发布:秦可卿怎么死的知乎 编辑:程序博客网 时间: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 样图:
- 从数据仓库到数据视图
- 从数据仓库到数据集市
- 利用db_link创建物化视图数据同步到数据仓库
- ETL----从源数据到数据仓库的逻辑数据映射
- 从数据库到数据仓库
- 数据仓库,从数据仓库到大数据,数据平台这25年是怎样进化的
- 把数据从控制器传递到视图
- 从文本分析到数据仓库
- 从数据仓库到商业智能
- 从Txt文件读取数据到数据视图
- cakephp3 如何从控制器传递数据到视图
- IT思想——从数据仓库到大数据,数据平台这25年是怎样进化的?
- 大数据从雏形到发展,详述传统数据仓库到大数据平台的转化及大数据的可视化应用
- asp.net实现从Txt文件读取数据到数据视图的方法
- SAP从视图获得数据
- SAP从视图获得数据
- 从Teradata迁移到IBM DB2数据仓库注意事项
- ASP.NET中MVC从后台控制器传递数据到前台视图的方式
- jumbo安装redis步骤以及redis配置详解
- HDU-1599 find the mincost route (无向图最小环[Floyd])
- URLDecoder: Incomplete trailing escape (%) pattern错误处理
- I/O多路转接之select
- Java 构造器研究
- 从数据仓库到数据视图
- BestCoder Round #72 Clarke and chemistry
- chrome浏览器安装
- zoj3490
- 判断两个二叉树是否相等(仅结构) -- 递归和非递归实现
- js页面转码
- IQKeyboardManager的使用笔记
- Navicat for SQL Server有哪些功能
- 小菜鸟成长记