00:00
好,同学们啊,那么这一节呢,给大家说一下,之前我们上一节说到啊,有个管道函数呢,叫to int啊,然后呢,它这里面啊只支持啊,你要求你这个啊进来的表流里面呢,必须要有一个字段名啊,叫这个下划线W6啊,没有这个东西呢,它直接不干活不生效啊,那么这是为什么呢?其实这一节呢,就要给大家讲一下,我们如何去自定义这个管道函数。呃,首先呢,我这里先切回这个查询构造器。呃,那么我这里呢,查询一下test in。然后GOGR好,点击提交。呃,再切回到我们的教用编辑器,之前呢,我们说过啊,这个go green里面呢,它只含一个啊,序列它只含一个序列啊,现在呢,把这个开窗开窗操作呢,先给它删掉啊,然后这个start呢,也这个删掉啊,改成我人为控制啊,查询过去一小时的负1H,好再次点击提交。可以看到呢,这个数据呢,没有什么变化啊呃,现在我们去查看原始数据。
01:03
啊,把它拉高一点啊,可以看到这是运输是这个样子啊,那么现在呢,我们给大家去编写一个管道函数,让这个字段呢,呃,1321啊这这个数值呢,放大一百倍。好,现在我这个查询的逻辑有了,我在它前面呢,去写一个函数的声明,那这个函数呢,就叫哎,备个100啊,然后这些等于号,此处呢,大家注意我的语法其实还是我们之前的声明函数那套语法,但是呢,参数列表要变一下。我这里呢,先敲一个table table啊,然后呢,注意我写一个等于号哎,再写一个小于号,再写一个单横杠啊,那么现在呢,我这个参数列表就写完了,接下来呢,我再去写一个箭头,哎,然后花括号,这里面呢,就放我这个函数的主体逻辑,大家呢,注意我怎么写此处呢,我table,然后管道符。
02:03
啊,传递一个map函数,这个时候呢,我去传递一个匿名函数二。好啊,接接下来呢,关键是看我这段东西怎么写啊,此处呢,我去,哎,声明一个record了。然后呢,是用are with语法。啊,给这个二的这个,哎,首先呢,是添加一个挖流字段。啊,因为我们这个二原本呢就有洼里有,所以说这里呢,我会给它覆盖掉,然后现在呢,给它来一个冒号。呃,取出二的value值。哎,再乘100,好,这个时候呢,你会发现我标红是因为我用了这个括号语法之后呢,没有写return啊,此处呢,把return给他补上。啊,也可以看到我这个函数呢,就写完了,接下来呢,我直接把它跟到这个future后面,后面过来看看。哎,这个效果。好,直接管道服,现在呢,传一下杯哥100。
03:03
好,此处标红,为什么呢?因为你没有写调用,没有写这个小括号,哎,可以看到没有标红,呃,此处呢,我在写一个之前的乘法函数啊,可以看一下这个效果啊。比如说我现在写一个。XY,然后呢,返回值就是X乘以Y,好,现在我如果把乘法在这里调用呢?啊,你会看到标红,为什么呢?因为这个乘法呢,它不是一个管道函数,那么什么样的函数是管道函数呢?它的第一个参数必须写成这种样子,呃,所谓的这个左箭头其实意思是管道的输入,而这个table呢,其实是我对这个管道输入数据的一个行参。而且呢,需要注意啊,管道符的运算呢,有类型约束啊,它要求呢,你这个管道符呢,前面传进来的这个变量类型,也就是table类型,它必须得是表流,它不能是数组啊,不能是别的一些呃,乱七八糟的数据结构,它必须得是表流才行。
04:06
啊,所以说我们这个table呢,你就不要再想着什么数组的问题了,那么这里呢,它其实就只能是表留。啊,所以说我们现在这个BIG100呢,它才是管道函数啊,这个时候我去调用一下BIG100,好,现在点击提交sum。啊,可以看到这里面有一个问题,说这个这个类型错误,因为我这个map类型呢,啊,是这个100的问题啊,他说这个啊,它不是浮点数,因为我们刚才这个value呢,它里面默认是浮点数,此处先注释一下。把这个地方注释掉啊,然后呢,再把这个贝100给注释掉,点击提交,那么可以看到啊,刚才这个value呢,它其实个double类型,呃,刚才这个我们之前说这个乘法呢,在flax语言里面乘法呢啊,不能跨类型的进行使用,此处呢把这个注释放开。
05:00
好,再次点击提交啊,再次把这个一百一百呢改成100.0啊,再次点击提交。好哎,可以看到我刚才这个1320呢,变成了呃1000啊,变成了132000,也就是我们的这个数值呢,已经放大了100倍了啊,再次提交啊,可以看到把这个贝个100注掉之后呢,是1320啊把这个放开,现在呢就是13000,呃132000。啊,那么这就是我们这个管道函数的一个实现啊,我们自己也可以去写这个管道函数的逻辑,大家注意啊,我这里有什么问题呢?就是我把这个字段给写死了啊,所以说待会儿呢,如果说我们自己去造一个表流的话,没有这个下划线挖六字段它也会爆啊,你你输入的这个这个表流里面呢,缺少这个字段啊,所以说像我们之前这个to类型啊,To的这个,呃管道函数它这个里面呢,其实就是把这个字段的名称给写死了,在我们的flas语言里面呢,充斥着大量的这个,呃管道函数是把字段名给写死了,所以说这个下划线啊,大家注意下划线的字段一定不要去修改它的名称。
06:08
而且呢,除非就是说你这个管道的操作呢,已经到最后一步了啊,要需要把它这个拍成一个啊宽表,或者是修改它这个表结构,否则的话,你在中间处理过程,你比如说这个处理完之后,后面还要再还要再跟一个开窗操作啊,那么中间这些步骤千万不要去更改我们现在的这个结构,它也会影响我们后面这个函数的执行。好,那么这就是管道函数的一个点,另外呢,就是呃,我此处写的呢,是乘以100啊,那么我能不能传递让用户自定义啊,乘以多少呢?我们可以试一下此处呢,哎,写一个逗号在参数列表里面呢,我再去写一个,比如说是X,哎,等于100,默认值是100,好啊,后面我调用的时候呢,我就可以去传X这个参数啊,注意这个table这个参数是管道符给你传进来的,所以说呢,你不用管,我们呢只去指定X是多少,比如说我现在指定X是二,哎,就是说这里面的值呢,不要乘以100,现在呢,换成乘以二,此处呢,我这个乘以100.0呢,也需要变。
07:11
啊把它,呃,另外这个X注意注意啊,这个类型需要变一下啊,100.0啊不是100啊,此处呢,我这个值呢,也传出2.0。好,那么这个地方注意就把这个100.0呢换成X。好,现在呢,我直接点击提交看看效果啊,可以看到这个提交完之后呢,这个查询结果呢,是2640啊,这个时候把这个备个100呢,再给它注释掉,大家可以看一下点击提交啊,一千三百二十一再给它放开。好,2642说明我刚才的这一个啊函数呢是生效的,最后呢,给大家说一下,就是你看这个官方文档的时候呢,如何区分啊,这个函数是一个普通函数,或者说这个函数呢,是一个管道函数。呃,接下来呢,我们去看到官方文档,然后之前给大家说呢,你可以看到这个标准库,然后这里面的一堆函数,我现在呢,随便点开一下,比如说这个http request啊,可以看到有一个post。
08:08
点开看一下啊,那么这里面也可以看到你往下拉。呃,再往下拉啊,这里没有,再往上看一下有没有这个相关的操作啊,其实可以看到。啊,这里面呢,有一个函数类型的一个解释啊,这里呢,给大家解释一下怎么样去看这个东西啊,首先这个原括号里面是我们的参数列表啊,那么第一个参数可以看到URL。然后它的冒号string,意思也就是说这个URL,这个参数的类型必须得是字符串,另外可以看到第二个参数啊,第二个参数body,也就是我们的请求体,它的类型呢,就得是字节序列,但是你会看到这里面呢,跟了一个问号,跟问号的是什么意思呢?就是这个参数并不是必须的。好啊,包括这个he,你可以看到它呢,要求你是一个字典啊,最后呢,这个等于号再加一个这个大于号组成的箭头呢,右边是我们的返回的这个数据的类型。
09:09
所以说大家注意啊,你在这个过程中,你看到那个stream了吗?有没有这个关键词。啊,有没有stream of tables,也就是表流啊,没有是不是啊,这里面呢,你也没有看到我们之前关注的这个符号啊,对不对,所以说呢,这个函数它呢,其实就是一个普通函数,它不是管道函数啊,此处呢,我们去找一个管道函数的啊,比如说这个我想想啊。我想这个。呃,Universe这个内置的应该有,我们去找刚才那个to吧。来找到这个。呃,有一个可以看到这个to在这。好点进来看一下啊。呃,往下拉一下,你可以看到这里面呢,是我们to int的一个函数签名啊,你可以也理解为函数的说明啊,此时呢,你可以看到这里呢有一个什么,哎,是不是左箭头t box,然后它的类型啊,这里呢要求你必须得是一个表流,关键就是你会发现它这里要求什么。
10:13
要求你必须得有下划线value这一个呃,这一个呃属性,所以说包括他这个返回类型,你也可以看到它一定会带这个value类型,而且这个value类型是什么呀,是int类型。所以说呢,大家通过看这个文档的时候呢,呃,点到这个函数里面一上来一定要注意这个函数签名啊,当这个函数签名里面看到左箭头tablebos,就说明它是一个管道函数,是可以通过这个管道符呢进行一个调用的。好,那么这就是我们关于自定义管道函数的全部知识。
我来说两句