FIELD_MAPPING.md
4.73 KB
数据库字段映射说明
实际表结构
根据检查结果,实际的表结构如下:
sensors_events 表(用户行为事件表)
| 代码中使用的字段 | 实际字段名 | 说明 |
|---|---|---|
user_id |
anonymous_id |
匿名用户ID |
item_id |
item_id |
商品ID |
event_type |
event |
事件类型 |
create_time |
create_time |
创建时间 |
platform |
business_platform |
业务平台 |
client_platform |
client_platform |
客户端平台 |
不存在的字段:
- ❌
country- 国家字段(原计划支持,但表中不存在) - ❌
customer_type- 客户类型字段(原计划支持,但表中不存在)
其他可用字段:
ip- IP地址item_type- 商品类型location_src- 位置来源search_content- 搜索内容page_type- 页面类型session_id- 会话ID
prd_goods_sku 表(商品SKU表)
| 代码中使用的字段 | 实际字段名 | 说明 |
|---|---|---|
item_id |
id |
商品ID |
item_name |
name |
商品名称 |
item_create_time |
create_time |
商品创建时间 |
不存在的字段:
- ❌
category_level2_id- 二级分类ID - ❌
category_level3_id- 三级分类ID
其他可用字段:
goods_id- 关联商品主表IDbuyer_id- 买家IDfactory_no- 工厂编号package_type_name- 包装类型名称on_sell_time- 上架时间price_base- 基础价格
当前支持的维度
基于实际表结构,当前代码支持以下维度:
单维度
- ✅
platform- 业务平台(business_platform) - ✅
client_platform- 客户端平台 - ❌
country- 国家(字段不存在) - ❌
customer_type- 客户类型(字段不存在) - ❌
category_level2- 二级分类(字段不存在) - ❌
category_level3- 三级分类(字段不存在)
组合维度
- ✅
platform_client- 业务平台 + 客户端平台
列表类型
- ✅
hot- 热门商品 - ✅
cart- 加购商品 - ✅
new- 新品
如何扩展更多维度
方案1: 使用现有字段
可以考虑使用表中已有的其他字段来扩展维度:
# 在 interest_aggregation.py 的 SQL 查询中添加
sql_query = f"""
SELECT
...
se.page_type, # 页面类型
se.item_type, # 商品类型
pgs.package_type_name, # 包装类型
...
"""
# 在聚合函数中添加新维度
if pd.notna(row.get('page_type')):
key = f"page_type:{row['page_type']}"
aggregations[key][item_id] += weight
if pd.notna(row.get('item_type')):
key = f"item_type:{row['item_type']}"
aggregations[key][item_id] += weight
方案2: 关联其他表获取分类信息
如果分类信息在其他表中,可以通过 JOIN 获取:
sql_query = f"""
SELECT
se.anonymous_id AS user_id,
se.item_id,
...
gc.category_level2_id,
gc.category_level3_id
FROM
sensors_events se
LEFT JOIN prd_goods_sku pgs ON se.item_id = pgs.id
LEFT JOIN goods_category gc ON pgs.goods_id = gc.goods_id # 假设有这个表
...
"""
方案3: 从 JSON 字段提取
如果 __properties 字段包含额外信息,可以解析JSON:
# 在查询中
sql_query = f"""
SELECT
...
se.__properties as properties_json
...
"""
# 在处理时
import json
props = json.loads(row.get('properties_json', '{}'))
if 'country' in props:
key = f"country:{props['country']}"
aggregations[key][item_id] += weight
推荐的实际使用维度
基于现有字段,建议使用以下维度组合:
业务平台维度 -
platform:{business_platform}- 示例:platform:pc, platform:mobile
客户端平台维度 -
client_platform:{client_platform}- 示例:client_platform:web, client_platform:app
页面类型维度 -
page_type:{page_type}(需添加)- 示例:page_type:detail, page_type:list
商品类型维度 -
item_type:{item_type}(需添加)- 示例:item_type:normal, item_type:special
更新后的输出示例
# 实际可用的索引键
platform:pc → 12345:98.5,23456:87.3,...
platform:mobile → 34567:76.2,45678:65.1,...
client_platform:web → 56789:54.3,67890:43.2,...
client_platform:app → 78901:32.1,89012:21.0,...
platform_client:pc_web → 90123:123.4,01234:112.3,...
总结
- 已实现: 基于
business_platform和client_platform的索引 - 未实现: country、customer_type、分类相关索引(因字段不存在)
- 可扩展: page_type、item_type 等其他维度
如需支持更多维度,请参考上述方案进行扩展。