从Hologres数据库获取数据进行富化

本文介绍如何通过资源函数从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=",")

    高级参数配置:image

  • 加工结果

    __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