作家
登录

创业公司做数据分析(六)数据仓库的建设

作者: 来源: 2017-04-07 09:19:51 阅读 我要评论

建立了同一的时光维度,可以支撑各类时光统计筹划,避免在萌芽时进行时光值袈渌算。

在品牌维度、门店维度、职位维度三张表中,都有prod_xxxx_id的字段,其值是产品营业数据库中响应数据的id,感化是为了与营业数据库中的信息进行同步。当营业数据库中的相干信息产生变更时,会经由过程ETL来更新数据仓库中的信息,是以我们须要如许的一个字段来进行独一标识。

创虻公司做数据分析(六)数据仓库的扶植

ETL

ETL这块,因为前期我们做了不少工作来构建底层数据分析公共库,能有效的赞助我们进行数据采取与处理,是以,现阶段还没有惹人诸如Kettle如许的开源对象,重要采取编写Python脚本来实现。这里重要谈谈增量更新机制与义务流治理两个问题的策略。

1. 增量更新机制

增量更新的背景是如许的:第一,膳绫擎有提到,对于可变的维度表,我们添加了prod_xxxx_id字段来独一标识,实现信息覆盖更新。对于事实表,为了反竽暌钩汗青状况,表中的数据平日是弗成逆的,只有插入操作,没有删除或者修改操作,表示在以前一段时光内完成的事实营业数据,更新的办法就是插入新的数据。第二,ETL平日是近及时的,须要依附schedule触发更新,是以每次须要更新的信息就是上一次更新时光与当前时光之间的变更数据。笔者采取的策略是:

  • 建立一张temp表,表中有last_update_time与etl_name两个字段;
  • 每次更新时,起首萌芽出响应的etl_name的比来一笔记录,取个中的last_update_time作为肇端时光,取当前时光为停止时光;
  • 采取数据源中在这段时光内变更的数据,作为ETL过程的输入,进行处理;
  • 更新成功时,插入一条数据,last_update_time为当前时光。

2. Airflow义务流治理体系

在早期数据办事中,我们重要依附crontab来运行各个义务,跟着营业增多,义务的治理变得越来越吃力,表如今以下几方面:

  • 查看义务的履行时光和进展不便利。每次须要查看某个义务的履行情况时,都要登录到办事器上去查看敕令行的履行时光、log在哪里,经由过程ps来查看当前过程是否在运行等等。
  • 义务跑掉败后,没有通知与重试。
  • 义务之间的依附关系无法包管,完妒攀赖预估,然后在crontab里设定履行时光距离,经常出现上游还没有处理完,下流就启动了,导致脏数据的产生。

于是,我们开端推敲惹人一个义务流治理体系,根本设法主意是:第一,要能解决上述的问题;第二,最好能与Python友爱的兼容,毕竟团队的重要技巧栈是Python。经由调研,发明Airflow是当缁ゎ合适我们的。Airflow是Airbnb公司开源的一款工作流治理体系,基于Python编写,兼容crontab的schedule设置办法,可以很简单的描述义务之间的逻辑与依附,并且供给了可视化的WebUI用于义务治理与查看,义务掉败时可以设置重试与邮件通知。这里贴一张官方的截图来一睹其风度。

创虻公司做数据分析(六)数据仓库的扶植

星型模型与雪花模型」?现模型表达的是事实表与维度表之间的关系。当所有须要的维度表都直接接洽关系到事实表时,看上去就是一颗星星,称之为星型模型;当有一个或多个维表没有直接接洽关系到到事实表上,而是经由过程其他维度表连接到事实表上时,看上去就是一颗雪花,称之为雪花模型。二者的差别在于,雪花模型必定程度高低降了信息冗余度,然则合适的冗余信息能有效的赞助我们进步萌芽效力,是以,笔者更偏向于星型模型。

Airflow有三个重要的概念:DAG、Task和Operator。DAG(directed acyclic graphs),有向无环图,用来表示义务的依附构造;Task表示一个具体的义务节点;Operator表示某个Task的履行体是什么,比如BashOperator是履行一个Bash脚本,PythonOperator是履行一段python代码等等。应用Airflow,起重要编写对应的义务脚本,平日脚本须要做三件事:第一,描述DAG的属性(比如schedule、重试策略等),第二,描述Task属性(比如Operator是什么),第三,描述Task的依附情况。进一步的熟悉可以参考官方文档。

创虻公司做数据分析(六)数据仓库的扶植

以上就是现阶段我们的数据仓库成长与扶植办法,固然比较简单,然则今朝根本能知足需求。跟着数据范围的增长和营业的复杂化,将来还有很多路要走:若何合理的建模?若何有效的应用数据?若何进步数据分析效力?等待更多的挑衅!

点击查看:
创虻公司做数据分析(一)开篇

创虻公司做数据分析(二)运营数据体系

下图所示,为现阶段我们的数据仓库扶植筹划。数据重要来源竽暌冠MySQL和MongoDB中的营业数据、Elasticsearch中的用户行动数据与日记数据;ETL过程经由过程编写Python脚本来完成,由Airflow负责义务流的治理;建立适于分析的多维数据模型,将形成的数据存入MySQL中,供数据应用层应用。可以看到,数据仓库本身既不临盆数据也不花费数据,只是作为一个中心平台集中存储数据,全部体系实现的重点在于数据建模与ETL过程,这也是日常保护中的重点。



创虻公司做数据分析(三)用户行动数据采集体系
创虻公司做数据分析(四)ELK日记体系
创虻公司做数据分析(五)微信分享追踪体系

【编辑推荐】

  1. 非数据科学家若何进行数据分析?
  2. 数据可视化并不是数据分析
  3. “网管”必备的五大年夜收集数据分析对象

      推荐阅读

      创业公司做数据分析(四)ELK日志系统

    作为系列文┞仿的第四篇,本文将重点商量数据采集层中的ELK日记体系。日记,指的是后台办事中产生的log信息,平日会输入到不呵9依υ?件中,比如Django办事下,一般会有nginx日记和uWSGI>>>详细阅读


    本文标题:创业公司做数据分析(六)数据仓库的建设

    地址:http://www.17bianji.com/lsqh/34625.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)