00:00
那接下来咱们说DWD啊,DWD呢,实际上啊,是咱们整个数据仓库当中的这个,呃,最重要的一层啊,明细层是最重要的一层啊,因为相当于我们后续所有的层,所有的需求都是基于这个DWD层的啊,非常非常重要。好,那DWD层呢,我们呃这个文档在这儿呢,是不是只给我们突出了这个维度建玩啊,对吧?那他这儿呢,其实就是只突出了咱们那个业务数据,日志呢,在这没提啊,那但是咱们得得把它说说说上啊来我们说一下DWD咱们要干什么事,那DWD呢,我们也得呃按照这个呃数据的种类去说啊,那咱们还是先说日志,然后再说业务数据,那对于日志呢,我们要做的事呢,就是将日志是不是得给它解析出来了呀?呃,在ods层咱日志呢,还是一条一条的字符串啊,一行数据就是一条完整的日志,这个没有办法分析的,你写S后咋分析啊对不对?那所以说我们得先给它拆成不同的表,拆到不同的表里,然后每个表当中呢,它不能再是一条完整的字符串了,这是一条啊,一个一个的字段了,这是一个一个字段啊,是这样的,这是咱们日志要做的事,但日志咱们这儿怎么解析呢?咱们得考虑一下了。
01:10
啊,咱们这虽然先不用做,但是咱们得琢磨琢磨啊,大家说我们解析这个日志的时候啊,咱们应该是呃,怎么去解析,或者给他解析成什么样。啊,说的具体一点就是你这条日志啊,啊,就是咱们那个ods层那一张表对不对,你最终你要解析成几张表,然后表当中应该有什么样的字段啊,这是不是也是所谓的键门啊,对吧,就是考虑啊键啊哪些表,然后表当中有什么字段啊,咱们先来考虑考虑。啊,你说咱们这应该怎么去解析。啊,怎么解析。来,呃,现在所有的日志是不是都混杂在OD层的一张表里啊,对不对,那这个咱们肯定要分开的,那分的时候按什么分呢?按什么分。啊。
02:01
那肯定得是按种类区分,对不对,那什么种类呢?那前面讲了我们日志呢,咱们按照如果说按照内容划分对不对,咱们是不是有五类日志啊,对不对,按内容那有什么页面日志,还有什么启动日志,动作日志啊,曝光日,还有错误日志对不对?哎,这是按照内容分,咱们可以分为这五类,那我还可以按照结构分。按结构分,咱们分为这个什么启动日志,还有页面日志,对不对啊,那你说咱们,呃,解析这个日志的话呢,那你说我是按照内容去解析比较好,还是按照这个结构去解析是比较好的。嗯,按哪个解析比较好啊。嗯,按结构,那为什么按结构会比较好呢。按为什么按结构比较好?其实啊,咱们在这儿呢,应该是按照内容去解析是比较好的啊呃,为什么在这儿选择用内容解析呢?其实呃,出于这样的两点考虑啊,啊首先先先说第一点吧,那第一点大家想一想,我是不是相同内容的这个日志,那我的这个字段都是一样的。
03:10
我所有的页面的日志啊,所有页面内容啊,是不是都是那几个字段,那所有启动的内容是不是都是那几个字段啊,所有的曝光啊,所有动作是不是相同内容的这个日志我的字段是相同的呀,对不对,那字段相同,我是不是正好可以放到一张表里啊,这是咱们出一第一第一种考虑啊,那再一个呢,我们后续去使用咱们这个呃,用户行为日志数据的时候呢,我肯定也是会按照内容去使用它的啊,比如说去统计一下咱们这个页面的访问记录啊,统计一下所有的这个动作记录啊等等等等,你肯定是按照内容去进行使用的,按照内容去统计的啊,那所以说出于这样的两点考虑呢,我们最终哎,就决定按照内容去解析咱们这个日志了啊,按照内容解析,所以说最终呢,我们在DWD层呢,呃需要呃建五张日志表啊,然后每张日志表呢,对应咱们一种这个日志内容啊这样解析呢,无论。
04:11
从哪个角度去考虑呢?那都是OK的啊,是这样的啊,这是咱们这个日志的这个解析啊。好,那至于我们的日志到底呃,怎么去解析啊,然后呢,那个解析层解析到五张表当中,这个每张表里到底应该具有什么样的字段,那这个呢,我们到了咱们下边去做的时候呢,咱们再详细的去说啊,在这咱们就先先过啊好,那接下来我们说这个DWD层,这个用这个业务数据说业务数据啊,那业务数据呢,大家都知道我们要进行的是这个维度建模,对不对,那接下来咱们要开始讲这个维度建模了啊来我们往下看。DWD层的业务数据需要构建维度模型,呃,在这儿咱们一般采用星型模型啊,当然最终呈现出来的肯定是星座模型对吧?啊啊,那这个维度建模,维度建模咱们都知道啊,维度模型当中呢啊具有两类表,一类叫做事实表,一类叫做哎维度表啊那咱们去做所谓的维度建模的时候呢,其实就是去决定我应该有哪些事实表,应该有哪些维度表,然后呢,哪个事实跟哪个维度之间是有关联的啊对吧?然后最终呢,再去确定啊事实表当中有什么字段,哎,维度表当中有什么字段,这是不是咱们要考虑的问题啊啊那那这个怎么去考虑呢?这个维度页模咱们怎么去决定这些所有的东西呢?诶,咱们是有这个固定的模式的啊,那维度建模呢,一般采用以下四个步骤,哪四个呢?就是选择业务过程,声明力度,确认事实维度,然后呢,最后一步确认事实啊,然后这里边每一步呢,都是有呃,它自己的含义的啊,当然咱们光看名字。
05:51
是看不出来它什么意思的啊,那接下来咱们呃,重点的把这里边儿每一步都过一下,注意啊,这是咱们维度建模当中的重点重点啊,大家这块得认清了啊好来往下看,先看第一步啊,看第一步在干什么。
06:04
选择一个过程来往下翻来,咱们就看这啊。先看这吧,啊,在选择业务过程的这个这一步呢,就是在干啥啊,就是在业务过程当中,业务系统当中,业务系统就是咱们的电商系统,对吧,挑选我们所感兴趣的业务线。啊,挑选感兴趣的业务线啊,那比如说什么业务啊,比如说咱们大家都知道下单支付退款啊,物流啊,哎,什么评价呀,哎等等,这是不是都是咱们的业务啊,对不对,是这样的啊,然后呢,我们在这儿挑选出来业务,我们干什么?你要知道这有一句话,就是一条业务线,或叫做一个业务对应一张实时表。啊,也就是说白了,你的一个业务有一张实时表啊,那比如说我下单业务,我对应的是不是就会有一个下单实时表啊,那支付业务就会有一个支付实时表啊,是这样的啊一一对应的,那所以说其实说实话说白了第一步就是在干啥呀。
07:01
一步就是在确定咱们这个模型当中有几张实时表,或者有哪几个实时表,对不对,就在确定这个事儿啊,这就是咱们第一步要做的事儿啊,那这个选择这个所谓的感兴趣,什么叫感兴趣呢?啊,什么叫感兴趣啊啊所以感兴趣呢,其实就是咱们后续做分析的时候,我会分析的那些业务对不对,有一些边缘的业务,我可能我根本就不会分析,那你就可以不把它放在你的模型当中。啊是这样的啊,但是呢,我们在就是如果从单纯的这个建模这个角度去考虑啊,啊,咱们即便说你目前你觉得后边没有用的这些业务过程啊,那其实按理来说呀,你也应该把它放到维度模型当中。啊,因为什么,因为你这个建模是在干什么,是在打基础对不对,是在打基础,你并不知道啊,你并不知道你后续你可能现在用不到这个这个业务对不对,但是你并不知道你将来会不会用它对不对,那所以说我们出于这个就是更全面的一个考虑,就是你不管你现在用不用最好啊,都要把这个业务放在维度模型当中,都给它建出来啊,你不管他用不用,用的话,哎,我这有你不用就放着也没事啊,是这样的啊,那所以说咱们一般情况下那个如果说呃,咱们是呃中小型公司,我们的业务线呢,没有那么的复杂啊,那我就尽可能的把所有业务啊,咱们都给他建模啊,都都都给他选过来,都给他建一张实时表跟他对应。
08:25
啊,但如果说这个公司非常大啊,那咱们这个呃,业务非常复杂非常复杂啊,然后如果说我把那些所有的业务都建都建都都给他进行这个进进行维度建模的话呢,这个相对来说啊,这个工作量非常非常大啊,完了之后呢,这个建出来的表会很多啊,那所以说呃,就有一些这个呃业务呢,我可能后续确实不会用到啊,然后呢,工作量还比较大,那这时候呢,你就可以选择呀啊,先不去对他进行建模,先选择那些就是咱们目前这个比较有用的这些业务去建模就行了,是这样的啊,那后边如果公司大一点的话,咱们选择跟需求相关的业务线就行了。
09:04
是这样的啊,但是其实理论上啊,理论上还是啊,因为DWD是基础嘛啊,所以说理论上来说还是啊,尽可能的啊,去把咱们所有的业务线都给他进行这个选择啊,是这样的啊。好,那这块大家把这一点明确就可以了啊,也是第一步,我们实际上就是在确定维度模型当中有哪些事实表,把这点明确好,那来咱们看第二步啊,第二步呢,叫做声明力度啊,叫做声明力度,呃,这个嗯,这一步呢,其实也是比较关键的啊,那咱们在这儿呢,先把这个力度这个概念给大家说一下啊,因为大家不知道什么叫力度吧,对吧,咱们看一下力度指的是什么啊。看一下这句话,那数据的力度呢,是指数据仓库当中,哎,或者说其实也不光是数仓啊,就是任意一张表当中,你关心数据库里边也有力度这个概念啊,也有力度的概念啊,那力度指的是就是一张表里边吧,啊,就是一张表当中啊,我们这个保存的数据的细化程度,或者是综合程度的级别。
10:13
啊,这就是所谓的力度。这个估计看完这句话可能还是不是那么的好理解,对吧?那咱们这儿呢,举个例子啊,什么叫做数据的细化程度啊,或者叫什么叫做综合程度呢?啊,其实也好理解,前面咱们给大家介绍过俩概念啊,一个概念叫什么叫做明细数据,那还有一个叫什么来着,汇总数据对不对啊,明细数据我里边保存的是什么?是最原始的操作记录,一次操作一行数据,一次操作一行数据对不对啊,那这时候我们就说这张表它的力度呢,是比较细的,或者是比较小的啊,比较小的,比较细的。啊,那与之对应的是不是有一种叫做汇总数据啊,那汇总数据相当于是以明细数据为基础,然后进行聚合操作了,对吧?那OK,我这个哎,会得到一条一条的汇总数据啊,那汇总数据呢,我们就用力度去形容它,那就说什么说它的力度呢,是比较粗的或者比较大的。
11:12
啊,这就是力度的概念啊,那也就是说它其实是不是就是相当于是用来描述咱们这个呃,表当中这个数据的,哎,明细程度的呀,对不对,越明细我的力度就越小,那你越汇总,那我的力度就越越粗啊,就越大,就这意思,这就是所谓的力度啊。好,那这边声明力度,声明谁的力度呢?啊,声明谁的力度啊。实际上就声明咱们刚才在第一步是不是选了那么多的事实表啊,对不对,我选了那么多的业务,然后每个业务一定要实表,这个声明力度就是在声明咱们第一步所选的那些事实表的力度。啊,所选的力时表那些力度就是在在声明这个事儿啊好,那咱们声明这个力度到底怎么去声明呢?什么叫声明力度啊,来看这。
12:00
好,看这啊,那声明力度意味着精确定义我们的事实表当中的一行数据具体表示什么?啊,这个怎么理解啊,来大家再来重复的说,再重新重新读一遍啊,来看一下生命力度意味着精确定义事实表当中的一行数据表示什么。啊怎么理解,那比如说我现在呢,我有一个订单实时表对不对?订单业务对应订单实时表,那咱们说明力度,那订单实表的力度,呃,不是订单支付啊,咱们说支付啊,那支付实时表呢,我有一个支付,呃支支付业务呢,我有一张支付值表啊,那支付实值表的力度咱们怎么声明呢?啊,就是告诉他,OK,我这一行数据呢,我指代的就是什么呀,指代的就是一次最明细的一次操作,什么操作是不是就是支付操作呀,啊就是支付操作,这是哎关于支付啊,那我与之对应,我还有什么呀,我还有其他业务,比如说什么,比如说这个呃,订单啊订单我是不是订单业务会有一个订单实时表啊啊,那我订单实时表当中,我一行数据,我应该指代的是什么呢?
13:12
哎,这个大家能想到的应该就是啥呀,哎,我是不是订单是表一行数据指来的就是一个订单对不对啊,就是一次下单嘛,一次下单操作,哎,大家诶,应该就是这么去这么去声明这个所谓的力度啊,就是明确一行数据指代的是什么啊OK,把这个明确好了,就就相当于就声明完那这个咱们所谓的力度了啊OK,那也就是说所谓的生命力度,你真正要做的事呢,就是去明确事实表当中每行数据表示的具体是什么啊好把这点搞清楚就行啊,然后咱们去声明这个所谓的力度的时候呢,有一个原则需要去遵守什么原则呢?应该尽可能选择最小力度啊,应该尽可能选择最小力度,所谓最小力度就是什么样的数据啊,就是你这个试表应该是里边存什么样的数据啊,是不是存最明细的数据对不对,不能存汇总数据,只能存最明细的数据。
14:07
啊,是这样的啊,那问一下大家,你说为什么咱们这个WD层的这个事实表呢,需要存最明细的数据啊,为什么要选最小力度。啊,为啥呀。啊对,后边其实说了以以此来应对各种各样的需求,大家都知道啊,我们所谓的后续的需求都是什么,是不是都是一些聚合操作呀,对不对,那我聚合的时候,我这个需求我可能会聚合到这个程度,也可能会以它为基础,再聚合到更高的程度啊,再更高的程度,我是不是聚合会有不同的程度啊,对不对啊,那所以说我这儿假如啊,我保留的是最明细的啊,最原始的那那个数据,那你是不是想聚合到什么程度,我都是可以满足的呀,因为我这儿有最明细的嘛,最原始的嘛,你想聚合到什么程度就聚合到什么程度。啊,但是假如说啊,我在DW1层,我存的不是最明细的,我存的呢,是一个相对来说汇总过的数据,轻度汇总过的数据,那比如说存的是这个程度,那OK,你要存这个程度,那你再往上汇总,能不能汇总是可以的,但是我想得到这个程度的数据,你还能得到吗?你就得不到了啊是这样的啊,那所以说咱们在这的,呃,为了应对各种各样的需求,我们需要啊,去保留最明细的数据啊,也就是最小力度的数据,这个大家得搞清楚。
15:25
啊,这是比较重要的一个小一个细节啊,咱们需要搞清楚好,那接下来往下走,那这呢举了两个例子啊,典型的声明力度这个如下,那先看一个小例子,订单实时表。订单实时表当中,那它的力度应该什么样呢?它一行数据,它表示的就是一个订单当中的一个商品项,诶这个咱们怎么理解啊,这个好像跟刚才咱们说的不一样,我们刚才自己去想的时候,我们说订单实时表,嗯,它里边的一行数据是应该对应一个订单呀,对不对,当然要要搞清楚,对于订单来说啊,对于订单来说,我们在嗯买cel当中,在咱们业务系统当中是不是有两张跟订单相关的表啊。
16:06
一张是那个older info,一张是谁?是older detail对不对?嗯,那older INF当中一行数据指的是一个订单,那order detail当中呢,一行数据指的是一个订单里边的一个商品项,对不对?那你说这俩数据谁更明晰一些呀?那很显示order detail当中的数据会更明细一些吧。对不对啊,因为它相当于是把一个订单里边的一个商品项啊,把一个订单给拆开了啊,是这样的,那所以说呃,从这个角度去考虑,那很显然是older detail的数据更明细一些,也就是它的力度呢更小一些啊,那所以说按照咱们这这个要求呢,我们订单业务对应的实时表,那它的力度呢,就应该是跟order detail那个力度是一样的啊,就是订单时表当中一行数据表示的应该是一个订单当中的一个商品项才对。啊,是这样的啊。
17:00
把这个搞清楚好,那这块咱们再举一个具体的例子吧,举一个具体例子啊,那咱们呃,对比一下啊,假如说我现在呢,我的订单实时表啊,我并没有选择注意啊,并没有选择最小力度,我选的就是欧引售那张表啊,跟它的力度一样啊,那也就是你一行数据是不是就是一个订单啊,一行数据一个订单,那比如说我现在呢,想统计一下我们今天啊,注意听啊,想统计一下我们今天啊所有被下单的商品。啊,有哪些。哎,你看你这能统计出来吗。所有被下单的商品有哪些,你看你那能统计出来吗?你统计不出来啊,为啥?因为咱们订单十表当中啊,我现在这个力度什么是一行数据,是一个订单对吧,一个订单,那我这里边儿有那个商品信息吗?没有没有,那所以说你是不是这个信息,你就相当于统计不了了呀,对不对,那反反过来呢,我现在呢,想统计一下什么东西,统计一下咱们今天啊,整完整的一个下单金额。
18:06
你说我从这个order info当中能不能统计出来可以,因为我这儿有金额,对吧?那也就是说我用order info的话,我有一个需求是能做的,有一个是做不了的,对不对?那现在呢,我们用谁?我们用older detail啊这个力度啊,那也就是说我们订单实时表当中呢,我们一行数据是一个订单里边的一个商品项啊,那这时候我们再去考虑刚才那俩需求啊,统计一下今天那个所有被下单的商品能不能统计,能在这里边是不是就有记录啊,啊,一行数据就是一个商品嘛,啊,那OK,那我们再来统计另外一个需求,统计一下今天完整的所有的这个订单的总的下单金额能不能统计也能啊,对不对,也是可以的,因为我这里边一个商品项是不是也有一个金额呀啊,那把它们都加起来,就也就是所有订单的这个总的下单金额也能,那所以说通过刚才这个具体的例子呢,咱们就能体会到了啊,如果说我选择最小力度,那我所有的需求都能应对啊,反之如果说不是最小力度,那有些需求你可能就做不了了。
19:04
好,那这一点咱们明确就行了,这是呃一个小例子,那接下来再看下边啊,下边这呢,有一个支付实时表当中的一行数据表示的应该是什么啊,其实对于支付这个业务来说呢,你思考一下啊,你说支付的时候,咱们需要考虑我那个商品是什么吗?从单纯从咱们这个业务系统来考虑,需要考虑吗?不需要考虑,因为支付的时候我只关心什么,只关心你那个订单的总金额对不对啊,我不管你买了什么东西啊,你给我的就是一个金额,那我就支付就完事了,那所以说呃,以他从他这儿来说呢,我们并没有什么力度可以选择啊,我只有一个力度就是一行数据,那就是一次支付记录,那就完事了啊是这样了啊,那咱们把这点诶给他考虑清楚。行,那到这一步呢,我们相当于就给大家阐述完了啊,这个声明力度是在做什么?好,那咱们把刚才这两步简单说一下啊,那第一步就是在选择咱们模型当中一共有哪些实时表,那第二步呢,就是在确定每张实时表当中一行数据所指代的是什么,所指代的是什么啊把这点搞清楚,然后接下来往下走。
20:13
第三一步,第三一步呢,是确认维度啊,确认维度啊,那确认维度呢,其实在这儿呢,指的是什么啊,确认维度,那咱们指的是什么呀。是不是应该是确认,我们刚才是不是选了一大堆的事实表啊,对不对,你这一步呢,就是在确认每张事实表跟哪些维度是有关系的。就是在确不确认这个事儿。啊,那比如说咱们举第一个例子啊,举举例一个啊,咱们比如说以支付为例吧,支付为例,那你说支付它应跟什么维度有关系啊。首先跟时间维度肯定是有关系的,我们数仓当中所有的事实表跟时间维度都是有关系的,为什么是不是所有事实表咱们都保留历史数据了呀,保留历史数据,那你就会用到这个时间维度表啊,那所以说都跟时间维度相关啊,那支付时表跟咱们的用户维度有没有关系呢?
21:09
有关系,咱们得知道是谁支付了对吧?啊,那他还跟谁有关系啊,比如说跟我们的地区维度啊,也是有关系的,哎,等等等等,那也就是说你要做的事就是这个确认每一个啊,咱们这个事实表啊,与之相关的维度。啊,与之相关的维度,那这个相不相关,这个得从哪去考虑啊。得从哪去考虑?得从咱们业务系统它的业务逻辑去考虑了,对吧?啊,得从那去考虑了啊,那所以说咱们需要去确认每一个业务,呃,那个实时表的它的这个相关的维度啊,跟他相关的维度啊,这是第三步要做的事啊行,那接下来咱们看最后一步啊,确认事实。分事实这一步在干什么啊,此处的这个事实,此处这个事实呢,其实指的就是咱们那个度量值了啊,就是度量值了,那其实这一步就是干啥呀,你可以考虑一下啊,我们前三步做完之后,那基本上咱们已经明确了每张事实表啊,就是已经明确了,咱们一共有哪些实表,是不是已经明确了呀,那经过第三步呢,咱们确认维度,确认维度其实说实话就是在确认什么,说白了确认什么。
22:17
是不是确认你每一张实时表当中那个维度外界呀,对不对啊,跟他关联,我就需要有一个它的维度外界就是在确认这个事儿,那所以说我们第四步实际上就在干啥,确认事实就是在确认什么呀,确认每一个事实表当中那个度量值是什么。啊,因为都知道啊,事实表当中我的字段就两类,一类是维度外建,一类是度量值,那你的维度外建第三步确定了,那第四步就是确认你的度量值是什么啊,当然呢,我不同的试时表,我的度量值是不一样的啊下单这个试表啊,那我里边呢,可能会有什么呀,可能会有比如商品的件数啊,然后呢,这个原始金额,这个优惠金额,什么运费啊,什么最终金额,这是不是都是它的金额呀,都是度量值啊,那对于支付来说呢,那就是支付金额等等等等是这样的啊,那所以说最后一步就是在确认每张事实表当中的那个度量值。
23:11
啊,不同的业务有不同的度量值啊,这是第四步做的事。好啊,那从第一步开始到最后一步,咱们都做完之后呢,那基本上咱们就已经明确了,我们整个数仓有哪些实施表,然后每一张实时表当中有什么字段就确定下来了。啊,那当然,咱们现在是不是只是确定了是时表啊,只是确定了时表,那纬度表呢。维度该怎么确定啊?规格怎么决定?维度表呢,那首先我们得先明确咱们有哪些维度表啊,那肯定会有的维度表呢,有时间维度啊,然后呢,还有什么维度啊啊,还有什么用户维度,地区维度,商品维度啊,那大家去选维度的时候呢,可以按照咱们同学之前之前的那个理解方式,你就从你的关系型数据库里边,你这个业务数据表里,你就去挑就行了,挑什么呀,挑所谓的这种名词,这种描述性的这种啊,这个呃表,描述性的表。
24:11
啊,是这样的啊,你就去挑就行了啊,然后在业务系统挑出来之后呢,你到了维度模型当中,你需要去做一个相应的转化啊,做什么样的转化呢?咱们举个例子啊,比如说我这儿呢,是不是肯定需要有一个商品维度表啊,一个商品维度表OK,咱们把这个商品维度表给他先找到,那你就去咱们的那个关型数据库里啊,把这个打开啊,这是之前呢,我们做采集项目的时候,咱们画的那个关型数据库里边那个业务业务系统那表,对吧,咱们把它拿过来,比如说我现在呢,需要一个商品维度表,那需要商品维度表的话,那你就需要怎么做,你需要去关系数据库里边啊也其实说白了就是ods层对吧,从o Dis层你需要呢,把所有跟商品相关的表都找到。啊,咱们跟商品相关的表是不是有这几个SK啊,三级分类加上s po加上品牌,是不是有这么一大堆表啊,你把他们都找到,都找到之后,然后到了维度模型当中,你需要怎么做呀,需要把这一大堆的表给它变成一张表啊,所谓变成一张,一张表就怎么变呀。
25:12
是不是就是join起来呀,啊,然后字段呢,把这六张表的字段呢,给它拼到一张表里,然后呢,往这里边导数据的过程,实际上就在干啥,是不是就是join的一个过程,把这六张表照到一起放在这就行了啊,组成咱们这个商品维度表。是这样的,那同理我其他的维度也是这么去做,地区维度表,你就找跟地区相关的表,然后呢,给它并在一起拿过来就行了,啊是这样的一个过程啊,这是关于维度表啊,维度表相对来说呢,比较简单啊,啊那到这儿呢,我们就相当于完成了咱们这个四步的这个阐述啊。这四步咱们就开始完了啊行,那接下来呢,我们给大家演示一下啊,咱们光讲完这四步了,到底怎么去做呢?啊,可能还大家还不是很明确,咱们接下来把这个四步呢给大家演示一下啊来,我把视频先录一下吧。
我来说两句