00:00
我们已经了解了硫跟表之间的互相转换的过程,哎,那我们知道基于表环境啊,去调一个to或者from对应的方法就可以进行转换了,但是之前呢,我们讲的这个例子其实还是比较简单啊,太理想化了一点啊,在这个过程当中,我们直接传一个data stream,它里边的数据类型其实就是一个样例类的对象啊,都是event,那当然这个样例类里边我们就定义好了每个字段它的名称到底叫什么啊,一个user URL,还有一个time step,那直接把它转换成表的话,那自然这个表结构我们就不需要单独定义了,所有这个STEM都是现成的嘛。所以在这里边我们可以考虑很多细节问题,那假如说我们这里需要去转换的这个data stream,它不是样一类的数据类型,如果是原子类型呢?啊,就是我们当前啊,里边所有的这个数据,就是一个简单的int类型,一个长整型,一个浪类型,那接下来我们这个字段名称又应该叫什么呢?对应的表结构怎么去定义呢?
01:01
哎,这其实涉及到了一个问题,就是所谓的table API当中到底支持哪些数据类型啊,其实之前我们提到过啊,Data STEM API当中支持很多不同种类的数据类型啊,那我们想到data所支持的数据类型,Table API都应该支持啊,那所以既然更加复杂的数据类型都能支持的话,那简单数据类型肯定是支持的。只不过我们需要去考虑一些转换当中的细节,接下来我们就详细的来做一个介绍,首先最简单的呢,就是原子类型。这个概念跟之前我们讲data three没PI支持的数据类型的时候一样啊,啊就是我们说在link当中基础的数据类型,比如说SKY当中的这个int double string啊,和通用的一些数据类型,就是不可以再拆分的数据类型,统一都称作原子类型,那我们知道原子类型的data stream啊,转换之后呢,哎,我们就知道它其实就相当于每一个数据元素里边就只有一个字段,所以呢,转换之后就成了只有一列的表。
02:07
这样的table,那这里的唯一的这个列字段,它的数据类型呢?哎,有我们这里的原子类型就可以推断出来,这个不用单独指定,另外呢,哎,这里边我们可以给它做一个重命名啊,就比方说你看我们这里边来了一个data啊,假如说这个data stream里边所有的数据都是长整型的,然后接下来呢,我们from data的时候,把这个数据流传进来,后边可以直接给定一个当前的字段名称。当前,哎,我不是只有一个列吗?我直接这里边给一个Dollar这样的一个表达式,一个expression里边给定的这个值,就是表里边设定好的字段名称,比方说我就叫做mylo,这是完全可以的。相当于做了一个重命名。哎,那我们自然就想到了,那假如说我不做出命名,它默认的这一个表里边的结构啊,对应的这个列的字段名又是什么呢?啊,这里边它默认的字段名称是下划线一啊,那我们自然就联想到了,这不就是元组类型当中对于我们第一个元素的这样的一个名称的表述吗?那所谓的这个原子类型,它其实就是当成了一个一元组。
03:19
里面只有一个元素,那当然默认字段名就是下划线一啊,所以我们会想到啊,对应的元组类型当然也是支持的。如果我们当前的data STEM数据流里边的元素类型是元组类型的话,哎,那经过这样一个流到表的转换之后,得到的表里边每一列对应的字段名称,那默认就是下划线一一_二_三,就是我们当前元组里边每个元素的名称啊,那当然了,所有字段我们都可以重新排序,或者呢提取里边的一部分,这些都是可以的,另外还可以调用as方法来进行一个重命名操作啊,那比如说我们看一下这里的一个例子啊,当前我们创建好的这个data stream呢,里边的数据元素的类型就是一个元组类型,具体是几元组我们就不管了啊,至少是多元组,首先呢,我们可以把它转换成一个只包含某个字段的一个表table,哎,那这里边我们定义的就是from data stream,把当前的data stream传进来,后边呢,只给一个Dollar_一,这就表示只包含第一个字段,只把第一个字段。
04:28
提取出来,当前这个表里边就只有这一列,它的名称就叫做下划线一。那另外还可以干什么呢?比方说我们提取两列下划线一和下划线二,还可以把它的位置做一个互换,这样的话,我们得到的表里边呢,就有两个字段,那第一个字段是下划线二,第二个字段是下线一。另外我们还可以进行重命名啊,比如说下划线2AS my in,然后下划线1AS mylo,哎,那得到这个表里边呢,同样是两个字段,第一个字段这个练。
05:02
字段名叫做my int,第二个叫做mylo,这就是关于这个元组类型,我们在进行流到表的转换的过程当中啊,能够去处理的各种灵活的场景。啊,那另外还有一个非常经典的类型啊,就是kiss class样衣类了,对于skyla而言,那就是样衣类,那如果要是Java代码的话,那就是特定规则的一种类似于抛种的类型啊啊,那这样的一个复合类型呢,其实是我们进行流到表转换过程当中最简单的一种形式,因为样例类里面已经给我们定义好了可读性非常强的字段名,那这样的话,类型也有了,名称也有了,直接转换不就完了吗?啊,表结构就已经现成了啊哎,所以之前我们在代码当中测试的时候直接使用的就是这种方式,当然了我们也可以灵活,哎,那就是除了传进当前的data stream之外,还可以指定到底要筛选哪一个字段名称,相当于做了一个select。那另外呢,还可以后边调一个点S方法去对于提取出来的字段做一个重命名,这是关于样例类的使用啊,其实这个是非常经典,一般我们在应用的时候啊,那这里边处理的这个数据类型其实都是样衣类类型。
06:15
最后还有一个非常特殊的类型,就是前面我们已经提到过的肉类型,那肉类型呢,其实是弗link给我们定义了一个在关系型表里边非常通用的底层的数据结构,哎,它就是所谓的行啊,因为当前这个关系型表啊,可以是认为是一种二维的数据矩阵嘛,诶,那。基本的组成,哎,那就是每一条数据都是一个行一个肉,那对应在底层呢。对于每一个确定的table表而言啊,那它的肉类型啊,它里边指定的这个肉类型其实可以认为就是一种多元组啊,那它的长度呢,针对一个表来说是固定的。但是如果说我们直接指定这个肉类型呢,那是没办法推断出里边每个字段的具体的类型,所以如果我们要想使用它的话,还得加上它的一个具体类型的说明的信息。
07:11
这就是我们所说的在创建一张表的时候,Create语句里边指定的表的结构STEM啊,有时候我们把它叫做模式结构啊,哎,那另外呢,肉类型还可以附加一个属性叫做肉看,这就是我们所说的更新操作的具体的类型,那这样的话,肉类型就可以表示更新日志流里的数据了,所以前面我们提到啊,假如说使用了。Fromlo stream方法去进行一个流到表的转换的话,那这里我们可以转换一个更新日志流,这个更新日志流定义的时候呢,里边的数据类型必须是肉,而且必须指定对应的肉看。这样的话我们就联系在一起了啊,那具体到代码当中的话,我们可以看一下这里的这个例子啊,我们这里就直接from elements,这样构建一个更新日志流,怎么样就是一个更新日志流呢?里边的每一个元素都是肉类型,而且掉它的一个点of kind的方法啊,当然了,最后返回的啊,还是一个肉,只不过就是单独的指定了当前的roll,那比方说roll insert,很显然这就是。
08:21
我们看到那个加I很明显啊,然后如果要是update before的话。更新之前啊,那很显然这就是减U嘛,那如果是update after的话,那就是加U。更新前,更新后,这就是我们所说的这个更新日志流的具体的一个使用,那如果要把它转换成表的话,当然就是from changelock stream,这样的话就可以得到一个具体的table。这就是关于表和流进行转换过程当中所支持的数据类型。有了这些基本的概念和基本API的一些调用方法,接下来我们就可以去接触更加复杂、更加有实际意义的一些灵活的应用场景了。
我来说两句