目录
1.简介
通过处理数仓中的业务数据和埋点数据,生成用户对应的标签,运营人员通过标签筛选出人群,然后发送营销短信。
此文主要描述标签筛选人群
2.架构图
- 数据来源:业务数据库和埋点数据
- 标签生成:运营人员定义好标签元数据后,数据工程师写hive或spark定时调度生成;hive表结构只有3列:用户Id、标签code、标签值
- 标签存储:hive表转换下图格式,然后通过datax到ElasticSearch
userlabels格式:
3.表结构
ElasticSearch mapping:
{
"mappings": {
"_doc": {
"properties": {
"userid": {
"type": "keyword"
},
"userlabels": {
"type": "nested"
},
"data_date": {
"type": "keyword"
}
},
"dynamic_templates": [
{
"string_template": {
"path_match": "userlabels.*",
"mapping": {
"type": "keyword"
}
}
}
]
}
}
}
标签元数据表结构:
CREATE TABLE `userprofile_tag_metadata` (
`id` varchar(50) NOT NULL COMMENT 'id',
`code` varchar(50) DEFAULT NULL COMMENT '标签code',
`name` varchar(50) DEFAULT NULL COMMENT '标签名',
`is_mutex` tinyint(1) DEFAULT NULL COMMENT '是否标签互斥:0:否;1:是',
`data_format` int(10) DEFAULT NULL COMMENT '数据格式:1-枚举(tagValue默认为1);2-数值;3-文本;4-时间',
`description` varchar(500) DEFAULT NULL COMMENT '标签说明',
`category_id` varchar(50) DEFAULT NULL COMMENT '当前分类id',
`all_category_id` varchar(1000) DEFAULT NULL COMMENT '全路径分类id',
`top_category_id` varchar(50) DEFAULT NULL COMMENT '顶级分类id',
`creator_id` varchar(200) DEFAULT NULL COMMENT '创建人',
`gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
`status` tinyint(1) DEFAULT '1' COMMENT '1启用,0禁用',
`tag_production_rule` varchar(500) DEFAULT NULL COMMENT '标签生成规则',
`tag_update_rule` varchar(500) DEFAULT NULL COMMENT '标签更新规则',
`tag_type` int(10) DEFAULT NULL COMMENT '标签类型:1-统计;2-规则',
`tag_value` varchar(200) DEFAULT NULL COMMENT '标签值',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户画像-标签元数据表';
4.标签筛选人群
1.请求格式
[
{
"tagId": "003",
"operator": "=",
"tagValue": "1"
},
{
"tagId": "002",
"operator": ">",
"tagValue": "50"
},
{
"tagId": "002",
"operator": "<=",
"tagValue": 300
}
]
2.人群筛选
通过elastiSearch的scroll筛选即可