00:00
嗯,好,我们接下来呢,来的话呢,来研究一下,就是说如何。对吧?如何什么呢?如何去分析一下haveve的原数据,对吧?如何去分析一下这个haveve的原数据,呃,那这个是什么意思呢?呃,就是说首先我们要明白一下,就是说啊,当然我们要做的是什么have原数据质量监控对吧?就在这里边,首先我们要明白什么是原数据对吧?什么是原数据啊,那么所谓原数据呢,就是说它跟你表里边插入的那些数据不一样,对吧,那些叫数据,而原数据的意思呢,它就是表示你的比方说表结构,你的字段名,你的数据库名字,类似于这样的东西呢,它是原数据,对吧?那么我们一般have的原数据,它是存在哪呢?对吧?它表的原数据是存在哪里呢?呃,实际上它是存在我们的这个。我们来看一下。
01:00
呃,它实际上是存在。H catalog对吧?当然我在这儿的话呢,我是存在了h catalog里面,呃,也就是说我们在启动have的原服务的时候呢,对吧,尤其是你指定了MYCQL为它的,呃,就是说原数据的保存的地点的时候呢,那实际上我们的原数据呢,它就是存在我们的MYCQL里面的,对吧?呃,所以说呢,我这里面就以呃就是说have的原数据保存在MYCQL里边呢,然后来写写一个需求呢,来看一下。嗯,对吧,就是我们的这个原数据质量呢,是如何进行分析的,好,我们现在use h cutlo,你要注意我这里边我的have原数据是存在MYSQ里边的h catalog。这个库里边的,对吧?呃,这个库里边的,那么你在分析have有原数据的时候呢,你要确定你的原数据是存在哪里对吧?呃,存在哪里,而我这儿的话呢,我就是直接存在MYSQL里边了,所以我们可以看一下,我们show一下table,对吧,就看一下它有多少表,你可以看到实际上在have的原数据库里面,其实它表示非常非常多的,对吧,而且它起的名字呢,好像也不是那么好懂,对吧,比方说这个是TBLS对吧?这个实际上什么意思呢?这个就是tables。
02:23
也就是你在have里边对吧,你创建的表对吧?呃,那么还有类似于像呃这种DBS对吧,那么这个就是你在have里边对不对,创建的一些数据库等等等等啊,它实际上是这些东西对吧?你比如说你select芯from。这个TBLS对吧,你回车你就会发现,哎,这里边呢,呃,有什么呢?呃,有我们的这个table的ID对吧?然后呢,以及有table的名字,也就是说数据,呃,表的名字,以及它表的类型啊等等等等,包括它的owner,它的这个owner type是吧?呃之类的,以及它的创建时间,那这些就是我们have的原数据,呃,所以说你一定要注意这个原数据和数据的区别啊,就是我们这里面不分析have数据库里边或者说表里边插入的那些数据,我们要分析的是表的信息以及数据库的信息,对吧?而这些信息呢,是保存在MYCQ里边的,呃,当然我们在这里边的话呢。
03:28
呃,我们会选择分析其中的一些指标,对吧,质量指标啊,因为你这些所有的这些表,它到底里边存了什么东西呢?实际上如果你真的有这样的需求的话呢,你是需要去have的文档,或者说去呃搜索引擎里面去搜索相关的文章。对吧,比方我这里面我就随便一搜,搜出来一篇文章,就是说他讲解这个have原数据表结构的,对吧?呃,比如说。这个什么database pers这样的一张表对吧?这张表里面存储的数据库的什么相关参数对不对啊等等等等,那你需要明白它每一张表它存的是哪些原信息对吧?呃,但是我们这里边的话呢,我们并不会说是把这些所有的表的这个呃,它到底保存哪些原信息,然后讲一遍,对吧?因为这个东西也没有必要你只是说,呃碰到相关需求的时候呢,那么你是需要去呃研究一下的,而我们这里边的话呢,我们只会呃计算其中的一些什么呢?呃,就是说我们计算其中的一些指标吧,啊比如说在这里边的话呢,我会计算什么呢?当然由于我们把后端停掉了,所以这里面会有一个500对吧?呃,我们会监控哪些质量指标呢?比方说首先当然是数据库的名字,对吧,你要监控的表名,那么这张表的话呢,我们会监控一下它的字段数量。
04:56
无注释的字段数量对吧?包括这张表有没有技术负责人,有没有业务负责人,表是否有注释对不对,以及过去七天呢?呃,这张表是否有产出对吧?我们就来计算一下对吧?或者说我们来查询一下这些数据,当然说要说更复杂的数据的话呢,那你就需要了解一下,呃,Haveve的原数据,呃,它的表呢,对吧?Haveve的原数据,呃,他在买CQ里面表结构,那些表它都是存什么样的数据的,对吧?那可能你需要去呃详细研究一下,但它并不是一个什么特别特别呃复杂的事情对吧?特别特别复杂的事情。好,那我们这里边的话呢,我们就直接呃写一个service对吧。
05:40
啊,当然我们在写service之前呢,首先呃,你很显然就是说你这个针对have对吧。它的一个原数据监控的,呃,这个质量或者说结果呢,你是需要写到一个数据库里边的,所以说我们还是先创建一个病类,对吧,那么这样的一个病的类的话呢,呃,它就叫做government detail吧。
06:08
OK,那这个类是用来干嘛呢,那就是。呃,用来保存have原数据分析结果的并类对吧?呃,当然它跟数据库里边的呃其实也是呃就是对应的上的对吧?它跟数据库里边其实也是对应的上的,呃,因为我们在数据库里边呢,会新建一张表来保存什么呢?来保存have原数据的监控结果对吧?那下面这个呢,就是创建表的这样的一个呃语句对吧?你可以看到它有这么几个字段,表,数据库的名字,表的名字以及呃字段数量没有。注释的字段数量,以及是否有表的注释是是否有呃,这个技术负责人是否有业务负责人,以及是否在过去七天之内有产出等等等等对吧?呃,基本上就是这么几个字段,那么他会和我们的这个病这样的一个类呢,给它对应起来,所以说第一个的话呢,当然还是主键ID对吧?好,那第二个的话呢,就是table ID对吧?那这个就是表的ID好,那么第三个的话呢,是什么呢?那就是table name表明对吧?那么第四个的话呢,那当然就是我们的database name数据库好。
07:44
啊,然后呢,还有就是一个布尔值对吧,Has c comment,那么这个是表是否有注释对吧,Private in pig fields number表的字段数量对吧,Private in。
08:11
对吧?那么就是missing comment fields number,那这个表示什么呢?这个就是缺失,缺少注释的表的字段数量,呃,当然就是有关这个原数据的质量呢,其实你可以,呃就是说监控他各个方面的呃,这样的一些质量,对吧?那这个就是呃,由大家自由发挥啊,或者说由这个呃公司的一些业务需求,对吧?你去分析一下它的原数据,那么不has technical owner是否有技术负责人,Private has output last seven days对吧?Last seven days是否有。
09:12
对吧,过去七天是否有产出,哎,那这个我们的病类呢,就已经见完了,然后接下来的话呢,我们来呃,给他做一些get set这样的一些自动生成的工作,对吧,Get set好所有的字段。点击确定,OK,点击确定,那么接下来的话呢,哎,我们有了这样的一个government,呃,Detail这样的一个病类的话呢,我们就可以开始写服务了,对吧?呃,当然我们这个服务的话呢,它的名字叫做什么呢?它的名字就叫做have have。Have Meta data monitor对吧?啊,我们就建这样的一个类来作为呃,Have的原数据质量监控的这样的一个任务对吧?呃,当然我们这个任务的话呢,我们就直接定义一个静态方法,The public state void calculate have met data detail,也就是说我们这个方法的业务逻辑是什么呢?计算have的元数据质量,对吧?
10:31
然后将计算结果写入MYSQL对吧?写入MYSQL,呃,当然就是说,呃,从这的话呢,我们之前的讲解你就可以发现,其实我们之前的my cql monitor job这样的一个作业呢,实际上它监控的是买CQL的数据质量,而我们这里边呢,监控的计算的是买呃haveve的原数据质量,那你一定要区分清楚说这个数据质量和原数据质量它的区别对吧?呃,当然就是说这样的一个呃任务,或者说我们calculate have ma data detail这样的一个方法呢,实际上你可以把它做成一个定时任务,对吧?按照我们之前的呃这样的一个做法,对吧,你可以把它做成一个定时任务,然后由前端呢,对吧,生成定时任务,去定时的监控这个haveve的原数据指标,对吧?啊,那这样也是没有任何问题的,对吧,当然在这的话呢,我们就写一下这个。
11:32
I的原数据质量的监控代码,然后手动去执行它,对吧,来测试一下,当然你可以说。定时去调动它,让它自动执行,呃,那这呃实际上是一种更加推荐的做法,呃只不过它的这个代码和我们之前呃就是说MYSQL数据监控的呃那个作业对吧,那个定时任务的代码呢,基本上是差不多的,所以说呃我们也就没有必要说是去重复的调这些代码对吧,好,CQ exception,然后呢,还是一个class not found exception,然后呢,一一.print对吧,我们把这个呃就是说。
12:18
错误站呢,给它打出来,然后呢,我们在这里边的话呢,当然我们首先还是要把这个拷贝过来,也就是我们的驱动类,对吧,也就是说你在读写一个数据库的时候呢,你肯定要指定这个JDBC的驱动类,对吧?啊,因为这个JDBC呢,它是一个协议,那么你可以用GDBC读写,买CQ呀,Click house呀,什么Oracle呀等等等等,其实有很多好have met。到对吧,Connection等于什么呢?Driver manager get connection,然后呢,这个的话呢,是JDBC买CQ冒号local hosts对吧,当然缺了双斜杠买这个冒号双斜杠logoos冒号3306。
13:08
斜杠h catalog,问号use s SL等于false route,好,那这样的话呢,我们就获得了,对吧?针对获取针对have源数据库的连接,对吧,那这样的话呢,我们就获取了这样的一个连接,好。然后接下来的话呢,我们就来编写查询语句,那就是select table name。对吧,以及data base name,也就是说我们的这个查询语句呢,我们的第一步呢,我们是先把我们have数据库里边的数据库的名字和表名给他查出来,对吧?因为这些源信息呢,其实都是存在我们的MYSQL里面的,对吧?呃,当然你在这儿的话,你就要注意它的表,因为它因为它的这些原数据保存的一些表名呢,它实际上它这个命名呢,呃感觉并不是那么规范,或者说可读性并没有那么强,对吧?所以说呃可能需要查一些文档来看一下它的,呃这些表名它的含义到底是什么对吧?当然在这的话呢,我们就是呃查询have数据库里边的所有的数据库的名字和表名,对吧?那在这的话就是select t b ls这个TBLS这个里边的话呢,它保存了呃,Have数据库里边所有表的源信息,对吧。
14:48
那么D bs.name对吧?那么这个DBS这个数据库里面或这张表里面呢?它保存的是什么呢?它保存的是我们have的。
15:02
所有数据库的源信息,对吧,然后呢,我们再把这个TBLS点。呃,TBL_ID对吧,我们把这个表的ID呢,给他查出来,然后from。TBLS对吧?From TB ls,当然你在这儿的话,你可以回车。从这张表里边,当然你除了这张表以外呢,其实你光这张表,呃,你还查不出这所有的字段,所以说我们还需要做一个连表查询,那么在这的话呢,就是inner join DBS对吧,就是说TBLS和DBS保存表的源信息的表和保存数据库的源信息的表,那么来进行一个连表查询,那么它的连表查询条件是什么呢?TBLs.T这个DBID等于DBs.DB_ID对吧?也就是说我们这个连表查询呢,实际上就是把。
16:10
呃,就是说TBLS里边的数据库的名字,也就是TBS里边呢,它保存的是have里面表的源信息,对吧?当然它每一张表它都存属于一个数据库,而我们在这连表查询的时候呢,那就是表里边的数据库ID和数据库的存储数据库信息的这张表里面的数据库的ID呢,啊要一样,那这样的话呢,你查出来的话呢,那就是我查出来这三个字段,对吧。我查出来的表名和表的ID,那它肯定是属于这个数据库的,对不对,呃,这个就是这个连表查询的一个意义,对吧?呃,就是这个连表查询的意义,然后呢,我们result set等于select table name点。Execute query对吧,来执行这个查询。呃,那执行完这个查询以后呢,我们在这的话呢,我们就挖一个Java。
17:04
Details对吧,等于new一个a list啊,也就是说我们要把这些呃监控的结果呢,给它写到一个列表里面,对吧,写到一个列表里面啊,那这个列表的。里边的元素类型是government detail,然后在这的话,你可以看到下面有一个绿线,就是我们这拼写是有问题的,所以我们在这写一个N对吧,那这样的话就没有问题了,对吧,这样就没有问题了,好。然后呢,我们开始从这个呃,就是说联表查询的结果里边呢,把有用的信息呢给它提取出来,对吧?把有用的信息给它提取出来好,呃,那么在这的话呢,我们首先就是一个while循环result set.next如果它为true的话,说明我们查到的结果呢,不会空,对吧?然后呢,Y detail等于我们new一个government detail这样的一个呃类,对吧?然后呢,我们就开始把它的每一个字段呢给他填上,呃,首先呢,我们要填的是数据库的名字对吧?呃,就是表的名字,然后get string。
18:14
那这个表的字段名呢,是TBLs.TBL下划线,那当然你也可以给它起一个别名,对吧,也是没有任何问题的好,那第二个的话,我们要set的是什么呢?我们要set的是数据库的名字,呃,Result set.get string,然后呢,在这的话呢,是DBs.DB应该是点name对吧?点name好。这样的话呢,把数据库的名字也写进来去了,那么第三个的话呢,就是set table ID对吧?那么这个呢,就是我们的表的一个ID,然后呢,Get long,然后它表的这个ID呢,是TBLs.TBL下滑ID对吧,它是这样的一个字段,好。
19:00
呃,当然我们把这三个字段写进去以后呢,我们接下来我们就开始做什么呢?呃,那么我们接下来呢,我们就开始查询,查询表的一些参数,什么叫做表的一些参数呢?那就是表里边的,比如说某一个字段。它对吧,或者说表这张表它有没有注释对吧,那这个就是呃表的一个参数对吧,这个就是表的一个参数,好呃所以说呢,我们现在呢,我们就把这个表的这个呃是否有注释的这个结果呢,给它查询出来,对吧?那就是va select。Table comment等于have,点呃,点这个。Prepare statement对吧,然后呢,我们的这个C后语句是什么呢?Select from。
20:06
然后呢,它是table pattern,这个table patterns呢,它里边就存储了一些表的参数,或者说表的信息,对吧?比方这张表它是否有注释对不对,那么我们怎么去查询呢?Select here from table下划线,呃,PAR,然后呢,Where t BL_ID等于问号。对吧,然后and。Per key,也就是参数的这个key呢,是什么呢?是comment好OK,那这样的话呢,呃,我们就。查出了表的一些参数对吧?查出表的一些参数以后呢,呃,我们接下来的话呢,我们,呃,当然你这里边你是需要给他设置一下占位符的,对吧?呃,当然我们这边我们只有一个占位符,那就是呃,它的表的ID get table ID好。
21:07
然后接下来的话呢,我们就来执行这个呃查询。Comment,对吧,Set。等于什么呢?等于select table comment.xq的query对吧?那这个就是它查询出来的结果集对吧?它查询出来的结果集好。然后在这的话,我们做一个if if判断,如果comment result.set.next对吧,为true,那说明我们查询到了结果,对吧?说明我们查询到这个数据,那么。Comment等于comment result set.get string,对吧?OK,那么它字段名是什么呢?下滑value OK。
22:00
那这个就是它的注释对吧?这个就是它的注释,也就是我们查询到呃了这个结果对不对,因为我们这个pair key呢,我们给他设置的是注释,也就是说你查询到结果的话呢,那说明这个表是有注释的,对吧,查询到结果说明表有注释,好,那接下来的话呢,我们就可以detail,然后set has table comment,对吧,给它设置一个处了,因为它有注释嘛。那接下来的话呢,我们还要判断一张表是否有业务负责人和技术负责人啊,当然这个是否有业务负责人和技术负责人呢?呃,其实他实际上是公司在建表的时候的一些约定,一般来说我们我们会把业务负责人和技术负责人呢写到表的注释里边,所以说我们在这的话呢,就非常简单,表set has technical owner,对吧,也就是说我们这个注释里边只要判断它是否有技术负责人这个字符串,对吧,点set。
23:10
Has什么呢?呃,就是说has,我们来看一下。Business owner对吧。Has business owner对不对?然后呢,comment.contain业务负责人啊,因为我们的技术负责人和业务负责人一般是写在注释里面的,所以说我们只需要判断一下,他这个注释里边包含技术负责人和业务负责人。呃,是否包含这两个字符串就可以了,对吧?是否包含这两个字符串就可以了,当然你可以看到我这个set has business owner这个呢,它标红了对吧?那么这个说什么,说明什么呢?说明我在这里面实际上呃,并没有写这个字段,所以我们在这的话,我们就是private布尔has business owner对吧,是否有业务负责人对吧?那这样的话呢,我们就把这个bug给它修掉了,当然在这的话呢,我们光做这个还不够,我们还是需要呃生成一些get set的,对吧,为他。
24:22
为这个字段好,OK,那么只剩下这一个字段呢,没有生成get,我们点击确定,哎,就生成好了,那么你可以看到这里边,哎,这个标红的呢,也就消消除掉了,好啊,那这个是if else,如果没有查询到注释的话,那说明这张表是没有注释的,那么我们set has。呃,这个table comment,我们直接给它添加一个false对吧?detail.set呃,Has owner对吧?它没有注释,自然也就没有技术负责人和业务负责人了,好,OK false。
25:02
好,那这个是我们,呃,现在编写完了,呃,就是说这些指标的监控,然后接下来的话呢,我们还要看一下,就是说计算一下一下过去七天是否有产出,对吧?那么你这个过去七天是否有产出,它应该是在哪张,就是说原数据库里边的哪张表里边。对吧?去查询这个呢,我们来看一下,我们构建一下这个查询语句,Va select last d dl time,对吧?我们都知道这个DDL呢,其实就是对数据库的一个更改,对吧?那么既然更改了数据库,那就说明它是有产出的,对吧,Prepare statement好,然后呢,我们的这个CQL呢,是这样子的,Select芯from table_S对吧?它还是从这个table pairs里边查出来的,只不过它的查询条件变了,Where t BL_ID等于问号,And per_K等于什么呢?它这个参数的K呢,有一点点奇怪,对吧,它的名字叫做。
26:27
Transt_Lu d dl time。OK。那这样的话,我们这个CQ语句呢,就已经构建成了,然后呢,我们在这我们还是呃,先给它设置一下占位符对吧?detail.get table ID好。然后呢,Last d dl time result set,也就是他查询的结果呢,应该是select last,呃,DDL time.XQ query对吧,这样的话呢,我们就执行了这个查询语句,然后我们把它的查询结果呢拿出来,对吧?如果last e dl time set.next为触的话,那说明。
27:21
是有数据的对吧,有数据的话呢,那我们就把这个last d dl time这个时间呢,给它取出来,那么就是last d d time result set.get long对吧,然后呢,Per value好。把这个时间取出来,然后呢,取出来以后呢,我们再计算一下当前的呃,就是说时间戳对吧?我们再获取一下当前的时间戳system.current ten minutes,然后呢,除上1000对吧?这个就是当前的秒级时间戳,呃,然后呢。
28:02
我们detail.set。Has output last seven days对吧,那么在这里面的话呢。他在过去期间是否有产出呢?对吧,它是一个布尔值,我们这里面直接计算一下就好了,那在这的话呢,就是当前的时间戳减去上一次修改的时间除以什么呢?除以24小时乘以。60分钟再乘以60秒对吧。如果它小于等于七,那就说明。对不对。过去七天是有产出的,如果它大于等于大于七的话,那说明过去七天没有产出,那么else的话呢,那自然就呃很简单了,对吧,我们直接给他一个false就可以了,好OK啊,那这样的话呢,我们就计算完了过去七天是否有产出对吧?那么接下来我们要查询的结果是什么呢?接下来我们要查询的结果就是诶。
29:08
表的字段是否有注释对吧?我们要计算的是表的字段是否有注释,那么表的字段这样的原信息它存在哪张表里边呢?我们接下来看一下,它实际上是存在,呃,这个。呃,就是说columns_VR这张表对吧?Select fields引等于have met stop.prepare statement,然后呢,我们的查询语句select from columns,对吧?也就是说第二版的。呃,这个字段的信息表对吧?YCD_ID等于问号对吧,你可以看到它这个。
30:10
列的名字对吧?CD_ID这个可读性十分之不好,对吧?实际上这个CD_ID呢,它是表的ID,所以我们这个占位符的话呢,我们就给它set一下对吧,Set什么呢?表的ID对吧?也就是说我们通过表的ID呢,查出这张表,查出这张表的所有字段的信息,好,我们现在的话呢,我们就来做一个查询,Y FS result set等于select fields in four.execute que对吧,我们执行这样的一个查询,然后呢,detail.set。Fields number,零对吧?我们先给他一个呃,初始值对吧?我们先给他一个初始值,然后呢,Set missing comment,呃,Fields numbers,对吧?我们都给它初始值为零,然后接下来的话呢,我们从数据库里面把这个结果取出来,然后呢,再对它进行赋值,对吧?我们先给它一个初始值为零嘛,好。
31:21
detail.set field number。对吧,那就是detail.get FS number加上一,这是什么意思呢?你这里面你只要查询的这个结果集合不为空,对吧。那就说明它的字段数量肯定是不为零的,对吧,那当我们每一次循环的话呢,我们的字段数量就加一对吧。循环一次,字段数量加一次一,然后呢,我们再做一个一判断。A few result set get string,什么字段呢?Comment字段。
32:07
对吧,如果等于now,这说明什么呢?说明说明字段没有注释好,那么自然没有注释的话呢?那我们就detail.set missing comment fields number,对吧,也就是哎。没有注释的,呃,它的一个数量对吧,呃,实际上我们也是需要加一的,对吧,我们也是需要加一的好。OK加一。对吧,你字段没有注释的话,那我这个missing command fields number那肯定是要加一的,然后接,然后呢,我们就可以把这个查询完的结果呢,给它添加进去,因为到此为止的话呢,呃,其实我们已经对have的原数据呢,已经计算完毕了,对吧?啊,当然计算完毕以后呢,我们还需要将计算结果存入数据库,对吧?所以我们在这的话呢,我们又要建立一个连接,我们又要建立一个连接,那就是挖government。
33:21
Detail connection对吧,因为这张表呢,我们刚才已经看过了,在文档里面呢,有具体的建表方式,Get connection好,然后呢,他这张表呢是JDBC。冒号MYCQ,冒号双斜杠local host对吧?我们看一下这张表在哪个数据库里边啊,那么这张表呢,是在云台government这个数据库里边,对吧?Use s SL等于false,好。然后呢,我们是一个root,然后呢,我们继续密码也是root好,那么接下来的话呢,我们就开始呃,往里写数据对吧?呃,我在这里边呢,有一个比较简单粗暴的方式,那就是我首先删除have原数据质量表中的所有数据,然后呢。
34:21
再把我之前的计算结我给它写进去,对吧,首先我们给它删除掉,好,那在这的话呢,那就是一个delete statement等于。呃,等于什么呢?等于我们的这个对吧。然后点prepare statement,然后呢,Delete from have matter data monitor,对吧?先把里面的数据都给它删掉,好执行一下啊,那么删完以后呢,我们就开始插入数据对吧,插入结果好,那么在这的话呢,我们怎么插入结果呢?呃,当然它其实也就很简单了,那就是哇,Insert statement。
35:13
等于government detail.prepare statement,然后呢,我们在这的话呢,就是insert into have met data。Monitor我们要插到这张表里边,然后呢,它的字段有哪些呢?表名数据库的名字对吧,是否有表的注释对不对,是否有表注释啊,然后呢。我们继续写,呃,那除了这个以外呢,那还有就是说fields number对吧?呃。
36:02
字段的数量,然后呢,Missing comment fields number对吧?好,呃,那除了这五个字段以外还有什么呢?我们来看一下has technical对吧,以及has business。Owner,然后呢,Has output last seven days对吧?我们要查询的其实就是我们要插入的其实就是这几个字段,然后呢,Values,我们来看一下需要几个占位符,呃,12345678对吧。我们需要八个占位数,12345678。
37:08
对吧,我们需要八个占位符好。OK,然后呢,我们在这里边,我们用一个for循环来遍历我们之前计算好的这样的一个呃,结果的这样的一个列表,对吧,计算好的结果这样一个列表,呃,然后呢。我们就把这些数据呢,都给它插入进去,Insert。点set string 1.get。Table name,对吧?也就是第一个字段呢,是呃表的名字,那么第二个字段呢,是呃,detail.get对吧?数据库的名字好,那么第三个的话呢,就是set布尔detail.get。
38:04
呃,我们来看一下啊,这个不是delete啊,应该是detail.get has table comment对吧?是否有表注式in色点set,我们继续应该是set int了,接下来该那这个int是什么呢?那这个int就是detail.get。对吧?Field number字段的数量insert statement.set in5,那就是点get missing comments对吧,然后insert statement点。呃,Set特布尔直对吧,第六个,呃,这个站位服呢是get has technical owner是否有技术负责人,Insert点七点has对吧?Be是否有业务负责人。
39:06
好,然后in色尔set布尔值第八个,呃最后一个呢,那就是是否对吧,在过去七天之内呢,有产出,好然后每一次循环的话呢,我们就给它执行一次,然后写入到数据库里边对吧?写入到数据库里边,呃,当然的话呢,我们上面创建了很多语句对吧?所以说呃,你不要忘记把这些语句和连接关闭掉对吧?呃,在这的话呢,我们其实你为了省事的话,你可以直接把这个连这两个连接给它关闭掉,呃,OK,那么下面的话呢,那还有一个就是呃。我们来看一下这个连接的名字呢,叫做government detail connection对吧?Government detail connection.close哎,这个连接我们也就关闭掉了,好,我们现在的话呢,我们就来运行一下这个程序,看一下它能不能往表里边写入结果,对吧?呃。
40:13
我们来写一个main函数来测试一下。写一个main函数来测试一下,好,我们来执行一下,看一下能不能正确的写入呃,这个have的结果,对吧?啊好,那你在这的话呢,你就可以看到说他报了一个CQ这样一个错误,为什么呢?因为我们没有给他呃配置这个class name,当然在这儿的话,其实。Class点方name com com点买CQ点CG.gdbc.driver对吧,实际上我这个已经是配置过了对吧,所以说在这的话,你可以看到这个URL呢,敲的有点问题对吧?好我们重新来运行一下。
41:00
OK。诶,当然你可以看到它执行完了,然后我们去表里边看一下它有没有把这些结果写进来,对吧,柚子云台。Government,然后呢,Show tables select fromta data monitor,哎,你可以看到,诶,这个数据就呃就出来了,因为我们在实现这个逻辑的时候呢,是先删除所有的数据,然后呢,呃再插入计算结果,所以说我们这个计算结果呢,呃已经可以得出来了,对吧?啊,当然就是说你老在数据库里面查找也不是回事,对吧?所以说我们在这的话呢,我们还是写一个controller,呃来把它可视化出来,对吧?写一个controller来把它可视化出来,好呃,那在这里边的话呢,我们就在前端government controller里边,我们写一个呃处理URL的逻辑,对吧?我们定一个URL用来干嘛呢?用来获取have原数据质量的。
42:10
对不对,监控结果OK,那么在这的话呢,我们是一个get mapping。它的ul呢是have met data sc OK,然后呢,Public result里边的泛型呢是list,然后呢,我们这个是一个government detail对吧的一个列表,我们返回的结果是这样子,然后get get have me data sc,好,返回监控结果,当然在这的话呢,我们还是一个串,不要忘记catch CQ exception class not found exception一点print。
43:02
呃,Stas,然后呢,我们return new一个200对吧,Success new一个list,呃,就是不要忘记防御对吧,返回一个空列表。呃,我们在这里边的话呢,我们把这个计算的结果呢,从数据库里面给他查出来,当然我们还是从买CQ里面查,对吧?所以我们这里面要指定驱动类,Com点买Cq.CG.gdbc.driver好,那这样的话呢,我们把驱动类就已经设置好了,然后呢,Connection连接等于driver manager点呃,Get connection获取连接,GDBC冒号,买SQL冒号。双斜杠locals冒号3306。对吧?然后云台government问号use s SL等于false啊,如果你说觉得每一个API我都要打开一次数据库的连接,然后再关闭它,如果你觉得这样很浪费资源的话呢,其实你可以自己去,呃,实现一个连接池,对吧?或者说使用这个已有的连接式工具,呃,这其实都是没有任何问题的,对吧,都是没有任何问题的好,然后呢,我们在这里面的话呢,我们构建一个select statement,对吧,查询语句,然后connection.prepare statement,好,Select from have met data。
44:46
Monitor,好,然后呢,我们result set等于select statement.x query执行这个查询,然后呢,我们再来一个result呢,作为存储返回结果的这样的一个列表,对吧?然后这个列表里边的,呃,就是说。
45:10
类的话呢,是呃,Government detail这样的一种类型,对吧?然后呢,我们使用while循环,把这个列表里面的数据呢给它拿出来,对吧?把这个查询结果的数据呢给它拿出来,然后放到列表里边,然后呢,玩detail等于new一个government detail对吧?然后我们就开始get set它里边的一些字段对吧?呃,我们填出一些字段,首先第一个是database name。Result set.get string data name OK,然后呢,点set。呃,Table对吧,set.get string table好,第三个的话呢,就是set。
46:10
Field number result set.get in对吧,字段的名字好。那么接下来的话呢,还有一些类似于像这个是否有技术负责人对吧?Had business owner result get,布尔值,Has。Business owner。detail.set has owner set.get布尔值,然后呢,这个呢是has t。Nico对吧,然后detail.set has output。
47:08
Last seven days对吧?过去七天是否有产出好,那么这个呢,是result set.get布尔值。Has output last seven days好,那这个就是过去七天是否有产出,然后detail.set missing comment field number对吧,Result set.get int,那这个就是说缺失注释的,呃,这个字段数量,因为你这个一个字段是否有注释对吧?啊,这个实际上是标志了它的一个质量怎么样,对吧,它的质量的高低啊。然后呢?我们再来看一下还有没有缺掉的东西对吧?这里边的话呢,1234567,呃七个字段对吧,那么这我们把这七个字段的数据呢,给它可视化出来,呃,其实基本上就可以了,其实基本上就可以了,我们再看一下呃,还有没有缺失的。
48:17
呃,这样的一些东西对吧。OK,那在这的话呢,还有一个,那就是detail set has table comment,对吧。呃,我们这个表是否有注释,我们啊没有给它填进来,Comment好,然后呢,这个detail呢,我们就可以可以给它放到result里边去了,OK,然后呢,Return一个result.of200success,然后呢,Result,哎,把这个列表放到这个result里边返回就可以了,对吧,返回就可以了。呃,在这儿的话呢,我们还是把这个查询语句呢给它关掉好。
49:06
OK,那这样的话,我们这个控制器也就写完了,然后我们就可以开始启动我们的云台application了,对吧?我们把这个云台application这个应用呢起来以后呢,我们再点击一下前端的这个have表原数据质量来看一下它能不能可视化一些,可视化出一些东西来,对吧?好,我们现在已经启动了,然后我们刷新一下这个页面。对吧?啊,那你就可以看到,诶这里边实际上我们就已经把它查出来了,对吧?比方说这个数据库是default,表示employ字段数量是四,无注释字段数量也是四,是否有技术负责人false,是否有业务负责人false表是否有注释处,对吧?那这个就是一个简单的have原数据质量的一个,呃,监控和计算对吧?好,那么接下来的话呢,我们就开始学习如何计算have的表级血缘关系,那么这部分的话呢,呃,其实有一些复杂的,所以说我们多花一些时间呢来进行讲解。
我来说两句