00:00
好,同学们,从这一节开始呢,我们来学习flux语言啊,那么什么是flux语言呢?Flux语言呢,实际上是in flux DB,它自己推出的一套查询语言啊,那么这一节的内容呢,主要就是翻译了这个flax官方的一些文档啊,然后呢,老师会给大家踩一些坑,此处呢就先看一下这个语言的介绍。那么可以看到官方文档呢,说我们这个语言呢,它就像是一个哎。自来水厂。使用flux语言呢,来查询数据的时候呢,诶这个感觉呢,就像是这个,诶官方给的这张图啊,先从水言呢把水抽上来,然后呢,经过一个过滤是吧,再经过消毒,总的来说呢,按照你各种需求来对这个数据呢,进行一个处理,最后呢。哎,就像管道一样,输出到我们想要的目的目的地去。那么接下来呢,我们就可以看几个常见事例,最简单的几个例子。呃,可以看到呢,底下给大家放了几个可以参考的脚本。
01:02
呃,首先呢,你可以看到from这个函数啊,我们整个脚本啊,第一第一行开始看啊,From这个函数呢,给定了一个参数叫做存储桶,然后这个存储桶呢,就是后面这个参数的参数值就是存储桶的名字。然后后面这一个符号呢,什么意思,这个符号其实就是管道符,然后我们有一个函数呢,润制啊,也可以看到它呢,去指定的一个参数叫start等于呃,Start冒号负1DAY,也就是今天啊,减去再减去一天,在今天的基础之上呢,再减去一天啊,也就是说从昨天开始的数据。啊,那么可以看到我们这个R呢,R这个函数并没有去指定一个啊数据的参数啊,没有说我们data塔冒号什么什么等于什么啊,所以说呢,管道符它其实起到什么作用呢。啊,它其实起到一个数据传递的作用,也就是我们润值去做一个时间范围的过滤,是对上游的函数返回过来的数据进行的一个操作,包括我们后面的filter数据,它呢也是在润值的一个返回值的基础之上呢,去对数据进行一个过滤啊,包括我们的平均值是在前面三步操作的基础之上啊,对剩下的数据进行一个取平均值的过程。
02:16
那么你看这个查询的一个写的思路,哎,是不是就很像这个,呃,自来水管了是吧,先从数据源里面这种水源把水抽上来,然后过滤杀毒消菌啊等一系列操作。呃,那么flux语法呢,它就有很很有很强的这个特点。呃,和我们的SQ啊,平时写的circleq不一样的是,我们SQ呢,一般来说是先指定要查哪些东西。啊,查哪些字段,比如ABC。啊,最后呢,再是指定数据源,后面才是指定数据源。I from table eight。呃,TABLE1吧,然后呢,再指定过滤条件。
03:00
哎,比如说A等于叉叉叉,哎,那么这个过程呢,其实你会发现它有一点补足语的意思。啊,就像是呢,我们我们说,呃,一个呢,是从说我们去超市里面买苹果香蕉和西瓜,一个是说我们买西瓜。啊,从哪里哪里买啊,那么这个from呢,它其实有点像补足语的意思啊,那么我们这个拉克斯语法呢,就像是啊,指定这个源头在一步一步过来的意思。所以说这个flux语言的语法呢,它可能更符合呃,我们这个一个数据处理的先后顺序。好,那么接下来呢,我们再看底下还有几个实例。呃,总的来说呢,你可以看到,呃,Import csv,也就是在我们的flux脚本里面呢,啊,其实你可以像普通的编程语言一样去导包啊,这个包导进来之后,我们可以看到通过form,还有csv form它呢可以去读取不同的数据源,以及下面的这个circle from。啊,Fla语言呢,它其实可以将这个文件作为数据源,而且呢,还可以将一些别的关系型数据库作为数据源,比如说my circle,还有post circle。
04:10
啊,那么这个呢,要看flux语言的野心啊,我们现在呢,In flax呢,其实把这个flu语言作为了一个单独的开源项目去维护,而不仅仅是in Fla DB的一部分。也就是说呢,他期望于在将来flux语言呢,能够成为一个通用的查询语言啊,对别的数据库,各种数据言呢,都能去做查询。但是就目前来看呢,这个还是任重道远啊,当前呢,我们flax语言呢,更新的非常频繁,标准库呢尚未完全确定,现在呢,大概是保持在每周的一更新的一个节奏上。所以大家呢,目前还是可以把flux语言啊,理解为我们in DB一个专用的查询语言。啊,另外呢,就是需要注意flux语言,它跟in flux DB的一个关系。呃,首先呢。把这个字调大一些。
05:01
呃,首先这个flux语言呢,是在in flux db2之后才有的一个,呃二以上。2.0几以上。才有的一个它支持的一个查询语言啊,那么当这个inx DB2.0推出的时候呢,我们DB一点几的版本是在1.1.7。呃呃,之后呢,因为这个in flux语言呢,做的他觉得嗯查询数据还挺舒服,呃,所以说呢,到这个in flax DB呢,后面又推出了一个版本叫1.8。呃,那么它让这个1.8的版本呢,做了一个向后兼容。啊,也就是他兼容它未来的东西,把这个flux语言呢,带到了in flax DB一点几的版本里面,呃,所以说呢,我们现在如果使用flax语言查询的话,呃,只有in Fla tb1.8这些以上的这个版本呢,可以使用这个语言进行查询,在此之前呢,我们这个in TB的查询语言叫做in flaql。
06:09
啊,是这个,呃,那么现在呢,In flax TB的官网呢,认为flux语言比inluxql这个语言要好很多。啊,Inql呢,它是一个,呃,语法上类似SQL语言的那么一个查询语言,但是呢,又不是完全一样。呃,但是呢,In DB又不想失去老用户,因为以前呢,有很多用户啊,他已经基于这个in flaql去开发应用了。呃,所以说呢,它英DB呢,到了2.0之上的版本之后呢,呃,又推出了一个API,那放开了一个API,它允许呢,你用英QL呢,去做一些查询。啊,不过我们这节课呢,是基于in Fla DB2.4的版本来进行讲解的。而且后面呢,我们会做的很多东西,包括定时任务,还有这个,呃,监控报警都是基于flax语言来做的,所以说本课程呢,不不向大家介绍这个in flux ql的一个呃学法,最后呢,我要强调的一个问题就是。
07:11
啊,一定是强调啊,这个in Fla DB呢啊,你要学习这个语言,一定要注意你所使用的in Fla DB版本。呃,我们去看看一下这个官方文档。呃,你可以看到啊,不同的in Fla DB的版本,它支持的flux语言版本呢不同。啊,你像是这个1.8的时候呢,它支持的flax版本呢,是到00.65.1,然后后面这些版本呢,它这个支持的flax语言呢,啊,越来越往后,就这个版本呢越来越高,所以说呢,啊,你新的这个版本里面的flax语言特性呢,旧的版本不一定支持,不仅如此啊,你可能是旧版本里面的Fla语言呢,有一些包或者一些语法,到了这个新版本之后呢,被移除了,所以兼容性的也可能会有问题。所以大家来学习我们DB的时候呢,我们课程里面用的是2.4啊,出于学习的一个考虑呢,大家一定也要使用2.4的版本。
08:08
好,知道这些之后呢,我们就可以开心的开始flux语言的学习了。
我来说两句