转自:https://blog.csdn.net/appearb…
目录
1. 简介
2. 架构图
3. 表构造
4. 标签筛选人群
1. 申请格局
2. 人群筛选
1. 简介
通过解决数仓中的业务数据和埋点数据,生成用户对应的标签,经营人员通过标签筛选出人群,而后发送营销短信。
此文次要形容标签筛选人群
2. 架构图
- 数据起源:业务数据库和埋点数据
- 标签生成:经营人员定义好标签元数据后,数据工程师写 hive 或 spark 定时调度生成;hive 表构造只有 3 列:用户 Id、标签 code、标签值
- 标签存储:hive 表转换下图格局,而后通过 datax 到 ElasticSearch
userlabels 格局:
3. 表构造
ElasticSearch mapping:
1. {
2. "mappings": {
3. "_doc": {
4. "properties": {
5. "userid": {
6. "type": "keyword"
7. },
8. "userlabels": {
9. "type": "nested"
10. },
11. "data_date": {
12. "type": "keyword"
13. }
14. },
15. "dynamic_templates": [
16. {
17. "string_template": {
18. "path_match": "userlabels.*",
19. "mapping": {
20. "type": "keyword"
21. }
22. }
23. }
24. ]
25. }
26. }
27. }
标签元数据表构造:
1. CREATE TABLE `userprofile_tag_metadata` (2. `id` varchar(50) NOT NULL COMMENT 'id',
3. `code` varchar(50) DEFAULT NULL COMMENT '标签 code',
4. `name` varchar(50) DEFAULT NULL COMMENT '标签名',
5. `is_mutex` tinyint(1) DEFAULT NULL COMMENT '是否标签互斥:0: 否;1: 是',
6. `data_format` int(10) DEFAULT NULL COMMENT '数据格式:1- 枚举 (tagValue 默认为 1);2- 数值;3- 文本;4- 工夫',
7. `description` varchar(500) DEFAULT NULL COMMENT '标签阐明',
8. `category_id` varchar(50) DEFAULT NULL COMMENT '以后分类 id',
9. `all_category_id` varchar(1000) DEFAULT NULL COMMENT '全门路分类 id',
10. `top_category_id` varchar(50) DEFAULT NULL COMMENT '顶级分类 id',
11. `creator_id` varchar(200) DEFAULT NULL COMMENT '创建人',
12. `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创立工夫',
13. `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最初批改工夫',
14. `status` tinyint(1) DEFAULT '1' COMMENT '1 启用,0 禁用',
15. `tag_production_rule` varchar(500) DEFAULT NULL COMMENT '标签生成规定',
16. `tag_update_rule` varchar(500) DEFAULT NULL COMMENT '标签更新规定',
17. `tag_type` int(10) DEFAULT NULL COMMENT '标签类型:1- 统计;2- 规定',
18. `tag_value` varchar(200) DEFAULT NULL COMMENT '标签值',
19. PRIMARY KEY (`id`) USING BTREE
20. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户画像 - 标签元数据表';
4. 标签筛选人群
1. 申请格局
1. [
2. {
3. "tagId": "003",
4. "operator": "=",
5. "tagValue": "1"
6. },
7. {
8. "tagId": "002",
9. "operator": ">",
10. "tagValue": "50"
11. },
12. {
13. "tagId": "002",
14. "operator": "<=",
15. "tagValue": 300
16. }
17. ]
2. 人群筛选
通过 elastiSearch 的 scroll 筛选即可
源码地址:https://github.com/ostarsier/tagsearch