本文介绍如何通过资源函数从Hologres数据库获取数据进行数据富化。
前提条件
已获取连接Hologres数据库的访问地址、用户名、密码、数据库名和数据库表等。
Hologres数据库实例与日志服务Project处于同一地域。
背景信息
某电商平台将所有物品的销量、购买人的身份信息存储在Hologres数据库中。当新注册的用户登录电商平台时,电商平台根据新用户的性别,在主页为用户推荐相应的商品。面对此类现象,您可以通过日志服务数据加工功能从Hologres数据库获取数据,并通过富化函数将数据富化后,将推荐商品存储到日志服务Logstore中,便于其它服务在Logstore中使用推荐的数据。
在该场景中,使用res_rds_mysql函数从Hologres数据库获取数据,然后使用e_search_table_map函数进行数据富化。
使用e_search_table_map函数进行数据富化
原始数据
Hologres数据库表中的数据样例如下表所示。
product_id
product_name
product_price
product_sales_number
sex
2
lipstick
288
2219
girl
5
watch
1399
265
boy
6
mac
4200
265
boy
3
mouse
20
2583
boy
1
basketball
35
3658
boy
4
notebook
9
5427
girl
日志服务Logstore中的日志样例如下所示。
__source__:192.168.2.100 __tag__:__client_ip__:192.168.1.100 age:22 name:xiaoli profession:students sex:girl __source__:192.168.2.200 __tag__:__client_ip__:192.168.1.200 age:21 name:xiaoming profession:students sex:boy
加工规则
通过日志服务Logstore中的sex字段和Hologres数据库表中sex字段进行匹配,只有sex字段的值相同时,才能匹配成功。匹配成功后,返回Hologres数据库表中product_name,与Logstore中的数据拼接,生成新的数据。
场景一:通过公网域名访问Hologres数据库。
e_search_table_map(res_rds_mysql(address="rds-host", username="mysql-username", password="yourpassword", database="yourdatabasename", table="yourtablename", refresh_interval=60, connector='pgsql'), inpt="sex",output_fields="product_name", multi_match=True, multi_join=",")
说明您可以在Hologres实例的网络信息中,获取Hologres数据库的公网域名,将address配置为该值即可。
场景二:通过VPC方式访问Hologres数据库。建议您使用该方式,可以提高访问Hologres实例的安全性和稳定性。您可以在高级预览中添加高级参数配置config.vpc.vpc_id.name、config.vpc.instance_id.name、config.vpc.instance_port.name(三个参数名中的name必须保持一致,支持用户自定义),然后您可以在hologress实例的网络信息中,获取Hologres数据库的vpc id、vpc实例 id和端口号,填入对应的参数值中。
e_search_table_map(res_rds_mysql("{}:{}",res_local("config.vpc.instance_id.name"),res_local("config.vpc.instance_port.name")), username="mysql-username", password="yourpassword", database="yourdatabasename", table="yourtablename", refresh_interval=60, connector='pgsql'), inpt="sex",output_fields="product_name", multi_match=True, multi_join=",")
高级参数配置:
加工结果
__source__:192.168.2.100 __tag__:__client_ip__:192.168.1.100 __tag__:__receive_time__:1615518043 __topic__: age:22 name:xiaoli product_name:lipstick,notebook profession:students sex:girl __source__:192.168.2.200 __tag__:__client_ip__:192.168.1.200 __tag__:__receive_time__:1615518026 __topic__: age:21 name:xiaoming product_name:basketball,watch,mac,mouse profession:students sex:boy