本文介紹如何通過資源函數從Hologres資料庫擷取資料進行資料富化。
前提條件
已擷取串連Hologres資料庫的訪問地址、使用者名稱、密碼、資料庫名和資料庫表等。
Hologres資料庫執行個體與Log ServiceProject處於同一地區。
背景資訊
某電商平台將所有物品的銷量、購買人的身份資訊儲存在Hologres資料庫中。當新註冊的使用者登入電商平台時,電商平台根據新使用者的性別,在首頁為使用者推薦相應的商品。面對此類現象,您可以通過Log Service資料加工功能從Hologres資料庫擷取資料,並通過富化函數將資料富化後,將推薦商品儲存到Log ServiceLogstore中,便於其它服務在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
Log ServiceLogstore中的日誌範例如下所示。
__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
加工規則
通過Log ServiceLogstore中的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