暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通过AAT连接AI和数据库

芬芳 2023-10-20
436

通过以下示例,来描述如何通过AAT来连接AI和数据库。在实际使用过程中,请根据实际情况进行操作。

  1. 开启冷数据归档功能。
    为了避免AI模型对数据库的频繁写入,PolarDB将AAT作为外部表存储在OSS上。故需要先开启冷数据归档功能。
  2. 创建数据库。
    创建一个新的数据库polar4ai,系统自动生成的AAT默认存储在数据库polar4ai中。创建数据库时,字符集选择utf8mb4,授权账号需要和PolarDB for AI使用的账号保持一致,并授予该账号读写权限。
  3. 通过以下SQL语句训练一个AI模型。
/*polar4ai*/
  CREATE MODEL airlines_gbm_copy1 
   WITH (model_class='lightgbm', 
 	x_cols ='Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', 
 	y_cols='Delay',
   model_parameter=(boosting_type='gbdt', n_estimators=100, 
                    max_depth=8, num_leaves=256))
   AS (SELECT * FROM airlines_train)

  1. 查看当前集群下的模型列表。
/*polar4ai*/SHOW MODELS;

查询结果如下:
image.png
5.使用训练好的模型进行离线预测,自动生成AAT。

/*polar4ai*/SELECT TripID,Delay
FROM
  PREDICT (
    MODEL airlines_gbm_copy1,
      SELECT * FROM airlines_train_1000_copy1)
WITH
  (
	s_cols='TripID,Delay',
    x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
    y_cols='Delay',
		primary_key='TripID', mode='async') INTO lightgbm_v2_predict82201;

其中,lightgbm_v2_predict82201为系统即将自动构建的AAT的表名,primary_key为表中的主键。离线预测SQL执行完成后,会返回一个任务ID。如:babc6d66-xxxx-yyyy-a4b8-1b1426ce8614。
6.查看离线任务状态。
通过离线任务ID来检查任务状态。当任务状态为finish时,代表AI模型已经完成相应推理。

/*polar4ai*/SHOW TASK `babc6d66-xxxx-yyyy-a4b8-1b1426ce8614`	

执行结果如下:
image.png
7.查看在polar4ai数据库下自动生成的AAT表结构。

SHOW CREATE TABLE polar4ai.lightgbm_v2_predict82201;

执行结果如下:

CREATE TABLE `lightgbm_v2_predict82201` (
 `TripID` bigint(20) NOT NULL,
 `Delay` bigint(20) DEFAULT NULL,
 `result` text,
 PRIMARY KEY (`TripID`)
) ENGINE=CSV DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci /*!99990 800020204 NULL_MARKER='NULL' */ CONNECTION='default_oss_server'

新生成的AAT与原表相对比,TripID和Delay的类型和长度均与原表一致。result为AI模型推理出来的结果,并作为原表的增强列写入了AAT中。
image.png

8.查看AAT中的1000行数据。

SELECT * FROM polar4ai.lightgbm_v2_predict82201 LIMIT 1000;

执行结果如下:
image.png
由查询结果可以看出,新生成的result列包含预测值和不同类别的概率值。

9.通过AAT和数据库表进行连接操作。
自动生成的表lightgbm_v2_predict82201与数据库中其他表在使用上并无差异,可以与数据库中的其他表进行连接操作。示例如下:

SELECT * FROM 
airlines_train_1000_copy1, polar4ai.lightgbm_v2_predict82204 
WHERE 
airlines_train_1000_copy1.TripID=polar4ai.lightgbm_v2_predict82204.TripID 
AND 
airlines_train_1000_copy1.Delay=1

执行结果如下:
image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论