00:00
好,接下来呢,我们看一下第十章总结一下啊,这个电商数仓业务数据仓库的一个啊总结,那就说相当于对这个第三个文档的一个总结,那看一下第三个文档当中我们需要记住哪些内容,那第一个需要熟悉八张表的业务字段,每张表呢,至少要记到三个五个字段,那下面我来回顾一下哪八张表。进步了呢,首先围绕着订单表,那左侧这边有一个用户表,这边有一个支付流水啊,支付流水上面订单详情商品表啊,还有商品的一级分类,二级分类,三级分类,是不是这张表啊,啊这张表在你的脑海当中有印象,OK好,那下面呢是书场理论,比如说这块涉及到一些面试题,那第一个面试题就是表的分类分几种。
01:01
四种啊,实体表维度表是傅型四实表,周期型四实表,好,那问题来了,那第一个问题订单表属于什么点。中机型40表,订单详情表,事务型40表啊,商品表,实体表,用户表,一级分类,二级分类,三级分类维度表,支不流水表,事物型事实表对吧?OK好,那下面又来了这些表。他面试官会问你从买算过程当中往,还有市场里面导,这过程当中采用的策略是什么,分几种,可以说有这个全量导入,增量导入,新增和变化啊,新增和变化,那这里面这个拉链表啊,其实它就是新增和变化的一种啊,哪种OK,那下面好,我们再来回顾一下,那第一个订单表怎么导。
02:10
新增和变化,OK,那具体怎么实施的变化啊,不是断变化,就是说你如何判断这个数据是新增和变化的,Create time和oper time,那如果说没有这两个时间怎么办呢?日后我们在学习实时的这个数据仓库或者项目的时候,会有一个开。啊,开到一个工具实时的监控反射后数据的一个变化,一旦发生变化,他这边就有监控,立马呢发到这个卡卡里面,卡管后边还会有Spark啊,对它进行一个消费啊,有个开头框架,OK,那后边如果是订单详情表等。新增对吧?啊,因为它是一旦产生就不会变化,所以导致新增那商品表和用户表产量OK,一级分类二级分类三级分类,产量支付流水新增OK妥妥的。
03:11
那这是这个,那下面还会问范式理论当中,一范式什么特点属性不可切割,二范式不能存在部分函数依赖,三派式不存在传递函数依赖,OK,好,那变化还会问在你搭建竖仓当中采用的是哪种建模方式,模。主要采用的是星型模型啊,个别呢也有一些雪花啊,那么星型模型和雪花模型的区别是什么?哎,经型模外围只有一层维度维度表,雪花模型外围有多层维度表,OK,那星座什么叫星座?多个40表就组成了星座,OK啊。
04:07
那下面再往下啊看。那差不多了啊,往下找啊school啊对应的school参数,那参数有哪些参数。韩信吗?连接买多数据库啊,传入用户名密码啊,然后我们说导入的啊,导入的话是不是还涉及到啊,表要导入到哪啊啊导入到E的路径,然后还涉及到如果路径存在把它删除啊删除OK,还有对边的一个分隔符啊,还有查询过滤S语句对吧?嗯,好,那这里面其实这些都是shell,它最关心的就是s school什么参数呢?它根本使库管在导入导出过程当中遇到过哪些问题。Now,哎,就是这个now的第一个问题啊,Now的问题,那now呢,它是在还中底层存储,Now是以斜杠文来存储,在买设过程中呢,它就是nu,那你在导入导数过程当中,就涉及到一个数据转换的问题,那就需要用到input啊,Put now,那还有这个杠now,还有这个杠now nothing,那这这个含义了,这是可以把now值啊,使劲的纳值替换成啊,比如说斜杠N啊等等,还有呢,这个是非这类型的,这个now也整么替换是这个意思啊,这个含义OK,那这个是这个地方一定要注意有个now存储的问题,还有一个问题在咱们这个项目当中,我没给大家说啊,我拿到最后给大家总结啊,这个非常非常重要,直接就是杀手锏啊,可以说对面上上来说一招制顶啊。
05:50
来看那个问题,看一下这个场景,子宫在导出满身功的时候使用了四个map任务,没问题吧,可以设置为是吧,过程中有两个任务失败了。
06:04
记住二识货导出哪说。这两看看。这面是卖什么?我要往这边倒,我这跑的任务呢,有四个任务,其中有两个挂没问题吧,啊,两个挂掉,然后此时买修风存储了另外两个买呃,买map任务导入的数据,因为这两个成功了,上面两个失败了。好,此时老板正好看到了这个报表数据,也说看到了这个成功的这两个。啊,失败的也看了一下啊,但是没有,而开发程序员发现任务失败后会调试问题,并最终将全部正确的再导入到这个Mac里面,那后面老板再次看报表的时候发现本次看到的数据以前不一致。之前我说过,这个数据你可以没有。但是不能是错的。
07:01
是这样吗?嗯,这种是不能发生的,那怎么办,怎么解决?这个问题呢,能理解吧,嗯,你说那直接就倒了什么。那现在看这呢,我是从这个官方手册这个位置啊截取出来的啊,这段话可以看一下啊,你们就不习惯开官网。官网是最好的学习的。咋网啊?这官网多好啊,写的。看到这句话了,证明我这出数确实是广告是吧?来看没看懂。考验一下这个since school brokedown at port是不是导出数据的时候挂掉了啊,In multi,多个传输吧啊,多传输it is proper that a report job may result in para date beginning commit to the。
08:05
A further lead to subsequ jobs five to the insert place in some case or lead to什么什么date others you can overcome this problem by SP,加上这么一个参数啊,OK which us ASA,什么table一个,这中间一个table that is used to stage like our date,嗯,This table is finally more to the table也说先把数据导入到这张表,然后再从这版书内部把这个数据再移动到最终的目标表,是这意思吗?嗯,大概这意思啊。那来看,那就相当于是这样,这是have,这是。这是最终的目标表,目标表我先把它导入到临时的一张表里面。
09:00
没问题吧,啊,成功了我我再把这个数据导到这,失败了我再重新覆盖,这里面不影响最终老板看到这个结果来买模板,哎,那就是建了一张临时表,然后他往这倒的过程当中采用的是数。能懂吗?啊,这事五数就能保证这个数据的可靠性啊,OK啊,就这么一个过程,那这个参数呢,就是杠杠sta table啊,非常非常重要,这也是面试官呃,经常爱问此库当中到底有哪些问题,你在导入导题过程当中出没出现过问题,这就是其中一个问题。啊,非常重要的啊,啊,你们的师哥用了这个方式已经成功,嗯,干掉N多家公司,就这个,这是咱们也是最近才新加的啊,这是咱们齐老师啊,那同时这个是杠杠standing table,还有一个叫GA-clear standing啥意思啊,你是不是创建了一张临时表啊,那那临时表你是不是也得清啊,啊那清的话就加上你说你导入成功之后,要想清这个H角的数据,就用clear类对吧?啊好。
10:14
那就是他那还会面试官还有这种场景会问你卖的数量为一。问,你在这个导出的过程当中,Map设置多少个啊是吧,咱们是不是都是设置一啊啊,其实你可以设置为多个,你说多个map任务,但是这时候就要采用sta table啊,仍然可以解决这个数据性数据一次性的问题啊,这是这个问题,那同时还有这个问题是通过底层运行的任务是什么样的任务?只有map阶段,没有radio阶段啊,这个要知道啊,这是一大特点,School当中基本上你记住这三个就OK了。一个是。Have,底层存储是斜杠N,你需要对now进行一个转换,加上对应的参数,那还有一个就是s school导出数据一致性问题啊,如何保证这个数据一致性,那需要加一个杠杠table,先把数据导出到临时表,然后再把临时表的数据它会内部经过事务导出到最终的目标表啊这么一个过程。同时还要知道底层它是只有M阶段的任务啊,并没有人定存单任务,只要知道。
11:27
OK。那下面继续。再往下呢,就是具体的去分析对应的指标,这里面我分析这么几个指标啊,第一个呢,就是这个GMV啊GMV,那GMV其实预算它首先你要知道它是什么,它是一个网站时间内的成交金额,包货付款的和未付款的啊好,那它是怎么计算的呢?基于用户行为宽表对订单金额进入上啊进入上,那你说他用到的进入点呢,就是一个上求和啊,所以说这个是最简单不难啊,OK哈,那下面呢,涉及到一个转化率的一个计算。
12:06
那只要涉及到什么什么率,你要先给我搞清楚它的分值和分母,然后相除啊,相除啊,那首先我们第一个算的转化率呢,是新增用户和活跃用户占比的一个转化率。那你就先搞定新增用户,然后活跃用户之后一除就完了,那下一个呢,是下单人数和活跃人数,一涉及到什么什么人数,或者说几次几次购买,那这种基本上用到就是萨米啊,萨米if的一个组合啊,先判断判断符合我们条件了,然后再累加啊,这么一个过程啊,这里是我们用到some,其实我们在学have的时候还有一个组格可。哎,知道吧,哎,K10顿在企业当中也是大量使用的啊K顿啊一种情况,然后得审核结果啊OK啊好,还有呢,是支付人数在下单零数比例啊,同样用到的仍然是三米一组,下面还有一个是复过率,那同样计算它的分值和分母是什么,那分值呢,比如说一次购呃,两次购买的次数和一次购买的次数,这也就是涉及到次数啊或者人数等等,都是上门衣服,上门衣服个别情况你可以考虑K4。
13:25
那下面是拉链表这块,那拉链表这块呢?第一道这样问的题,上周我要强调,也就说你如何来获取买SQ数据的新增和变化,那就是用到了create和oper time啊,正常情况下,绝大多数MYQ里面都有这两字段,如果真的没有,记住用开头啊,开头这个框架可以实时监控,OK。像开头在什么滴滴啊,美团啊,内部都是有使用的啊,我这里有他们相应的这个参询资料啊,啊,他们就是这么使用的啊,有开头那还有用临时拉链表解决了,主要是还有中数据不能更新的问题啊,更新不了一个字段,那我就更新你的全表啊这么一个过程啊好,那下面还有。
14:15
嗯,还会问这个问题跟业务非常非常相关,问你阿兹卡班当中每天跑多少步骤。像这种问题非常简单,但是你答不出来直接挂断也是你们最肾虚的地方,对吧?啊,就件事一说就完了啊,说完之后还回来跟我一顿说说老师这我我也不大知道,我也没干过是吧,理由偷偷的你们都是,其实就是一个舒式啊,而且呢,老师基本上我在上课之前,或者在你们模拟面试之前,把这些东西能告诉你的全部都告诉你们,但是你能不能记住,那就是你的问题了,对吧?好,我现在呢,先让你们记一下,但是呢,到毕业之前呢,能记住有多少人不好说是吧,那时候再回来再刷哈,我不说了嘛,日后给大家出一个详细的。
15:04
所有项目的面试资料对吧?啊,你就记住那那些东西就行了啊,那是每天集群有多少账,那这个Java数合理范围,我说的合理范围是什么呢?针对我们的数据量,我们的数据量是多少,还记得吗?每天一条是吧,啊一条左右哈,100~200个指标,每天进行一行,100~200个人啊。算这个指标啊,这已经算一个比较大的一个公司了啊,比较大的一个公司了,中型公司吧。下边呃,多少个指标是100~200个,你要说最大的就是200个,那两百个这里边啊,有个别面试官会问你有多少个类似于这种照清清楚一点啊,这里面这个含义比较模糊,一个是多少个指标,一个是多少个照吧。
16:00
那多少个job呢?你看我们刚才在执行GMV这个任务的时候,我写的阿斯达班是不是六个呀,从in帕到ods DW ddws ods以及ID是不是是六个呀?啊,那你看他问的是什么,这个你不用担心,每一个公司的理解不太一样,反正你就告诉他我的指标分析的指标是有200个,那同时。我在这个执行每一个指标的过程当中,它会执行N多个二六,每一层都格对吧?啊,所以说把这事解释清楚就OK了,那你这块如果说乘以六的话,就相当于是有1000多个任务。你可以说它是任务,就不是指标了。啊,他叫任务OK吧,好,那好每天集群有多少个台。那又是一个名词,那想想这一个job当中是不是就是代表了一个MR,那么一个MR当中就包括map test和reduce test。
17:05
是这样吗?啊?可以有吧,那map它取决于什么?取决于数据量吗?取决于切片,是这样吗?那么这里还有一个问题,那是不是我所有的数据,比如说一个一条数据啊,这个。100100G的数据都参与这个预算吗?我算GMV,我就把全表所有的表都算一下吗?没有没有必要对吧,那只是涉及到它对应这个表的数据,我开多少个慢test。啊,那这块那这块呢,我这只是成了一个,呃,五到八个任务啊,跑分任何指标啊,将近五到八个这个test啊,那就是5000多个具体的数字,这块一定要能多含糊就多含糊,其实真正在开发时候没人去太在意这个,但是粗略的概念是要有问题。啊,粗略的这个这种概念有了啊,OK,那还有最常见,最常见的一个有一个面试题。
18:06
任务挂了。对,阿卡的换了。啊,这道面试题出去被问到的概率在30%~50%,那个同学。那基本上阿兹卡班有一个邮箱的配置,知道吗?挂掉之后可以发邮件啊,挂掉之后可以发邮件啊,在这个我记得是能配置成163的啊,邮箱其他的好像还不不行啊,直接删邮箱,那他如果如果成功了和失败了,他都会发这个邮件啊,那他只要发邮件后面好多公司对他进行一个二次开发。发邮件,如果等级很高,非常重要的任务,比如说什么日活呀啊,或者什么交易金额呀啊,跟钱有关系的重要指标,那这些指标属于一级等级,他一旦挂了直接可以处罚,打电话自动打电话。
19:00
那你就你这边的对你的要求是什么呢。24小时待机,对,突然间就有可能半夜起来了,去远程去调ug。就是这样的,其实没有这有啥的,这很正常吗?比如说那个半夜两点,突然间这个任务挂了,挂掉了,挂掉之后你又跑到公司去调啊,记住不用跑到公司去调哈,千万别犯这种low的问题,你说我打车再过去,然后不是这样的啊,直接开启在家就可以开启这个对应的账号,对吧,就跟咱们连接自己的虚拟机是一样,为什么反复说咱们的虚拟机,虚拟机和物理机没有什么区别。就是要内服务器外的话,我这边重访关就连接到了啊,登录上登录上之后啊,查一下什么问题啊,然后可以选择一些重访啊,或者切断啊一些任务啊,就这样啊这个要求。OK,那下面呢,这个还有一个,这个就得感谢一下这个赵总是吧,啊赵总啊。
20:02
那看一下张总呢,把咱们整个学的用户行为储差和业务出差这里面对应的表关系都放在这了啊,这也是我之前在上课之前倡导的啊,你要学会学习啊,把一些知识呢,进行一个总结归纳,翻译成自己的啊,这就是你自己的心里很踏实,那你看一下吧,在o Dis层我们先回顾务是上业务时长,O Dis层有这个订单表,这不流水表,用户表,一共八张表,是这样吗?那o Dis层好。OK,到了DWD层,DWD层是用来做数据清洗的啊,咱这里面清洗的只是判断一下ID吧ID啊,然后同时对这个商品表和一级分类,二级分类,三级分类进行了一个维度替化,也是降维OK吧啊,那这里面我要找人强调一下,为什么要强调一下呢?咱们虽然说只是判断了一下ID这么数据信息。
21:04
啊,之前咱有个老师也说,老师你只判了一个ID,这边让我判断一个这个值是否为这个呃一个范围,这怎么做,当时我气的,那外面条件里面是不是每个时段大于一小于100,这种事还不够做吗?是吧,这种局一反弹能力一定要有啊,啊所以说你说他就告诉我说这个这个钱应该在一到100之间,说这个怎么做呀,老师当时我就没答理啊是这种问题不要忘了啊行,那这个呢,就是这里面一是做数据升级,二是呢做这个维度退化,好,那做完之后下边呢,是建了对应的用户行为款表和用户购买商品的明细款表。啊,那就是属于用户行为和商品维度,其实你还可以什么购物车维度啊,还有这个像这个呃商家嗯商家维度等等,围绕这几个维度建各种宽表,那建完这个各种宽表之后,后面我们对它进行了一个分析,包括用户行为各种分析,GV品牌出过率啊,还有转化率一些的一个分析,发现挺简单的对吧?好,那这里面还是稍微回顾一下之前的用户行为储差,那里面包括启动日志,事件日志。
22:21
那到了D达历程这块启动表时间表,那这块解析的过程当中用到了udf udtf同时还要用到了一个接身框架,Get接和啊OK好,那再往下这块啊,那这个以这个活跃调啊为为维度的啊,建立了还有那个热活,月活周活啊明细,还有这个新章刘程。这么多吧啊,然后后面我们开始分析新增用户留存啊,留存活跃啊,沉默流失,最近七天连续本周回流,连续三周都是基于这些中间表啊我们来做的,那后面呢,这些还对日后我们分析转化率做了提供一个支持。
23:09
你想想就这么几张表,如果这几张表在你脑海当中能形成一张图的话,那你无论是面试还是开发都是无敌状态,包括啊,还有一些同学提到一个新公司。新公司无论是表字段业务,你什么都了解,费谁谁去都一样,肯定是不熟悉的啊,或者说略微了解一点点,那这时候怎么办?把这些东西都给我扒。看懂一点画一点,看懂一点画一点啊之前我去公司那公司10万行代码。啊,我在短短的一周多的时间,我就搞得差不多了,怎么搞一点点注释,一个一个类的去注射。啊,把所有东西都注册好之后,我在word上又画了一张大图。那他们之间的一个调用关系模块之间的关系是什么样的?嗯,那我在我的脑海当中是有一张图的,所以说这个无论这个产品经理在提任何的一个需求啊,或者项目经理给我提要什么改什么东西的时候,那我这块我很快的就能定位到这个问题出来。
24:15
呃,这是非常非常关键的一个东西啊,一定要有这个东西啊,OK,行,那么就是整个,呃,第三个文档,业务出差的一个总结,你最终就需要掌握这些内容,那当然这个算指标的过程当中,需要你多敲多练。啊,分清主持啊,多简单是吧。
我来说两句