什麼年代了!你還在寫 ETL 代碼抽取特徵?
- 對象:統計對象類似關係資料庫中的實體,例如由 uuid 唯一標識的用戶
- 維度:是進行統計時所需要關注得變數,例如用戶的年齡、使用平台等
- 度量:有物理意義的量化值,例如曝光次數、點擊次數等
- 統計:針對度量值進一步的加工處理結果,例如求一個分布/佔比,或者就是簡單地累加一下(在美團點評的業務場景中,一共只有六種計算模式,具體還請看原文)
SELECT uuid, // 統計對象,每一個用戶 tag, // 計算維度:品類 rate(order) AS tag_click_rate // 用戶下單品類偏好 rate(click) AS tag_click_rate // 用戶點擊品類偏好FROM usersGROUP BY uuid, tag SELECT uuid, // 統計對象,每一個用戶 price, // 計算維度:下單金額 percentile(order) AS price_order_dist // 分位點函數FROM usersGROUP BY uuid, price
如果考慮時間維度的衰減,計算應該分為兩個階段,得到每一天的度量值,然後根據時間進行衰減,之後再進行累加:
SELECT uuid, price, percentile(sum(decay_value)) // 對加權以後的度量值再進行統計計算FROM (SELECT uuid, // 統計對象,每一個用戶 price, // 統計維度:下單金額 dt, // 時間維度 order * log(factor) * (dt - end) AS decay_value FROM users GROUP BY uuid, dt, price) tGROUP BY uuid, price
最後配置文件的 Parser 也沒有必要自己開發,美團點評用的是 TOML 這個開源語言。
推薦閱讀:
※工程師要不要寫ETL?——教你構建高效的演算法/數據科學部門
※kettle插件架構
※衛星ETL技術的發展?
※kettle 8 新變化