用户画像之标签查询(附源码)

目录

 

1.简介

2.架构图

3.表结构

4.标签筛选人群

1.请求格式

2.人群筛选


1.简介

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

此文主要描述标签筛选人群

 

2.架构图

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

源码地址:https://github.com/ostarsier/tagsearch

猜你喜欢

转载自blog.csdn.net/laughing_yang/article/details/110563952