liqian 1 ano atrás
pai
commit
f733678d66
3 arquivos alterados com 26 adições e 2 exclusões
  1. 1 1
      ad_feature_process.py
  2. 23 1
      ad_predict_user_data_process.py
  3. 2 0
      config.py

+ 1 - 1
ad_feature_process.py

@@ -168,7 +168,7 @@ if __name__ == '__main__':
     print(f"now_date: {datetime.datetime.strftime(now_date, '%Y%m%d')}")
     dt = datetime.datetime.strftime(now_date - datetime.timedelta(days=15), '%Y%m%d')
     print(f"update data dt: {dt}")
-    df = daily_data_process(project=project, table=table, features=features, dt=dt, app_type=0)
+    df = daily_data_process(project=project, table=table, features=features, dt=dt, app_type=5)
     print(f"{time.time() - st_time}s")
 
     # for days in range(15, 23):

+ 23 - 1
ad_predict_user_data_process.py

@@ -3,8 +3,11 @@ import time
 import datetime
 import pandas as pd
 from odps import ODPS
-from utils import data_check
+from utils import data_check, RedisHelper
 from threading import Timer
+from config import set_config
+config_, _ = set_config()
+redis_helper = RedisHelper()
 
 # ODPS服务配置
 odps_config = {
@@ -107,6 +110,25 @@ def user_data_process(project, table, dt, app_type):
     if not os.path.exists(predict_data_dir):
         os.makedirs(predict_data_dir)
     user_df.to_csv(f"{predict_data_dir}/user_feature.csv", index=False)
+    # to redis
+    xgb_config = config_.AD_MODEL_ABTEST_CONFIG['xgb']
+    for ind, row in user_df.iterrows():
+        app_type = row['apptype']
+        mid = row['mid']
+        value = {
+            'mid_preview_count_30day': row['mid_preview_count_30day'],
+            'mid_view_count_30day': row['mid_view_count_30day'],
+            'mid_view_count_pv_30day': row['mid_view_count_pv_30day'],
+            'mid_play_count_30day': row['mid_play_count_30day'],
+            'mid_play_count_pv_30day': row['mid_play_count_pv_30day'],
+            'mid_share_count_30day': row['mid_share_count_30day'],
+            'mid_share_count_pv_30day': row['mid_share_count_pv_30day'],
+            'mid_return_count_30day': row['mid_return_count_30day'],
+            'mid_share_rate_30day': row['mid_share_rate_30day'],
+            'mid_return_rate_30day': row['mid_return_rate_30day']
+        }
+        key = f"{xgb_config['predict_user_feature_key_prefix']}{app_type}:{mid}"
+        redis_helper.set_data_to_redis(key_name=key, value=str(value), expire_time=48 * 3600)
 
 
 def timer_check():

+ 2 - 0
config.py

@@ -1975,6 +1975,8 @@ class BaseConfig(object):
         'xgb': {
             # 视频特征存放 redis key 前缀,完整格式:ad:xgb:predict:video:{app_type}:{video_id}
             'predict_video_feature_key_prefix': 'ad:xgb:predict:video:',
+            # 用户特征存放 redis key 前缀,完整格式:ad:xgb:predict:user:{app_type}:{mid}
+            'predict_user_feature_key_prefix': 'ad:xgb:predict:user:',
             # 预测结果存放 redis key 前缀,完整格式:ad:xgb:predict:{app_type}:{mid}:{video_id}
             'predict_key_prefix': 'ad:xgb:predict:',
             # 阈值计算记录存放 redis key