00:00
好啊,那这个任务已经提交上去了,那他还得去执行一会儿,我们先等一等他啊,然后呢,现在我们来讨论另外一个问题啊,另外一个问题是什么呢?大家给我思考一下啊,大家回忆一下我们刚才是如何去提交麒麟当中的这个预计算任务的。咱们现在这个计算是不是就是所谓的预计算呀,对吧?啊,咱们是如何提交这个预计算的任务,怎么提交的,是不是点I对不对,点这个build,然后传个日期,然后他就去计算指定的这个日期的数据了,对吧?那你说离线计算我们数仓数是每天都有新数据产生,那咱们每天是不是都得去进行相应的计算,对不对,那我们总不能说安排一个人在这手动每天去点一下呢,对不对?诶那咱应该怎么做呢?我我应该怎么样,我应该把这个麒麟的cub构建的任务给它融入到哪。是不是融入到我们那个阿卡的调度的全流程当中啊,对吧,没错吧,诶那这样一来的话呢,诶咱们让这个麒麟呢,诶每天自动去构建新的Q啊,啊这样下来是不是最好的呀,对不对,那怎样去实现麒麟自动构建QB的这个功能呢?
01:05
再去实现。对,咱去实验,那如果也能像我们之前的那个havell circle一样,对吧?我把需要计算的任务呢,我给它放到哪儿,放到一个shell脚本当中,放shell脚本当中之后,是不是就可以使用阿兹卡班的command的这种任务类型去调度了呀,对吧?OK,那麒麟的cub构建任务能不能在山耀脚本当中完成呢?可不可以?其实可以的啊,那当然现在我们这个操作方式肯定是不行的,你是不是得人打开页面去点啊,对吧?啊,这种方式肯定是不行,我们可以怎么做呢?哎,咱们可以这样去做,我们在这儿呢,可以用麒麟的rest API去实现我们想要的这个功能,Rest API前面提到过,麒麟它是不是提供了丰富的接口,对吧?有什么rest API,还有什么JDBCOC,对吧?那rice API是什么来着,还能想起来吗?是不是就是给我们提供了一个呃,这个访问的地址对吧?咱们按照它的要求给他传入相应的这个呃,参数发送箱的请求,那咱是不是就能得到相应的响应啊,对吧?这就是rest CPI啊,那实际上麒麟这个rest CPI的功能是非常非常的全面的啊,你在这个外部页面上能做的所有操作都能够通过软PI去实现。
02:14
啊,是非常强大的啊,那现在呢,我们去找一下它的片到底怎么用来,那现在我们打开官网啊,呃,咱们的文档当中没有这部分内容,咱们得去看一下官网啊,那现在呢,我们找到这个官网,官网找谁是找这个documents document对吧点。嗯,那点完之后你会往下走,往下走找到这个最底下,呃,到到这个位置啊,这是不是有一个how to啊对吧,How to use for API对吧,那现咱们点一下。嗯,好点完之后呢,你会发现啊,这里边是不是就是我们所有的rest VI对吧?这里边它做了一个这个相应的呃分类对吧?这什么就是a kitchen是不是认证啊对吧?那下面还有啥什么query query是不是跟查询相关的对吧?那再往下这个什么相关,跟cube相关对不对,那这个呢是跟啊什么model相关,跟drop相关等等等等啊那这些都是咱们能够使用的red CPI啊,是这样的啊,那现在呢,我们要想去呃使用这个red CPI去调度我们这个任务的构建,你说我们应该找跟谁相关的呀。
03:16
是不是找跟Q相关的,对不对,找到跟相关的,你看这是有啥。这个什么CU,有什么update CU,有什么cube cube等等,这是不是都是跟Q相关的,那还有一个比如它这build CU,那我们要用的实际上应该就是谁呀,是不是就是这个build q呀,是这样的,OK啊,那当然了,这个build q它用起来相对要复杂一点啊,我们第一次接触这个re CPI对吧?那现在我们先找一个简单的去学习一下这个RACPI,咱们找一个谁谁比较简单呀,是不是查询是比较简单的呀,对吧?哎,我们看一看我怎样去使用RACPI去查询咱们这个数据,那正好呢,去看一看我们这个结果有没有计算完对吧?啊,那现在来到启动的工作界面,你找到这个monitor来刷新一下啊,正好还得稍微等一会儿,对吧,等一会儿是不是才能这个计算完呀,对吧?呃,这个应该后边就很快了,应该超不过这个两三分钟,咱们稍微等一会儿啊,等它计算完了,完了之后呢,我们去使用这个麒麟的这个查询的rest CPI去查询一下,那完了之后呢,就是相当于去学习一下这个rest CPI怎么用,学完之后呢,我们再去看如何去编写我们这个Q。
04:22
所构建的脚本啊,是这样的啊,那咱们现在先点到这个query这边这样吧,来点过来,点完之后咱们简单看一看这个东西到底怎么用啊,内容很简洁对不对,大家看啊这儿首先这是我们那个query对不对,完了之后呢,这个就是我们要请求的这个API地址,大家看啊,首先前边这个是啥呀。Post这个指的是我们需要给他发送的这个请求的类型,那到这我们这TP请求呢,是不是有什么get请求,Post请求啊对吧,那这个API要求我们发送的是POS请求,OK,那接着往下走,那这个是啥呀。这是不是就是我们要请求的那个资源路径啊,对吧?那当然啊,我们需要在这个路径的前面加K。
05:04
需要加上这个是不是需要加上麒麟的主机名和逗口号对不对,那也就是我们要请求的这个完整的地址应该是啥?是不是应该是HTTP啊,然后呢,冒号啊,这个HI1呃,双斜线hi度102,然后冒号7070,后边是不是再加上k API qua瑞啊对吧?这是我们要请求的完整地址,这个一定要注意一下啊好,那现在往下走,下边是不是有一个request body啊对吧?那前面咱们那个同学给咱们分享过啊,说我们一个请求呢,是不是包含hier也包含body啊对吧?那在这儿我们包里面就是我们要传过去的一些数据题啊OK,那接下来我们来看一下这里边需要传啥啊对,什么传circle,这个是最重要的吧,你请求你查询,你是不是又是给他写circle,是这个道理吧,这是最重要的,那除此之外呢,还有一些其他的内容,我们先暂时不看啊,那现在来看下边。下边呢,这儿是不是有一个example啊,对吧,什么example CU URL example,大家还记得这个cul吗?我们在之前学习阿卡班的时候,是不是就用这个命令去激活过阿卡班的exor,对吧?当时给大家说了啊,这个工具呢,是一个非常强大的能够发送各种各样的请求的一个工具,对吧?那在这儿我们是不是也可以用pass去发送咱们这个,诶,相应的这个请求啊,对吧?OK,那现在呢,我们把这个粘出来看一看它是怎么写的啊,来复制,复制之后呢,我放在这个里边看一眼啊,来,我们新建一个文件。
06:25
CTRLV来一起看一下啊,同学们来看它怎么写的,那首先呢,呃,是不是调用CR这个命令完之后呢,有一个啥,是不是杠X,杠X后边是不是传了一个pose,这是啥意思?你都不知道是不是猜也能猜出来,这是不是就在指明请求类型等于POS请求是这个道理吧,然后往下走,这叫啥?这是不是就咱们那个杠H,杠HG是啥呀?啊对,就是那hi啊,一个一个hi点,那这里边首先看第一个hi点,这是啥?是不是alsoization呀,对吧?这是啥呀,是不是认证啊对吧?再想想我使用麒麟的时候,那咱们在web页面上还得干啥呢?是不是还得输入用户名密码得登录啊,对吧?那我在这种方式用rest方rest API的方式去访问麒麟,是不是也得认证,对不对?所以在这儿我需要做认证,那认证后边怎么认证,你看他写的是啥。
07:10
什么贝后边一大堆叉对吧?这啥意思?哎,对,给大家说一下啊,那此处呢,这个叉叉的位置我们需要替换成自己的用户名加密码,当然呢,你不能写铭文,那他要求的加密方式是什么呢?是BASE64,那我们这儿需要这么去做啊,将自己的用户名拼上一个冒号啊,当然是一个英文的冒号啊,英文的冒号,然后后面再拼上自己的密码,那咱这就啥。是不是就是admin冒号kidding对吧?然后呢,将这个字符串使用贝斯64这种加密方式给它加密啊,然后加密之后呢,就会得到一个随机字符串,然后我们需要将这个随机字串放在这个位置,这就完成了认证了啊OK,那再往下走,下面呢是什么content这个配内容类型就是接算这个咱不用管啊,不用改,然后往下走,再往后是不是咱们这个请求体的内容来对吧?那往下走,你看这里面有啥,这是不是刚才咱咱们看到一个词口对不对,我们需要把自己的词都放在这儿啊,那再往下走,这有个啥,是不是有个对这个project该填。
08:09
Project是不是应该填写我们要查询的这个cube所在的project是不是这个这个一定要注意啊,然后再往下走,那下边就是啥,下边是不是就是咱要请求的地址啊,对吧,你看啊HTP,然后咱这是不是得改成1027070K0API query是这个道理吧,好,那现在呢,我们按照它的要求,诶咱们去做一些相应的修改啊,咱们需要修剪哪收银。是不是这块得改一下对吧?那咱们怎么去加密,那这个最简单一种方式呢,你可以比如百度一个找一个这个base,这个64这个加密回车,那在这儿呢,我们就找呃,这个站场工具吧,找这个啊那完了之后呢,我们需要将自己的用户名和密码是不是写在这儿,对咱们的用户名是啥,是adn大写的对吧,还有一个英文的冒号,再拼上一个密码大写的,完之后呢,点击下边的BASE64加密完了,现在咱是不是得到了一个加密之后的字符串,对吧,咱们复制一下,复制之后呢,给它放在这个位置,Controltrl啊,那现在完成了登录了,接来下一步啊,下一步我们是不是得把这个思路得改一下呀,对吧?那咱们得查询自己的这个表啊,那怎么查询?
09:13
怎么写三考啊,其实咱们这看一下这我这诶我这是不是已经跑完了,就跑完之后,其实理论来签字就可以查数据了,对吧?其实在这个外部页面上啊,也能写也也能写S去查询数据在哪写这个inside inside什么意思,是不是就洞察的意思,对吧?来我们来洞察一下这个数据啊,来点击inside,点了inside之后大家注意观察,你看这个这边是不是会有几张表,对吧,这几张表实际上是什么表。是不是就是我们参与cube计算的那几张表,以及参与cube计算的相关字段,对吧?也就是我们在这写serve的时候,那就像是啥,是不是就像是从我们have当中的原始表里边查数据一样,是这个道理吧?但是要注意一下啊,这个原始表当中的某些字段你是查不了的,没有参与cube计段的字段你能查吗?是不能查的,那再有一个啊,没有参与计算的这个聚合你能查吗?咱们这聚合是不是只有三个求和,比如说我现在我想求一个麦克斯最大值,能求吗?
10:09
求不了,你要查,你只能查啥,只能查我们提前预计算的结果,能理解吧,这你一定要注意一下啊,就是有同学在这呢,我经常会做这样一个测试,比如说我来一个什么诶select星哎,From来from上,比如说随便来一个,比如说ods的,呃,没有ods对吧,咱们个是啥,应该是DWD对吧,比如来一个什么o dtl,那你说这个结果它是什么样的。咱们查一下。诶,你会发现这里边啥都没有对吧?哎,这个一定要注意一下啊,就是查你只能查啥,只能查我们聚合之后的结果,那咱们聚合之后结果是啥样的,是不是按照维度计算结有分组,然后呢,对度量值进行聚合呀,对不对,那比如说我现在呢,想去看一下啊,看一下什么,看一下不同的地区吧,咱们看一下不同地区的,呃,这个订单金额总和啊,那你说这个怎么看,是不是应该是先不说选啥,说from from。
11:03
是不是应该找到订单实表,应该找到DWD层的,是不是order de detail对不对,弄完之后呢。他需要干啥?事实表示是得关,能直接过外,不能啊,你得关联到维度表,拿到这个region name是不是才能分组统计对吧?得关联,然后大家要注意一下,我们关联的时候呢,有两个点要注意,第一个点,关联的类型必须得跟我们之前定义猫的时候类型一样,对吧?我们当时是因儿照,现在是不是也得in儿照呀,对吧?这个理解一下,然后再有一个啊,此处我们在写关联关系的时候,必须保证事实表在前,纬度表在后啊,这是它的一个要求,必须保证事实表在前啊,啊,那现在我市表是不就在前面对吧?啊,一个照照后边呢,加上我们的维度表,那应该是dim对吧?那在这呢,我们给他们分别起一个别名,这个呢我就起名为OD,那这个呢,我就起名为BP啊,那它的连接条件应该是啥?应是on OD点,呃,应该是pro RO v pro对吧?VIN c province ID应该等于呃,BP.id那这个是不是已经关联上了对吧?关联上之后,那接下来是不是就可。
12:11
分组聚合了,那我们在后边再来一个,哎,BY谁是不是如BY咱们这个O,呃,应该是BP对吧?BP里边的这个region name对吧,Rel na na,这个没有问题吧?好,那现在我们前边是不是就能选择咱们这个分组字段以及聚合函数了,对吧?CTRLV拿过来,那再来一个S求和,那刚才我们说要求的是啥,随便来吧,比如说来一个什么SQ number也一样,这是不是下单的商品键啊,对吧,随便来一个就行,然后呢,我们现在查询一下,点击submit submit。大家观察,你看这个结果是不是就出来了,而且这个查询时间快不快。对吧,0.9万还是很快的啊,那有同学可能刚刚说了啊,为什么我刚才我第一次执行那个什么select星的时候没有这么快呢。啊,咱第一次写来形是不是感觉有点慢对吧,半天才出来一个空值啊,这是为啥呀,我大解释一下啊,那实际上啊,咱们得知道我们现在从这查数据,它是从哪查的,是从h base这查的对不对,那你要想从h base这查数据,你首先得先看啥,是不是得先建立与h base的一个连接。
13:18
对吧,那大家之前有没有写过h base的Java API呀,写没写。写过对吧?那写的时候第一步是不是得先创建一个connection,实际上那个connection的创建的是一个非常重的操作,因为它那个connection啊,不是一个单纯的链接,那个connection耐对象当中呢,包含了我们的客户端与组K的连接,与region so的连接,以及与base的master的连接,也就是那个连接的创建是非常慢的,那所以我们第一次查询是不是显得就会比较慢,那一旦当这个连接创建出来了,那咱这是不是就不需要再重复创建了,对吧?诶,那这个速度就会快一些啊,这个大家理解理解理解一下就行了啊好,那现在我这已经能查出来结果了,能查来结果那就说明我们这个计算是没有问题的,对吧?好,那现在我们肯定得把它拿过来,咱们重点要干啥啊,重点是不是现在要学习的这个CPI对吧,咱们再回过来啊,把这个circle是不是给它放在这就行了,对吧?那接下来我们继续往下走,那这个project是不是得改一下,改成我们自己的那个,然后后面这个主机名得改成。
14:19
102,这个没问题吧,好,那现在CTRLC拿过来,接下来我就可以去执行这个了啊,那有有地方忘改了是吧,没有没有吧,没有CTRLC拿过来啊,那你说我们在哪在哪去执行这个这个这个命令啊。其实在哪执行都可以,只要你保证你能够访问high族102这个节点是不是就可以对吧?那现在呢,比如说我在103执行一下行不行,没问题啊,那现在我们回车啊,那这时候他是不是给我们响应了一个杰森啊,对吧?OK,这个杰森当然看起来就比较乱啊,咱们可以给他复制一下,复制完之后呢,给他美化一下,看一下啊,来找到我这个接色的美化工具,好CTRL我给你拿过来。好,大家一起来看一下,那这里边呢,会有一些啊什么列的原数据信息,咱们就不看了啊,咱们往下走看哪呢,看下面这个results result是不是就查询的结果,对吧?这展示的结果跟我们刚刚在页面上看到的结果是不是应该是一样的呀,对吧?OK,那这就是这个所谓的rest CPI的这个使用方式,非常非常简单,好,那现在大家应该已经知道这个CPI是什么了,也已经知道怎么去用它了,对吧?那接下来呢,我们就来看一下,诶,咱们到底如何去使用CPI去实现我们每日定时构建Q的功能,那现在首先我们就得先找到。
15:31
是不是得先找到与构建cube相关的API啊,对吧?找到cube,然后找到是不是build CU啊对吧?在这咱们点一下,点完之后呢,我们来看一下这个build cube它的要求是什么?首先这时候他让我,他让我发的请求是什么要求了,不是post,是po的请求对吧?那我们就按照这要求指明po的请求就可以了,然后再往下走,这个是不是他要请求的地址对不对?当然前面是不是也得加上主机名和等号啊,那完了之后往下走,下边下边,那再往下呢,是不是还有一个什么pass或者variableable啊,什么意思?Pass是哪个pass,这是不是我们请求的路径对吧?那大家注意观察,这里边是不是会有一个变量对不对?这个变量应该是啥呀?
16:09
是不是就是你要构建的那个CU的名称,对不对,你构建不同的CU吧,此处是不是得提,然后对应的Q名称啊好,我再往下走,那下边呢,也是有一个这个呃,C example,那我们现在来看一下这个一个example啊来复制一下来拿过来CTRLV,好,我们一起来看一下,看这个能不能看懂啊来咱们先看这个位置。CR-s put是put请求对不对,那同样还是我们刚刚的那个什么认证,以及这个这两个对吧,这个不多说,然后往下边比较重要看这。这个里边是不是有一个start time,这里边是不是也有一个end time,对不对?这个起始时间和结束时间对应的实际上就是啥?就是我们在页面上去提交任务的时候,弹出来一个对话框,对吧?那时候是不是让我们传一个开始和结束日期对吧?那现在我们也要传啊,其实就是通过这两个时间窗去限定我们要计算的这个数据的,好,再往下走,下面是不是有一个build type,这个不用改,就是build就行了,然后再下,下面是不是就咱们要请求的地址啊,我们需要做的呢,就是改动口号,改主机名,然后呢,后边这个cube名称是不是也得改呀,对吧?诶那只要这个命令你给他改完了,改完之后呢,那就这么这么多了,它是不是就能够帮你去构建这个cube当中的啊,这段时间的数据了呀,对吧,就这个意思啊,OK,好大大想想啊,这个命呢,咱们会用了,会用了之后你说脚本应该怎么写,你说脚本的核心内容应该是啥呀,这个命令咱是不是得封装到一个脚本才能让卡去焦,对吧?那怎么去封这个脚本呢?这个脚本的核心内容应该是什。
17:40
对,核心内容实际上就是这两个时间圈对不对,没错吧,那我们应该让他能够干啥,让他自动去计算前一天的这个起始时间和前一天的结束时间,没错吧,那你说这个起始和结束时间应该是应该等于啥呀?比如说我今天应今天是16号了,16号那我是不是应该记得前一天的数据,那前出这应该怎么写,这个死在二胎,我是不是就应该等于15号的00:00:00的时间串。
18:09
是是这个道理吧,OK,那它的结束时间呢,是不是就等于呃这个呃,2020年6月15号的24时00:00:00的时间窗,那其实也就是16号的00:00:00的间窗,对吧?啊就这个意思,大家理解一下就行了,OK,那那那我们这儿应该怎么办呢?就应该让我们这个脚本呢,能够自动去计算前一天的00:00:00的时间窗和前一天的24时零分零秒它的一个时间窗啊,OK啊,那怎么去计算这个时间呢?然后大家再注意观察一下啊,这个时间的位数是几位?几位是13位对不对?13位也就是他的单位是啥呀?单位是毫秒,这个一定要注意一下啊好,那现在呢,我们就来想想这个脚本到底怎么写。怎么写,其实就是这俩时间,对吧?时间处理好咱这个脚本是不是就写完了呀,对吧?OK,那在这儿呢,我就不再卖关子了啊,文档当中我已经给大家准备好了,那现在呢,我们把这个脚本摘出来,我给大家讲一讲这个脚本到底怎么写呢?来CTRLCTR位来一起看一下啊,那首先呢,我我先调一下这个格式啊,我给它调成这个,呃,BA,嗯,好,我们一起来看一下啊,那首先在这儿呢,我声明了一个变量叫做q name,这个q name其实就是我们将来要构建的那个名称,对吧?大家要注意啊,这个东西得替换到哪,是不是得替换到我们最终请求的那个URL当中,没错吧,这个要注意啊,啊,继续往下走,那这儿我声明的一个变量,这是啥?是不是do date do date等于啥?等于date当体减一代加百分F,它的返回结果应该是什么?是不应是前一天的年杠月杠日是不是只当日对吧?它有后边的十分秒吗?没有百分F是不是只当日啊,对吧?好,这个大家理解一下,然后继往下走,那下边呢,我获取的就是前一日的00:00:00的时间串,你看我这怎么获取,大家注意观察啊。
19:56
这个就是我获取这个实验分的方式,来看看能不能看懂啊,那首先我这里边是不是还是有一个反引号,一个标号,对吧,它是不是就会把这个命令的这个结果返回给前面的变量,对吧?那看一下这个命令具体内容是什么,来看一下这个是啥。
20:11
Date-D啊,完了之后呢,这啥是不是Dollar do date完之后呢,Do是不是就是我们刚才那个前一天的年月日啊,对吧,后边我是不是又给他拼了一个空格,然后后边呢,八点00:00。能理解吧,也就是说我这这个时间呢,是什么,是前一天的八点钟。是前天的八点钟啊,完了之后边咱们先不不考虑这个八点是怎么回事,我们看后边,后边咱们用一个啥,是不是用的一个百分号S对吧,这个百分号S的作用大家还记得是啥不。是不是转成时间团对不对,然后我们来看一下啊,那这个执行一个这个DA,对,然后杠杠HP对吧,然后我们找一下干这个百分S啊看这。这是不是就是那个百分2S对不对,注意啊,这个百分2S它返回的结果是啥?是自UTC时间,这个UTC时间我之前我给大家说过,对吧?UTC时间是什么,什么意思来的是世界协调时间对不对?OK啊,那全世界它的那个UTC时间都是什么样的,都是一样的,对不对,这要搞清楚啊,拿完之后往下走,那这个是从这个UTC时间1970年1月1号00:00:00以来经过的秒数。
21:24
啊,它反馈结果是秒数,我们要的是啥,我要是毫秒对不对,那怎么把秒转成毫秒,很简单,在这儿我是不是直接给他乘个1000就能得到毫秒啊,对不对,那所以说这是我们,诶程1000这个操作的一个目的啊,那现在呢,我们再来讨论一下啊,讨论什么东西,我们再讨论这个问题。就是这儿,我为什么要加一个八点钟。啊对,肯定是跟时续有关的对吧?啊,那为什么我不是一个这个,呃,为什么是八点钟,而不是这个前一天晚上那个往往回推八个小时的时间呢?这个是怎么一回事儿,我去在这儿呢,我给大家解释一下啊,那这块呢,呃,稍微有点让大家要搞清楚,首先这个时区的概念大家得搞清楚,对吧?时区的概念先搞清楚啊是这样的啊,那现在我们来来分析一个问题啊,你说你在那写一个时间串,你在那写一个时间圈啊,这个时间圈是什么来着?
22:13
这个返回的命令是什么?是自UTC时间对不对,1970年,诶是什么这个,呃,7月1号00:00:00,然后到这儿经历的秒数对不对,那你说这个秒数啊,它是不是固定的。是不是在世界上任何地方,诶,我这个时间段我是不是都是一样的,为啥?因为前面提到了UTC时间是不是世界协调时间,全世界是不是都一样,对不对,但是你要注意啊,最终咱们麒麟拿到这个时间砖之后需要干啥呀?他是拿这个时间串去过滤数据的吗?不是,它得把这个时间串转成啥,是不是得转成时间字符串,为什么转成时间字符串,这个大家还能想起来不?你看啊,我们之前在去构建这个model的时候啊,在构建这个model时候,我看还能不能看一下啊,咱们点一下这个I,点一下这个iit啊,现在还看不了啊,那因为大家应该有项啊,我们我们去构建这个猫的时候,最后一步咱们干啥了?是不是指明了一个时间分区的字段对吧?然后呢,还指明了一个啥是不时间的格式对吧?年杠月杠日对吧?那也就是麒麟他拿到咱们这个时间串之后,最终他得干啥呀?是不就转成一个我们期望的那个格式的时间字符串,哪一年哪一月哪一日,对不对啊,但是你要想一想啊,那由这个时间串我们转成时间字符串的时候,你就得考虑什么问题了。
23:34
是不是就得考虑时区的问题了,是这个道理吧,对吧,那这个时间串是固定的,全世界都是一样的,对不对,但是我转成这个时间时间字符串的时候,那就不一样了,我是不是就得考虑时区对不对?那麒麟他在转的时候,它是按什么时区转的呢?他转成哪个时区的时间了呢。啊,他其实转的是零时区啊,他转的是零时区啊,他是这么去转的啊,OK,那零时区跟咱们东八区差的是不是就是八个小时啊,对吧?啊那所以在这儿呢,我我们应该怎么应该整八点的这个时间啊,在这呢,其实我可以给大家去呃演示一下,咱们举个小例子,比说在这儿呢,我我我比如说date一下,Date完之后呢,后边来一个这个加呃百分号,什么加百分号啊,比如说S加分号S啊,那加百分号S之后,那咱们现在得到的啥是不是就是现在的这个呃时间窗啊对吧?OK,那这个时间窗刚才说了,全世界是不是都是一样的,对不对,那现在我把这个时间窗转成时间柱串,那怎么转?诶我这儿也有一个工具啊,把这个插件打开,里边是不是有一个这个时间串转换呀,对吧?啊,那现在我把刚刚我得到的这个时间串我复制一下拿回来,拿回来之后呢,我给它放到哪啊呃,这是不是U尼克时间串转当地时间呀,对吧?这个单位呢,你可以选择秒,也可以选择毫秒,我选秒对吧。
24:50
对吧,那CRL拿回来完之后,那注意注意观察,我转转完之后,那现在这个时间是不是对的,是对的对吧?那刚才你看到了这是啥,这是不是UUN时间块转当地时间啊,对吧?那咱们当地是什么时间,是东巴区啊对东巴区他转过来是不是正常的,没没有任何问题,对不对,但是我刚才提到了,我说麒麟的转的是是是东八区吗?不是,他转的是哪个市区,是零时区,我们往下看啊,那下边呢,诶在这写就能看到这个时区,咱是不是能选,咱能选了啊,他选的是零时区,那咱们找一个零时区,零区在哪。
25:22
呃,就是GMT标准这个隔离一致标准对吧?啊,你点一下,点完之后呢,我们再转一下,哎,你会发现啊,这个时间跟我们期望的时间差多少。是不是正好就差这个半个小时啊,对吧,而且是比咱们怎么半个小时,这这早还是晚,这是早还是晚,是早八个小时吧,对不对,咱们现在是15点呀,对吧,他转成这个起点了啊,肯定是早八个小时,对不对啊,那所以说我为了保证咱们能够准确的得到谁得到我们想要的这个时间,所以说我得在他这个呃,真正的时间的基础上怎么样,是不是加上八个小时,我才能得到咱这个真正的时间呀,是这个道理吧,啊,咱们得这样去做才行啊,OK,这个能能不能理解,能不能理解。
26:09
啊,我我我再我再解释一下啊,那刚才咱们说了麒麟它转的时候,它会把我们给人的时间戳转成哪个时区的时间,是格林威置时间,对吧?也就是零时区的时间,对不对,你会发现零时区的时间,这是我们想要的呢,它不是我们想要的对不对,我们想要的应该是这个15:47对不对,是这个道理吧?啊那所以说我要想让他得到咱们这个15:47的,我得怎么,我是不是得在这个基础上加上八个小时,你这儿加八个小时,他转完之后是不是他也加八个小时,他加半小时之后是不是就15:47了,哎,就这么一回事啊,那所以在这儿呢,我们需要哎去写上这个,呃,这个八八点,这个得写一下,这个一定要注意一下啊,那OK,行,那这样一来的话呢,我们就已经能拿到这个我们想要的时间圈了,当然这个是秒,我们乘以一切得到毫秒,好继续往下走,那零点的得到了,其实24点是不是就容易了,对吧?零点的到二十四点两的咱们咱们应该能知道我这一天里边一共有多少毫秒吧,对不对,我直接给它加上一天的毫秒数是。
27:10
对,就完事了,这就是一天的毫秒分,OK,那这样一来我们就得到了前一天的00:00:00的时间装,以及前一天的24时零分零秒的时间分了啊好在到之后继续下头,下面呢,我们就可以把我们获取的这些时间变量以及cube的名称的变量是不是写到这个呃,命令当中了呀,对吧,那对应的替换就可以了,这引用star类了,这个引用这个store类了啊等等等等,诶咱们这引用的对不对,我看啊。呃,没没错吧,这是star类,这是stop对吧?啊,别写错了,别写这个啊,咱们理引的是这个长之后的这个毫秒数,对吧?这要注意啊,这个没问题啊,那后边呢,再把我们这个Q的名称给它放进来就行了啊,那这个脚本呢,我们就可以交给交给阿卡的去调度了,对吧?那当然咱这就不去做了,我问一下大家,你说这个脚本它应该放在什么位置,放在我们那个全流程的什么位置?
28:02
是不是得分析一下依赖关系对不对,你说这个麒麟它依赖的应该是哪哪哪些表啊,是不是依赖就是DWD层市值表和DM层的维度表,所以说我们是不是得保证dim层以及DWD层的计算任务完成之后,再去执行麒麟的构建任务啊,对吧?那这个一定要注意一下啊,OK,好,那这就是我们每日定时调度的脚本的写法啊,好,那完了之后我把视频停一下啊。
我来说两句