00:00
好,同学们,这一节呢,给大家介绍两种比较重要的,就是沿着时间开窗的一个函数,此处呢我会把这个屏呢清空一下,好,现在呢,我利用这个查询构造器啊,去写一个基本查询啊,此处呢我先去把这个页面刷新一下。啊,我们去查询EXAMPLE02,大家要记得啊,这个里面的这个存储通里面的数据呢,是我们telegraph采集过来的。啊,我们去查询CPU,然后找这个usage user,看用户使用CPU的情况,好,直接点击submit。然后呢,来到我们的脚本编辑器啊,往下拉一下。可以看到啊,这里面一共有五个序列啊,一个是CPU0。呃,CPU1,那么这是我CPU的编号。啊,最后呢,还有一个CPU total是我们所有的CPU合在一块儿,它这个啊总计的情况,所以说呢,这一共是五个序列啊,也可以看到我们这里有五条线啊。
01:01
把它这个删掉。好,我现在呢,把它这个开窗的操作给它删掉啊,再把这个时间的这个范围呢,我也是手动控制,把这个改成负1H表示一小时前,好点击提交。啊,那么大家现在可以看到呢,这个是我们没有聚合啊,没有通过这个窗口聚合得到了一个反馈结果啊,然后这里面呢,还是五条序列啊,我五条这个色彩斑斓的线。好,现在呢,我们切换到这个原始数据上,可以看到这里面这个表的编号是零,然后到45呢,就是四啊中间呢,还有这个,哎,可以想象啊,中间还有0123这些东西。哎,那么这个地方呢,只能这个你可以看到现在这个表呢,是一。哎,所以说呢,这还是表流,表流里面呢,一共有五张表,每张表呢对应一个序列,好,我们现在呢,使用一个使用一个函数叫做window。啊,然后一回呃,一个小一个小这个云户号,哎,可以看到这里面呢,有很多的这个参数啊,这里呢,主要给大家介绍两个,一个是我们的这个ay,然后一个是我们的啊底下的这个private。
02:14
啊,那么我们知道啊,这个period的意思呢,它其实是间隔的意思啊,也就是说我这个开窗啊,我给大家画一下。比如说这个是我的时间轴,然后呢,我沿着这个时间轴呢去开窗啊所谓的开窗呢,其实就是间隔的意思,意思是隔多长时间呢去开一个窗。啊,比如说我现在这个地方呢,是零秒。哎,零秒,然后这里呢,是30秒啊,后面的这个地方是60秒。啊,然后这里呢,是90秒。啊,所谓的间隔呢,意思是我从这个我这个窗口啊,这个窗口,比如说窗口开始时间,哎,它可以是每隔30秒呢去开一次窗。那么A呢,其是我们这个窗口的宽度啊,它默认呢,等于per的,这样一来呢,其实滚动窗口,也就是说呢,我们经过这个开开窗的操作啊,呃是零到30秒呢,会开成一个呃窗口,然后呢,30秒到60秒呢,又是一个窗口,60秒呢到90秒又是一个窗口,如果说我这里呢,把A瑞设成30秒啊把这个。
03:19
Period呢,设成15秒,那么就会导致什么呢?啊,导致我一上来呢,有一个30秒宽的窗口啊,我这个换个颜色啊,这个不好换个颜色会导致我上来呢,先有一个30秒的窗口,然后呢,间隔15秒之后,哎,这里的是15秒,哎又会有一个30秒的窗口。啊,在这个间隔15秒,又会有一个宽度为30秒的窗口。啊,所以说默认的话,我们只指定per瑞亚的,它其实呢,同时指定的A,然后这个时候呢,如果说我们指定30秒,那么就会开一个这样啊,不重叠的30秒的滚动窗口。哎,此处呢,我们现在其可以实验一下啊,比如说呢,我把这个窗口呢,改成30S,好直接点击提交看看效果,哎,你会发现一个问题啊,现在这个table你会发现012,然后再回到我们的图表里面看,你会发现这个乱套了,你发现没有,哎,这里面有很多的这个序列啊,很多的这个图,然后你再点到这个原始数据呢,你会发现诶直接切到页尾。
04:19
啊,现在呢,这里面表流非常多啊,有有这个表流里面的表非常多,有64个表啊对着呢,也就是有六,也就是有64个序列,好,这里呢,我们往前看啊,往前看啊,你会发现一个问题啊,我给大家圈一下。哎,也可以看到啊,我现在是第一页这个start stop呢,是23:45:30,到23:46:40,哎,刚好这个45分30秒呢,到46分钟呢,是啊,差了一个30秒的一个大小,也就是说呢,这个其实是我们的窗口好。盯住。再往后来。好啊,你会看到又有一条数据啊,这又一条数据,它的这个start stop呢是哎,23:46分到23:46:30,哎,那么现在呢,我把这个window给它删掉,哎,再次提交submit。
05:13
好,你会看到这个start stop原本应该是什么呀,原本是不是应该是我们这个查询的润置时间的啊,最前的22:54:23,一直到这个一小时之后的时间,23:54,所以说你会发现我们的温度这个函数呢。哎,一加上来把这个stop stop给改掉了,而这个stop stop是什么呀?是不是一个分组键呀,是不是一个分组字段。所以说这个温度呢,它其实在开窗的过程中呢,那你注意它改变了原有序列。那他呢,其实把整个表流。按照窗口,按照窗口的开始时间和截止之间呢,进行了重新的一个分组。
06:05
所以说呢,现在我们可以看到这个序列呢,非常的多啊,如果切到我们的啊原始数据里面来啊,切到我们的这个图表里面来,我再点击提交啊,可以看到啊,这个刚才的五条序列呢,被打成了很多序列,然后我们把这个光标。定位到某一条数据上来,哎,现在我们可以去点击一下这个。啊好,我们现在呢,可以看到这个序列啊,我现在按F1截下图。呃,有个问题啊,你首先可以看到这里面呢,呃,我拿笔标一下。哎,首先呢,这是一条数据啊,这里有一条数据一条,然后这个关键呢,是两条数据三条啊四条啊五条。呃,这说明我们的telegraph呢,它的这个收集数据的间隔呢,并不是啊,并不是十秒一次,我们再去看一下这个窗口啊,刚才这个开启telegraph的时候。
07:01
它怎么显示的。啊,可以看到啊,这个地方我刚才说错了啊,我们这个地方往这个。In Fla DB里面,诶,我们收集数据的间隔呢,啊,注意刷写的间隔是十秒钟,也就是每十秒钟呢去写一次啊,但是我们采集数据的间隔呢,是五秒钟,也就五秒钟呢,每隔五秒钟呢,就会采集一批新的数据啊,所以这么一看的话呢,也正常。一个窗口里面呢,啊,如果说是刚好的话,应该是有六条数据,六到五条数据。好,再次点击提交。可以看一下。啊,你像这个应该就是有一条六,呃,有六条数据的一个窗口。啊,可以看一下这里面呢,首先。啊,这是一个点啊,把这个屏线清一下啊,一条数据两条数据,三条数据,四条数据,五条数据,六条数据啊,那么这就是我们window它的进行一个开窗的操作。经过这个开窗之后,我们可以去做一些,呃,做一些聚合操作,比如说呢,我想知道哎这个最大值,诶直接点max。
08:03
好括号啊,这个也是字段写死,它会直接比较那个下划线挖六那个字段,点击提交。哎,你可以看到这里面呢,因为每个序列啊,它只剩下一个值了,所以说这里面你可以看到只能看到一些点,此时我可以画推导类型。比如说换成这个直方图可不可以呢?啊,不是很好看啊,可以画成散点图,或许。啊,也不是效,效果也不是很理想啊,总而言之,就这个意思啊,啊大家知道就行了。呃,接下来呢,我们可以去看一下原始数据。好,把它拉开。啊,你会看到呢,每一个序列啊,每一个子表啊,或者说叫表流里面的每一个序列啊,它现在它现在呢,这个01234都只剩了一条数据,那么就是这个窗口里面的最大值。好啊,那么这就是我们通过这个window再加聚合函数呢,进行一个开窗聚合的操作,除此之外呢,还有一个函数叫做呃呃,Great window。
09:01
哎,要把它这个拿来啊,之前呢,大家如果有印象的话呢,我们的这个查询构造器呢,总是会使用这个a great window呢去做一个开窗操作,现在呢,我们来敲一下好啊,此时你可以看到啊,那个这个这个参数呢,和我们这些温度的函数呢,基本上一致啊,此处呢,我们也是指定这个period,然后呢,这里面给一个30秒的宽度啊,30秒的间隔,然后这里面还需要注意一个问题。哎,它允许呢,你指定一个函数此处啊,我们写一个max,然后呢,点击提交。哎,可以看到这里面还缺一个什么啊,这里面这个AI这个参数啊,相比我们的温度参数啊,温度函数来说呢,这个A瑞呢,是必须指定的啊,此时呢,我们也给它传递一个A瑞参数。30S好,点击提交往下拉。哎,我们先去看图啊,切回到我们的序列,这个序列图上来啊,你会发现呢,这一次啊,这一次我们的聚合。
10:02
并没有把出现这个出现变成100多个60多个序列,这种情况也就是a window呢,它其实并不会影响我们原来的序列结构。原来是五条序列呢,你经过这个函数一算啊,那还是五条序列,但是你要是通过温度的方式去做这个呢,它就可能成了,哎,不知道多少条序列了。啊,可以看一下。好,那么其实从代码上呢,也可以看出来啊,因为这个window你可以看到它是一个明显的什么转换操作,也就是说它一定要对这个数据率端进行转换,那转换之后呢,我们知道开创完之后,你的习惯呢,就是去进行聚合啊,所以说这个地方它其实呢啊,从代码的表面含义上来说呢,也是意味着一个重分组操作,但是呢,这个a window呢,我们可以看一下啊,至少呢,它这个把这个window和这个聚合的操作呢,给合成一步了啊,我们可以说呢,它其实呃,至少从字面意思来说啊,从代码的含义上来说,呃,没有那么明显的一个转换的啊,对原有数据结构进行转换的一个含义啊,所以说呢,这个地方我们可以,呃通常来说啊,是使用这种方式进行一个开窗聚合的,呃,操作。
11:16
啊,这里呢,还是给大家再敲一遍,比如说我们还是去啊,看一下每30秒的最大值啊,点击提交。啊,那么这就是我们一个常用的两种开窗操作啊,大家知道就好了啊,这个地方改15分钟再次看下效果啊,也可以看到比刚才那好看多了。
我来说两句