Log Service資料加工功能支援從阿里雲RDS MySQL資料庫擷取資料,結合資料加工規則,進行資料富化。
背景資訊
在資料存放區情境中,您可能經常遇到資料分散儲存的問題,例如使用者操作、行為等相關資料存放區在Log Service中,使用者屬性、註冊資訊等相關資料存放區在RDS MySQL資料庫中。面對類似問題,您可以通過Log Service資料加工功能從RDS MySQL資料庫擷取資料,儲存到Log ServiceLogstore中。
您可以使用res_rds_mysql函數從RDS MySQL資料庫擷取資料,然後使用e_table_map函數進行資料富化。
RDS MySQL執行個體與Log ServiceProject需處於同一地區,否則無法擷取資料。
如果您要使用RDS內網地址訪問RDS MySQL資料庫擷取資料,進行資料富化,可參見通過Log Service訪問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
Log ServiceLogstore中的日誌範例如下所示。
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"
加工規則
通過Log ServiceLogstore中的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"