BI工程师、数据仓库工程师、ETL工程师、数据开发工程师(大数据开发工程师) 有什么区别? 举报 理由 举报 取消 2017年11月9日 10 条回复 1315 次浏览 BI,分析,商业,工程师,数据,数据仓库,智能
回复 ( 10 )
老板 :我是一家手机公司的老板,今天要向去董事局汇报,我要准备一份介绍过去三年的用户增长、用户留存、用户活跃度、手机里面每个APP使用率等情况的报表,假如下面没我下面没有BI,那我肯定就蒙逼了。。
BI : 我是一名非技术BI,我天天看竞品的分析报告,看双十一销量,看各种评论,知道自己的产品有哪些短板有哪些长处,我分析南北地域差异,国内外客户喜好,总之我在手机领域有着很强的行业解读能力和数据解读能力,我可以画出非常漂亮的图表和PPT。今天老板让我出一份报表,我还要去刷脸找ETL工程师帮我跑出这次报告的数据,基于这份数据我要给出一定的解读,为啥这个月手机卖得不如上个月,为啥用户流失越来越严重等等都是我要去做的。
ETL工程师 : 我是食物链最底层的苦逼ETL工程师,我会写shell、我会搭hadoop/hive/hbase、会写超复杂逻辑的sql,今天那个不会自己计算数据的BI又让我跑几个数据,我本想让她提需求流程的,但她说这是老板要的(运营惯用的杀手锏!!!),要加急处理,我只能放下手头的活儿给她跑数据了,花了半个小时把数据跑好给她,希望能就这么交差吧。
如果你以为我每天就做这点事那你就错了,我平时的工作可不仅仅就是完成上面交给我的任务哦,我还负责数据ETL过程、数据建模、定时任务的分配、甚至有时Hadoop集群的维护等等都得我去做,每件事单独拿出来都可以拿出来写本书。
就拿ETL过程来说吧,你要把原始数据从各种数据库、各种服务器的不同业务日志归一化到同一类格式,要约定好分隔符,然后导入到分布式文件系统HDFS,甚至你还要和业务系统定义数据格式出规范,数据收集完,你还得出中间表,数据过滤,格式统一,ID统一,维度统一,通过不同的数据现象进行数据,完了,你就得出一些日报周报之类的数据了,这时候你要按照需求把数据组织成一定的格式然后导Mysql、或者HBASE等等。
总之你就是需要把数据各种收集、各种处理、然后各种导入导出,是不是很有意思?
1、正常情况下,老板 —> BI —> ETL 出一份报告,这中间能否BI直接去计算数据?sql太复杂,那么可不可以一切数据标签化,BI甚至老板要什么就选什么?
2、ETL工程师可以把数据收集自动化、可以规范业务日志格式、可以将一切都配置化,但是这些都是基于N+1的,也就是说今天的发生了什么一定要到明天才能看到,那么有没有一个系统能把数据分析做到实时或者准实时?参考双十一大屏,马总要是到12号才能知道成交了多少笔不劈了那帮做数据的才怪。
3、目前绝大部分分析系统都基于离线计算(HADOOP/ODPS),那这里有个问题了,运营或BI想看个数据还得你离线慢腾腾跑完才能看到,那么有没有一个系统可以支持你再大的数据量,再复杂的逻辑,毫秒出数据?
我没有提到的还有算法工程师、大数据运维工程师等等。
如果把数据价值分层,这里分层的办法很多,我只列举一种方法,有人分过5层
第一层: 为老板提供决策支持,例如传统的财务报表
第二层: 为运营提供决策支持,例如数据化非常彻底的淘宝运营们
第三层: 为产品提供支持,例如有产品经理们会拿着报表天天看研究自己的某一个按钮摆放位置对不对
第四层:数据用于生产,比如直接对接广告系统产生收益,比如直接对接推荐系统为用户推荐商品,实现千人千面,再比如利用手机APP直接为不同用户push消息
第五层:大数据交换,数据产生直接受益
大部分公司能做到前两个层次就已经很不错了,如果能做到第三层,就已经很牛逼,做到第四第五层次,国内互联网公司不超过2家,大数据应用太大了,不知从何说起,以后聊吧。
————————–分割线————————–
针对评论中的一些问题做些统一的解释
问:数据交换的理念
有人提到数据交换,数据交换不是简单的我给你一点,你给我一点;也不是我给你钱,你给我点数据。
原因是这些模式基本走不通
1、数据很难定价,无法简单的将数据定义为商品,数据供给方也无法去衡量一份数据能产生多大的价值,只有在具体的应用场景中才能大概估计它的价值,因此几乎没有一种简单公平的机制去为交易双反指定交易规则。
2、数据拷贝成本几乎没有
如果是一部iPhone,如果想要造出一模一样的一部iPhone成本奇高,所以苹果公司可以放心大胆的把手机卖给你而不怕你仿制,但是数据不行,因为数据几乎没有拷贝成本。
那么带来一个问题,如果我把这份数据一百万卖给你,我几乎除了『你的诚信』之外没有任何方法去限制你不把数据折价买个其它更多第三方,那这份数据的市场价值很快荡然无存。
3、隐私
商业有很多隐私规则,用户也有很多隐私,这些都是不能简单的通过拷贝的去交换的,如果给对方一份数据,例如:用户的在某APP的浏览行为,那么如果被第三方运用在电话骚扰,广告弹窗之类的场景中,肯定是不行的。
数据交换 最理想的方式应该是,双方共同拿出一些东西,然后服务于某个场景,而数据导出等行为都是被禁止的,双方不能看到对方的数据也不能导出对方的数据,可被导出的结果一定是无害、不侵犯隐私的、不对原数据价值产生影响的东西。
而这样一种数据交换的方式却需要非常大的体系建设,平台建设,制度建设。
这样的体系和平台,需要长时间的摸索和市场培育,数据人任重而道远。
今晚的杭州明月皎洁,明天的西湖应该分外美丽,大家加油。
BI 工程师、数据仓库工程师、ETL 工程师、数据开发工程师 在大型公司里面分工还是比较分开的。
BI 工程师:一般负责开发企业内部报表,主要根据产品技术选型的问题,他们操作的软件不一样。比如说 Microstrategy,Tableau 等等。
ETL 工程师:负责数据的抽取,转化和传输,一般这个部门在企业里面负责数据的转化,以前数据仓库时代是 SQL 为主和 ETL 工具为辅。现在非结构性质的系统比如说 Hadoop 等等,他们脚本语言的能力需要很强。
EDW 工程师:他们一般维护表的结构,管理系统的 performance,整个数据仓库逻辑层物理层以及 admin 层面的管理。更倾向于管理 DW 和开发核心功能,不像 ETL 工程师相对偏业务逻辑。
GrowingIO 主要针对用户的 App 或者网站行为做精细化分析,不用在产品里面部署大量的埋点,GrowingIO 能够帮助运营提高效率,实际上是上面各种工程之间的一种集合。帮助企业了解运营效率,提高产品体验,加快增长速度。
数据开发工程师是个非常泛的概念,我理解有类工程师开发广告数据产品,搜索产品,推荐系统等等。希望这些非常汇总的回答给您一些帮助。
真要讲区别的话,怒答一记。
———————————————————BI工程师:一般是做数据可视化,报表开发,常用工具(如BO Cognos MSTR等),也有基于js(如echarts hicharts等)的Web开发
数据仓库工程师:传统的数据仓库概念,职责大致可以分为两种,一是业务分析(BA)和数据建模(Data Modeling),主要做需求分析,业务理解,数据仓库表结构和字段逻辑设计;一是流程(ETL)开发,具体工作如下
ETL工程师:根据数据建模产生的设计文档,用工具(如Informatica DataStage ),或者SQL
大数据工程师:现在比较流行hadoop的数据平台架构,通过MapReduce(主要是处理日志数据)或者HiveQL来完成传统ETL工程师干的活
———————————————
个人感觉,除了BI工程师以外,其他三个真的没多大区别。别被岗位名称困扰,搞数据的,应该各种都做,或者至少体验过也知道怎么做:模型设计,ETL开发,报表,简单的分析
这些角色划分的界限本身就很模糊,一个人甚至可以同时扮演全部这些角色。
首先说说数据仓库系统构建过程中一些主要的环节:
1. 数据收集
2. ETL
3. 报表系统的开发
4. 基础技术环境的构建、维护
5. 算法、数据挖掘
6. 类似于AB测试系统各个数据应用系统的开发
7. 数据安全、备份
基本上1,3 ,4 ,6,7项工作是属于工程属性比较强的工作,2,5项属于工程和领域知识有交叉的工作。
1. 数据收集。一个完善的收集系统,不仅要搭建成数据收集的管道,还需要对数据收集过程本身做好监控,对数据收集过程中出现的问题及时知晓、及时处理。
2. ETL,将收集过来的数据进行清洗、转换,在此过程中形成数据仓库的层次化结构。这个环节需要一个根据具体的业务需要,通过ETL过程形成数据仓库的层次化体系结构以及抽象概念系统,以便于后续的报表开发和数据分析、数据挖掘。
3. 报表系统开发。技术上需要一个开发工程师来做,需求上需要一个熟悉业务的人来定。报表系统的内容会随时间、随业务不断演化,因此设计上也需要适应这种演化。
4. 基础技术环境的构建、维护。负责底层数据存储、计算框架的设计和维护,建立起存储和计算的层次结构,比如最活跃的数据可以放在性能较高的设备上,而旧的数据可以放在几台专门的归档服务器上;计算上,大型的数据转换任务可以交给MapReduce来做,而基于小数据量计算的报表指标就可以使用性能较高的内存计算来做,比如Presto。
5. 算法、数据挖掘。在ETL结果之上进行数据分析、数据挖掘任务。工作过程中可能需要一些新的数据,这就需要和数据收集、ETL相关的人员进行沟通,以达成工作目标。
6. 类似于AB测试系统各个数据应用系统的开发。数据分析、数据挖掘的结果需要应用到产品的优化上,而数据的应用系统就是要打倒这个目的的。这些系统仅仅作为桥梁存在,主要就是要保证性能达标、以及逻辑正确。这个环节与数据收集阶段结合,就生成一个数据系统闭环。
7. 数据安全、备份。非常重要的工作,数据的访问权限限制、数据的冗余备份机制,都要逐步建立起来,灾难恢复机制要经常进行测试,做好最后一道防线。
根据工作量和具体需求,工程性工作大概需要1到3三个有相关经验的工程师即可,而需要领域知识和熟悉业务的工作,大概也需要1到2人。至于人要挂什么title,看着来吧!
我一个实施人员,啥都干了。
BI工程师,主要工作是写sql画报表,我比较头疼交叉表和分层汇总,最多的一个sql写了4500行,基本上要维护总数400+的存储过程。
数据仓库工程师,基本上我接触的都是数据集市,就是给各种外围系统提数的。
ETL工程师,主要是写shell脚本和操作kattle之类的工具给自己的系统或者其他系统提数。
数据开发工程师,写存储过程,设计数据结构和数据接口,实现一些产品不能实现的数据处理要求,偶尔出报表数据,维护存储过程。
大数据工程师:现在的话就是用spark,数据量大很多,其他感觉跟以前差不多
之前几位都回答得很好了,我来补充一下我自己的理解。
BI工程师相对ETL而言,更关注业务,需要一定的行业领域知识。
ETL更强调利用技术和工具对数据处理过程和数据业务开发。
大数据工程师更强调的是平台,平台建设和规范化,需要对各类技术、工具的底层实现和原理有深入了解甚至是改造。
数仓项目比较专业的角色分工是五种:
按项目出场顺序依次为
EDW模型师:负责EDW部分各层逻辑模型,数据结构的规划与细节设计(如基础层,缓冲层,ODS,实体属性关系,接口选取,映射关系等)。
数据仓库架构师:负责数仓物理结构的设计与开发(如库结构,用户,权限,命名,数据类型统一等)。
ETL工程师:按模型师(EDW或BI)提供的数据流方向和映射逻辑,设计和开发数据处理算法和脚本,实现数据供给。
BI模型师(也叫分析师):根据业务需要和实际数据情况,对某一专题进行数据挖掘的建模和设计。(和EDW模型师的核心区别在于一个是局部精细化应用,一个是全局统一化存储)
报表开发工程师:按BI模型师的要求,开发具体的报表界面。
打个可能不太恰当的比方:
假设数仓系统是个计划建设的城市,那么
主要由EDW模型师规划城市地理位置和核心产出物,以及规划通用基本的功能区,如居住区,管理区,交通港等;
架构师设计城市建设主材料;
ETL设计各种交通物流通信水电气循环等系统;
BI模型师详细规划某一特殊功能区,如商业区,办公区等;
报表工程师则负责将BI模型师画的设计图或模型建成实物。
至于题主所说的数仓工程师可能指的是中级或初级EDW模型师;数据开发工程师可能指的是有初级架构师角色的ETL工程师
BI:查看和分析数据,根据数据得出产品、策略上的结论。比如某个活动的点击率、覆盖率。
ETL/数据仓库:负责数据仓库的维护、数据的清洗、建模、数据从采集到入库的整个流程的设计和控制等等。
大数据开发:具体业务的实现,包括推荐系统、用户行为分析等。
简单来说就是:BI 是看数据的,数据仓库/ETL 是导数据的,大数据开发是计算数据的。当然了,这些只是主要职责,相互客串的情况是很普遍的。
BI,ETL,数据开发,数据仓库工程师。都是数据行业里的角色。工作范围最大的是“数据仓库”,其目的是“BI”,ETL是数据仓库过程之一,数据开发字面理解就是以数据为目标的技术工作,可以是数据仓库中的所有技术工作,含ETL。其角度不同,也有交集,不过这些只是title,title 而已。
数据的划分,一般要求可加和,穷尽而不重复。我们对数据工作如果照此划分,可以为运维方向工程师,数据处理工程师,数据可视化工程师,数据模型师,算法工程师。
这个行业工作内容很宽泛,圈外的人认为“程序员”就什么也能做了,一般公司设置的岗位少,而角色多,一人多个角色,跨个方向很是常见,大家的技术能力很泛泛,难有机会精通一项。title 也没有太大意义了。
啧,专业化,条块化,细分化,真棒!很多行业,不缺乏细分专才,但惟有能跨界跨领域者,升职快薪水多创业成功率高。