转自: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