背景
在电商场景中,我们经常需要对货品进行打标签的操作,简单来说就是对货品进行各种分类,按照价格段进行分组,此时运营人员就可以通过价格段捞取到满足条件的商品了,本文就来简单看下这个场景如何在clickhouse中实现
货品标签
1.创建一种商品的明细表,包含每个商品的各种标签属性的表:
java
CREATE TABLE IF NOT EXISTS merchardis_src_tbl
mid UInt64 //商品id
category String //商品分类
price Int32 // 商品价格
)ENGINE = ReplicatedMergeTree
2.创建一个标签属性的位图表,表示对应标签下的商品列表
java
CREATE TABLE IF NOT EXISTS tag_bitmap_tbl
(
tagname String, --标签名称
tagvalue String, --标签值
type String //标签类型
tagbitmap AggregateFunction(groupBitmap, UInt64 ) --mid集合
)
ENGINE = ReplicatedAggregatingMergeTree
3.从商品明细表中把数据聚合成标签后放入标签表中
java
-- 导入数据, 将同一个分类的所有mid使用groupBitmapState函数合并成一个bitmap
INSERT INTO tag_bitmap_tbl
SELECT category,categoryName,'商品类型' as type groupBitmapState(mid)
FROM merchardis_src_tbl
GROUP BY category,categoryName;
自此,我们就有了一张货品标签的属性表,运营就可以基于这种表进行各种查询操作了