188
微信
数据格式规范__数据规范_开发者指南_推荐引擎-阿里云
推荐引擎的基础数据模型如下:
该数据模型总共包括了六张表,这些表有以下特点:
- 在MaxCompute(原来ODPS)中需要自己手工创建这些表;
- 表名没有固定要求,可以按照自己的习惯命名;
- 每张表的表结构必须符合推荐引擎的要求,列名、字段类型和分区格式需要和规范中保持一致(参考下面的表结构说明);
- 每张表中填充的数据,必须符合推荐引擎的要求;
- 每张表中是否都有记录取决于业务场景和业务数据现状,其中以下几张表中必须有数据:用户信息表、物品信息表、用户行为表;
- 对于业务数据中无法提供的字段可以填NULL;
- 每张表都必须是分区表,以’yyyyMMdd’格式的字符型字段ds作为分区字段;
除了行为表需要每日上传外,其他meta表如果不发生变化可以不导,推荐引擎会自动获取最近一个有数据的分区中的meta表数据进行算法计算。将数据导入不同分区时,请遵守下面的规则:
- 用户表(user_meta):每天可全量导入在一个固定分区(insert OVERWRITE TABLE user_meta PARTITION (ds=’20160501’}));
- 物品表(item_meta):每天可全量导入在一个固定分区(insert OVERWRITE TABLE item_meta PARTITION (ds=’20160501’}));
- 可推荐物品表(rec_item_info):每天全量导入在一个固定分区(insert OVERWRITE TABLE rec_item_info PARTITION (ds=’20160501’}));
- 行为表(user_behavior):每天增量导入在不同的分区(insert OVERWRITE TABLE user_behavior PARTITION (ds=yyyyMMdd’}));
- 推荐引擎在对数据进行离线计算时,会产生数据结果数据和中间数据。其中中间数据的数据量大小取决于所使用的离线流程中的算法复杂度。例如一个标准的协同过滤算法其中间表数据量可能是原始数据输入表数据量的5到10倍。推荐引擎默认对中间数据保留一天。
用户表(user_meta)
字段描述
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID,可以是AID,device id,淘宝ID等各种唯一标识用户身份的ID。不能出现( 01- 03)特殊字符。以下user_id字段同此意 | 否 |
tags | string | 标签-标签值kv串。不同tag之间用 02分隔,tag和value之间用 03分隔(方括号不保存在数据库中,以下同)。[t1 03v1 02t2 03v2…] 比如用户有两个标签年龄和性别,tag可以取age,gender;value 取对应的值,如18、1 详见【注释1】 |
是 |
分区描述
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区 格式 ‘yyyyMMdd’ | 否 |
ODPS DDL示例
CREATE TABLE user_meta (
user_id STRING,
tags STRING
)
PARTITIONED BY (
ds STRING
);
ODPS SQL示例
INSERT OVERWRITE TABLE user_meta PARTITION (ds='20160101')
SELECT 'u1' AS user_id
, concat('age', ' 03', '18') AS tags
FROM dual;
用户属性维度表 (user_meta_config)
字段描述
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
config_name | string | config_name值为user_meta 表tags中的key,每个key一条记录 | 否 |
config_value | string | config_value取值为mv_enum,kv_num,sv_enum,sv_num,分别代表多值枚举型,KV数值型,单值枚举型,单值数值型四种标签取值类型。 | 否 |
ODPS DDL示例
CREATE TABLE user_meta_config (
config_name STRING,
config_value STRING
);
ODPS SQL示例
INSERT OVERWRITE TABLE user_meta_config
SELECT 'age' AS config_name
, 'sv_enum' AS config_value
FROM dual;
物品表(item_meta)
字段描述
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
item_id | string | 物品ID,唯一标识 | 否 |
category | string | 物品所属类目,最好以ID的形式给出 | 是 |
keywords | string | 关键词串。关键词可以有权重(需要归一化到0-1之间),也可以没有权重,没有权重时所有词的权重都是1。Keywords之间用 02分隔,keyword和score之间用 03分隔(如果score存在)[kw1 03s1 02kw2 03s2 02…] | 是,不过category,keywords,properties,description,bizinfo五者不能都为空 |
description | string | 用于描述这个物品C的一段文本 | 是 |
properties | string | 属性-属性值kv串。不同key之间用 02分隔,key和value之间用 03分隔。不同property的key最好以ID的形式给出【注释1】[k1 03v1 02k2 03v2…] 比如电影作为item,那么properties中的key可以是演员、风格、制片人等 |
是 |
bizinfo | string | 物品的业务信息,KV格式。不同KV之间以 02分隔,key和value之间以 03分隔。可以留NULL。bizinfo和properties的区别在bizinfo不参与特征提取的计算 | 是 |
分区描述
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区格式 ‘yyyyMMdd’ | 否 |
ODPS DDL示例
CREATE TABLE item_meta (
item_id STRING,
category STRING,
keywords STRING,
description STRING,
properties STRING,
bizinfo STRING
)
PARTITIONED BY (
ds STRING
);
ODPS SQL示例
INSERT OVERWRITE TABLE item_meta PARTITION (ds='20160101')
SELECT 'i1' AS item_id
, '16' AS category
, concat('hello', ' 02', 'word') AS keywords
, '' AS description
, NULL AS properties
, NULL AS bizinfo
FROM dual
物品属性维度表 (item_meta_config)
字段描述
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
config_name | string | config_name值为item_meta表properties中的key,每个key一条记录 | 否 |
config_value | string | config_value取值为mv_enum,kv_num,sv_enum,sv_num,分别代表多值枚举型,KV数值型,单值枚举型,单值数值型四种标签取值类型。多值用 04 隔开 | 否 |
ODPS DDL示例
CREATE TABLE item_meta_config (
config_name STRING,
config_value STRING
);
ODPS SQL示例
INSERT OVERWRITE TABLE item_meta_config
SELECT 'singer' AS config_name
, 'sv_enum' AS config_value
FROM dual;
行为表(user_behavior)
字段描述
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID | 否 |
item_id | string | 物品ID | 否 |
bhv_type | string | 行为类型: view:物品曝光 click:用户点击物品 collect:用户收藏了某个物品 uncollect:用户取消收藏某个物品 search_click:用户点击搜索结果中的物品 comment:用户对物品的评论 share: 分享 like:点赞 dislike:点衰 grade:评分 consume:消费 use:观看视频/听音乐/阅读 行为表记录的用户行为用于用户偏好建模 |
否 |
bhv_amt | double | 用户对物品的评分、消费、观看时长等。 | 否 |
bhv_cnt | double | 行为次数,默认为1,消费可以埋购买件数 | 否 |
bhv_datetime | datetime | 行为发生的时间,UTC格式。 | 否 |
content | string | 用户对物品的评价文本 | 是 |
media_type | string | 如果bhv_type=share,该字段记录分享到目标媒体。短信:sms,邮件:email,微博:sina_wb,微信好友:wechat_friend,微信朋友圈:wechat_circle,QQ空间:qq_zone,来往好友:laiwang_friend,来往动态:laiwang_circle | 是 |
pos_type | string | 行为发生的位置类型,和下面position字段联合使用,有三种取值: ll:经纬度格式的位置信息 gh:geohash格式的位置信息 poi:poi格式的位置信息 |
是 |
position | string | 行为发生的位置,根据pos_type有不同的取值格式: 如果pos_type=ll,position格式[longitude:latitude] 如果pos_type=gh,position格式[geohashcode] 如果pos_type=poi,position格式[poi_string] |
是 |
env | string | JSON String { “IP”:””, “network”:””, “device”:”” } IP: IP地址。行为发生时用户的IP地址。IPv4为点分十进制格式;IPv6为冒号分隔的标准6段格式(不使用IPv6嵌套IPv4的格式) network: 网络制式。行为发生时用户所使用的接入网络,取值为solid,2G,3G,4G,WIFI。分别表示固网,2G,3G,4G和WIFI接入方式 device: 发生行为所使用的设备,包括mobile,pad,pc等,可添加 其他自定义环境变量也可以添加到JSON中 |
是 |
trace_id | string | 返回的推荐列表用于跟踪效果。如果对item_id 的行为不是来自推荐引导,则为NULL | 是 |
分区描述
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区 | 否 |
ODPS DDL示例
CREATE TABLE user_behavior (
user_id STRING,
item_id STRING,
bhv_type STRING,
bhv_amt DOUBLE,
bhv_cnt DOUBLE,
bhv_datetime DATETIME,
content STRING,
media_type STRING,
pos_type STRING,
position STRING,
env STRING,
trace_id STRING
)
PARTITIONED BY (
ds STRING
);
ODPS SQL示例
INSERT OVERWRITE TABLE user_behavior PARTITION (ds='20160101')
SELECT 'u1' AS user_id
, 'i1' AS item_id
, 'click' AS bhv_type
, 0 AS bhv_amt
, 1 AS bhv_cnt
, getdate() AS bhv_datetime
, NULL AS content
, NULL AS media_type
, 'll' AS pos_type
, concat('74', ' 02', '56') AS position
, NULL AS env
, NULL AS trace_id
FROM dual;
可推荐物品表(rec_item_info)
字段描述
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
item_id | string | 物品ID,唯一标识。本表中的物品都是允许被推荐的物品 | 否 |
item_info | string | 如果业务方希望RecEng在返回推荐物品时同时返回物品的其他信息,保存在这里。RecEng不需要了解item_info的内部格式,原样返回给业务方。 | 是 |
分区描述
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区 | 否 |
ODPS DDL示例
CREATE TABLE rec_item_info (
item_id STRING,
item_info STRING
)
PARTITIONED BY (
ds STRING
);
ODPS SQL示例
INSERT OVERWRITE TABLE rec_item_info PARTITION (ds='20160101')
SELECT 'i1'
, NULL
FROM dual;
注释1
特征的数值类型分为mv_enum,kv_num,sv_enum,sv_num,分别代表多值枚举型,KV数值型,单值枚举型,单值数值型四种标签取值类型
举例:
单值数值型,如信用,只能取一个值,但这个值是不可枚举的
单值枚举型,如性别,只能取一个值,但这个值是可以枚举的(男,女)
KV数值型,如用户的类目偏好,用户对某几个类目有偏好分,如3298:0.89,3456:0.98..这里3298和3456是类目id,0.89和0.98是偏好分
多值枚举型,如用户的标签,美包控、准妈妈等可以枚举,但是每个用户可以取多个
在特征串中,不同key之间用 02分隔,key和value之间用 03分隔,多值key的value之间用 04连接。以上述4个例子为例,如果把它们串起来,则形式为
信用 03 98
02
性别 03 男
02
类目偏好 03 3298 04 0.89 03 3456 04 0.98
02
标签 03 美包控 03 准妈妈
注释2
文中提到 02 03 等指的是ASCII码为整型2,3的特殊字符,每种编程语言有不同的表示方法,ODPS SQL 及 JAVA可以直接使用 ' 02'
最后更新:2016-11-23 16:04:08
上一篇:
实时修正算法开发手册__算法规范_开发者指南_推荐引擎-阿里云
下一篇:
日志埋点规范__数据规范_开发者指南_推荐引擎-阿里云
获取用户 Region 信息__用户管理相关接口_Open API_消息队列 MQ-阿里云
ALTER_DATABASE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
如何变更发票信息__发票问题_发票及合同_财务-阿里云
使用RAM授权__用户访问权限控制_用户指南_文件存储-阿里云
EDAS 商业化服务条款__服务条款和价格说明_企业级分布式应用服务 EDAS-阿里云
步骤 2:创建Windows实例__快速入门(Windows)_云服务器 ECS-阿里云
使用在线帮助__命令行结构和参数_用户指南_命令行工具 CLI-阿里云
查询 Topic 当前位点__Topic 相关接口_Open API_消息队列 MQ-阿里云
批量修改解析记录__批量管理接口_API文档_云解析-阿里云
发布历史__产品介绍_云数据库 HybridDB-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云