日志服务数据加工功能支持从阿里云RDS MySQL数据库获取数据,结合数据加工规则,进行数据富化。
背景信息
在数据存储场景中,您可能经常遇到数据分散存储的问题,例如用户操作、行为等相关数据存储在日志服务中,用户属性、注册信息等相关数据存储在RDS MySQL数据库中。面对类似问题,您可以通过日志服务数据加工功能从RDS MySQL数据库获取数据,存储到日志服务Logstore中。
您可以使用res_rds_mysql函数从RDS MySQL数据库获取数据,然后使用e_table_map函数进行数据富化。
RDS MySQL实例与日志服务Project需处于同一地域,否则无法获取数据。
如果您要使用RDS内网地址访问RDS MySQL数据库获取数据,进行数据富化,可参见通过日志服务访问RDS MySQL进行数据富化。
结合e_table_map函数进行数据富化
本示例介绍使用e_table_map函数和res_rds_mysql函数完成数据富化的方法。
原始数据
RDS MySQL数据库表中的数据样例如下表所示。
province
city
population
cid
eid
上海
上海
2000
1
00001
天津
天津
800
1
00002
北京
北京
4000
1
00003
河南
郑州
3000
2
00004
江苏
南京
1500
2
00005
日志服务Logstore中的日志样例如下所示。
time:"1566379109" data:"test-one" cid:"1" eid:"00001" time:"1566379111" data:"test_second" cid:"1" eid:"12345" time:"1566379111" data:"test_three" cid:"2" eid:"12345" time:"1566379113" data:"test_four" cid:"2" eid:"12345"
加工规则
通过日志服务Logstore中的cid字段和RDS MySQL数据库表中cid字段进行匹配,只有cid字段的值完全相同,才能匹配成功。匹配成功后,返回RDS MySQL数据库表中的province、city和population字段和字段值,与Logstore中的数据拼接,生成新的数据。
说明日志字段的值和RDS MySQL数据库表字段的值进行等值匹配时,如果RDS MySQL数据库表字段存在多个相同的值(例如RDS MySQL数据库表有多个值为1的cid字段),e_table_map函数只获取匹配到的第一行数据。
e_table_map(res_rds_mysql(address="rds-host", username="mysql-username",password="xxx",database="xxx",table="xx",refresh_interval=60),"cid",["province","city","population"])
在res_rds_mysql函数中配置RDS MySQL数据库相关信息,详情请参见res_rds_mysql。
加工结果
time:"1566379109" data:"test-one" cid:"1" eid:"00001" province:"上海" city:"上海" population:"2000" time:"1566379111" data:"test_second" cid:"1" eid:"12345" province:"上海" city:"上海" population:"2000" time:"1566379111" data:"test_three" cid:"2" eid:"12345" province:"河南" city:"郑州" population:"3000" time:"1566379113" data:"test_four" cid:"2" eid:"12345" province:"河南" city:"郑州" population:"3000"