乐趣区

关于java:用户画像之标签查询附源码

转自:https://blog.csdn.net/appearb…

目录

1. 简介

2. 架构图

3. 表构造

4. 标签筛选人群

1. 申请格局

2. 人群筛选


1. 简介

通过解决数仓中的业务数据和埋点数据,生成用户对应的标签,经营人员通过标签筛选出人群,而后发送营销短信。

此文次要形容标签筛选人群

2. 架构图

  1. 数据起源:业务数据库和埋点数据
  2. 标签生成:经营人员定义好标签元数据后,数据工程师写 hive 或 spark 定时调度生成;hive 表构造只有 3 列:用户 Id、标签 code、标签值
  3. 标签存储: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

退出移动版