基于clickhouse做用户画像,标签圈选

简介: 基于clickhouse做用户画像,标签圈选

clickhouse在做用户画像标签时,怎么去做圈选,表结构应该是怎么样的,我们应该怎么去处理,能够使其高性能的圈选,尽可能缩小其占用的存储空间?

这个问题,我通过代码给大家做下的演示

先在hive中对数据预处理

--最初表结构

create table f_tag_table(
    tag Int,
    tag_name String,
    cust_num String
);

image.gif

--插入数据

INSERT INTO f_tag_table values
                             (1001, '存款客户', '1,2,3'),
                             (2001,'国债客户', '2,3,4'),
                             (3001,'卡黑名单客户', '2,4'),
                             (4001,'短信黑名单', '3,4');

image.gif

现在的表是这样的:

tag tag_name cust_num
1001 存款客户 1,2,3
2001 国债客户 2,3,4
3001 卡黑名单客户 2,4
4001 短信黑名单 3,4

重新建一张表

create table usr_table(
  id int,
  tag_name varchar(30),
  tag int
);

image.gif

把表f_tag_table的数据插入进去

insert into usr_table
select usr, tag_name, tag from f_tag_table 
lateral view explode(split(cust_num, ',')) tmp as usr;

image.gif

现在的表结构如下

usr tag_name tag
1 存款客户 1001
2 存款客户 1001
3 存款客户 1001
2 国债客户 2001
3 国债客户 2001
4 国债客户 2001
2 卡黑名单客户 3001
4 卡黑名单客户 3001
3 短信黑名单 4001
4 短信黑名单 4001

--写入到文件中

./hive -e "
select
*
from ck.usr_table
" | tr "\t" "," > /fileName.csv

image.gif

--在clickhouse中建库建表

create database ck;
use ck;
create table usr_table(
  id UInt32,
  tag_name String,
  tag UInt32
)ENGINE = MergeTree()
ORDER BY id;

image.gif

--写入到CK中

clickhouse-client -m -u default -h 192.168.88.161 
--query 'INSERT INTO ck.usr_table FORMAT CSV' < /fileName.csv

image.gif

-- 存储表结构

create table tag_table(
  tag UInt32,
  tag_name String,
  cust_num AggregateFunction(groupBitmap, UInt64 )
)ENGINE = AggregatingMergeTree()
ORDER BY (tag, tag_name)
SETTINGS index_granularity = 128;
insert into tag_table
select
        tag,
       tag_name,
       groupBitmapState(toUInt64(id)) as cust_num
from usr_table group by tag,tag_name;

image.gif

--查询表

select tag, tag_name, bitmapToArray(cust_num) from tag_table;

image.gif

现在表是这样的:

tag tag_name cust_num
1001 存款客户 [1,2,3]
2001 国债客户 [2,3,4]
3001 卡黑名单客户 [2,4]
4001 短信黑名单 [3,4]

用bitmap进行圈选

WITH
  (
  SELECT cust_num from tag_table where tag ='1001'
  ) AS tag1,
  (
  SELECT cust_num from tag_table where tag ='2001'
  ) AS tag2,
  (
  SELECT cust_num from tag_table where tag ='3001'
  ) AS tag3,
  (
  SELECT cust_num from tag_table where tag ='4001'
  ) AS tag4
select bitmapToArray(bitmapAndnot(bitmapOr(tag1, tag2),bitmapOr(tag3, tag4))) 
as customer;

image.gif

至此你已经完成了对用户标签的圈选

目录
相关文章
|
存储 SQL 机器学习/深度学习
用户画像标签体系——从零开始搭建实时用户画像(三)
用户画像标签体系——从零开始搭建实时用户画像(三)
3881 0
用户画像标签体系——从零开始搭建实时用户画像(三)
|
5月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
43228 11
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
800 0
|
11月前
|
数据采集 SQL canal
Amoro + Flink CDC 数据融合入湖新体验
本文总结了货拉拉高级大数据开发工程师陈政羽在Flink Forward Asia 2024上的分享,聚焦Flink CDC在货拉拉的应用与优化。内容涵盖CDC应用现状、数据入湖新体验、入湖优化及未来规划。文中详细分析了CDC在多业务场景中的实践,包括数据采集平台化、稳定性建设,以及面临的文件碎片化、Schema演进等挑战。同时介绍了基于Apache Amoro的湖仓融合架构,通过自优化服务解决小文件问题,提升数据新鲜度与读写平衡。未来将深化Paimon与Amoro的结合,打造更高效的入湖生态与自动化优化方案。
574 1
Amoro + Flink CDC 数据融合入湖新体验
|
7月前
|
Java 测试技术 编译器
@GrpcService使用注解在 Spring Boot 中开始使用 gRPC
本文介绍了如何在Spring Boot应用中集成gRPC框架,使用`@GrpcService`注解实现高效、可扩展的服务间通信。内容涵盖gRPC与Protocol Buffers的原理、环境配置、服务定义与实现、测试方法等,帮助开发者快速构建高性能的微服务系统。
1358 0
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
2650 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
存储 运维 BI
万字长文带你深入广告场景Paimon+Flink全链路探索与实践
本文将结合实时、离线数据研发痛点和当下Paimon的特性,以实例呈现低门槛、低成本、分钟级延迟的流批一体化方案,点击文章阅读详细内容~
|
消息中间件 搜索推荐 小程序
开源埋点用户行为分析方案-ClickLog埋点(ClkLog)
ClkLog 是一款记录用户行为分析和画像的免费可商用开源软件,技术人员可快速搭建私有的应用系统。项目基于神策分析SDK,采用ClickHouse数据库对采集数据进行存储,采用前后端分离的方式来实现的访问统计和用户画像分析系统。在这里,你可以轻松看到用户访问网页、APP、小程序或业务系统的行为轨迹,同时也可以从时间、地域、渠道、用户访客类型等多维度了解用户的全方位信息,完美助力大数据用户画像、实时归因/离线归因分析、漏斗分析、大数据推荐场景。
2270 2
开源埋点用户行为分析方案-ClickLog埋点(ClkLog)