共计 3964 个字符,预计需要花费 10 分钟才能阅读完成。
上一篇文章具体给大家介绍了标签的设计与加工,在标签生命周期流程中,标签体系设计实现后,便进入标签加工与上线运行阶段,一般来说数据开发团队会主导此过程,但咱们须要关怀以下几个问题:
·标签如何疾速创立和实现标签逻辑的在线化治理
·业务人员怎么参加到标签建设流程中
·百万级别的标签如何落表
一、加工形式:传统 VS 在线
当企业无标签零碎时,个别由数据开发在离线数仓中实现标签的加工和运行,经营或市场同学须要某个标签须要通过产品经理向数据开发提需要,这个过程存在很多问题:
· 标签资产不可见:标签是存在于表里的字段,业务人员不分明当初有多少标签;标签的加工逻辑与业务逻辑是否统一只能查看 SQL 代码;新上线的标签只有局部人晓得,标签价值散发慢等
· 标签资产不可管:加工好的标签,有多少在真正被应用,有多少没人用,齐全黑盒,不必的标签每天持续运行节约计算与存储资源
· 标签加工效率低:当业务人员须要某个简略标签时,也须要提交需要给数据开发,加工到上线根本须要 2 - 3 天流程
基于以上这些问题,标签的在线化创立与治理显得尤为重要,在线化次要蕴含以下内容:
· 标签在线化加工
· 标签在线化治理
· 标签在线化更新
其让标签加工过程以及有哪些标签变得通明,业务人员也能够参加进标签建设的流程中。
二、各类型标签加工
标签类型的辨别在此处便不再赘述了。在袋鼠云智能标签产品——「客户数据洞察」中,咱们依照标签加工逻辑,将标签分为以下类型,各类型标签的加工档次如下图:
接下来,咱们来看看具体各类型标签的加工。
1、原子标签
该类标签由数据开发在数仓加工中实现,个别基于数仓 DWD、DWS 层的明细表与汇总表加工而来,解决逻辑较为简单,同时维表中的一些字段也能够作为原子标签。这类标签个别蕴含哪些内容呢?
● 建设用户的标签体系:
用户维表中的用户根底属性:性别、年龄、置业、会员等级、手机号、身份证号等信息,个别用户零碎会有该类信息。
● 基于交易表加工的交易指标
最近 30 天购买次数、最近 30 天交易金额、最近 7 天购买次数、最近 7 天交易金额。这部分标签也倡议放在数仓中实现,有以下几点起因:
·因为其自身也是一个指标,除后续作为标签进行画像剖析外,也罕用于在数据门户、BI 报表中剖析,可作为对外服务的指标放在 ADS 层中,并且市场上也会有专门指标治理的产品,来实现该指标的加工
· 这类标签若属于同一个统计维度(如都计算最近 7 天),数据开发能够在一个 SQL 片段中计算多个标签,节约计算成本
· 若业务人员间接基于 DWS 层的轻度汇总表(每天汇总的交易次数、交易金额)、或 DWD 层的明细表(每条交易记录一行数据)来加工最近 30 天购买次数这个标签,须要针对对应的字段进行求和,略微波及到一点 SQL 了解,有一些难度
故该类应用场景多、对于业务人员有计算难度,可在数仓中合并加工降低成本的标签,可在数仓中作为原子标签加工。
● 基于行为表加工的行为指标
可通过数仓加工成如下表格局,加工行为类的标签,便于后续业务人员去衍生。
原子标签在数仓加工好后,可导入到标签零碎中,进行在线化治理。
2、规定标签
该类标签配置可由数据开发或数据分析师来实现,可基于单张表或关联表中的字段进行在线化加工,可设置统计周期、数据过滤条件,其内置罕用的聚合函数(求和、均值、计数、去重技术、最大值、最小值等)、操作符(大于、小于、区间、有值、无值、蕴含等),通过规则化的在线配置实现标签加工。配置界面如以下:
依据下面的形容,该类标签能够将指标的类型的标签在数仓或指标平台加工好,导入至标签平台作为原子标签,再基于这些原子标签取操作符更好。但在理论场景中,基于不同思考,有的客户也会在标签平台间接加工此类型标签,如以下场景:
· 数仓无对应的根底标签,但业务人员很着急须要该标签某标签,走失常的排期、数仓加工、测试,上线到应用根本 2 天以上了,基于这种状况能够通过该类标签在标签零碎间接配置,5 分钟即可配置、更新实现,业务人员便能够应用了
· 客户方想把标签的加工逻辑在线化出现、不便查找与追溯,通过可视化的形式在线配置
3、SQL 标签
SQL 标签次要由数据开发、数据分析师应用,次要解决通过规定标签无奈表白的逻辑,如用到排序函数、字符转化函数、子查问等内容,能够通过规范 SQL 语法灵便实现标签加工。
4、模型标签
模型标签可由业务人员创立。系统集成常见的用户分层 RFM 模型,用户营销 AIPL 模型、用户生命周期模型,用户输出对应的指标值区间,便可定义对应的标签值。
以 RFM 模型举例,基于该模型生成“客户价值”标签。可基于最近一次购买工夫、最近一年生产金额、最近一年生产频率等几个原子标签,进行不同区间的取值,给用户打上“重要价值客户”、“重要倒退客户”、“重要倒退客户”、“重要挽留客户”等。
5、组合标签
模型标签可由业务人员创立。基于已生成的原子、规定、SQL、模型标签等,进行规定衍生,生成组合标签。如组合标签“高支出低购买”用户,可通过“收入水平”衍生标签,与“最近 3 年生产金额区间”衍生标签组合加工,如下图:
6、自定义标签
自定义标签可由业务人员创立。手动为某些用户打上标签,该类标签手动导入,常见场景如下:
· 客服人员和用户 ID 为 1001 的用户沟通后,给该用户打上”性情:温和、有急躁”标签
· 如监管机构提供的一些信贷黑名单用户,该类标签可间接导入进标签零碎,为用户打上新的标签
7、算法标签
算法标签由算法开发同学创立,该类标签可在算法平台实现,将算好的后果存储至 Hive 表中,标签零碎可获取算法标签的元数据,拿到算法标签的中文名、英文名,注册至标签零碎中,在标签零碎中实现算法标签的标签信息查看、标签查问等。
如利用机器学习模型加工预测类的算法标签,如依据用户的特色,预测哪些用户是否行将散失,散失的概率等,从而在用户散失之前做一些措施来挽留。
8、实时标签
实时标签由数据开发同学创立,该类标签可在流计算平台实现,实时行为数据打入到 kafka 中,用 FlinkSQL 生产,再输入到 Kafka、或数据表中,上游间接订阅或查问。
三、标签更新与落库
标签配置实现后,便须要进行标签更新与落库,行将标签打到对象(如用户)的身上,这样业务同学就能够依据标签圈选指标群组啦。在此处咱们须要阐明以下几个问题:
1、技术选型
首先阐明一下标签加工的技术选型,在袋鼠云智能标签产品「客户数据洞察」中咱们用的 Trino(Presto)高性能剖析引擎读写 Hive 表的形式,标签表存储在 Hive 中。次要有以下几点起因:
· 随着国家对数字化转型的反对,从金融、政府到小企业都在建设数仓,进行数字化利用,在这个过程中,大多采纳的是分布式的 Hadoop 零碎作为计算存储引擎(不论是开源 Hadoop,还是发行版的 CDH、TDH、FusionInsight 等),Hive 表便是最罕用的存储模式。标签是基于数仓模型搭建进去的,与数仓用同一种存储能够节俭存储资源以及不必两种存储之间进行数据交换
· 而用 Trino(Presto)的起因是其首先是一个剖析型引擎,读写速度均可;其次是其 SQL 语法齐备、函数丰盛、灵便,能够解决绝大多是业务场景的需要;并且反对跨库同时读取,如 Trino 能够同时取 Hive 与 MySQL 的数据进行数据处理
但没有一种完满的技术选型,只能贴合企业本人的业务,选取最合适的技术。在这里咱们就不剖析各种标签的技术选型了。
2、落表形式
下面咱们介绍了有各种类型的标签,那么标签如何落表呢,大家看上面这个图:
在业务场景中,存在有的标签须要每天更新,如最近 30 天生产金额区间;而有的标签周更新、月更新即可,更新频率不高,如流动类型偏好。
这样,便须要反对每个标签有不同的更新频率,但 hive2.x 版本不反对单列更新,为了解决该问题,咱们将每个标签先在长期表存一下(就蕴含 2 列,1 列用户 ID,1 列标签)该长期表即建即用即删,每个标签只有一个长期表(非分区表),每个标签占用的占用不大,又能解决标签更新周期不统一的问题。
但如果后续的标签圈群、群组画像剖析,咱们基于这些独自表的去做联结查问,那效率会很低。
因为每个用营销流动,咱们须要 5 个标签圈选进去一批人群,并查问出这群人的性别、年龄、月生产、会员等级、是否沉闷用户等信息,加起来用到了 10 个标签左右,会波及到 10 个表的 join 操作,客户集群资源不丰裕的状况,查问速度慢。
所有咱们便将多个长期表通过聚合工作,将所有的长期表 join 到一张标签大宽表中,进行固化,这张表是一个分区表,能够每天存储一份全量用户标签信息,当然能够自行设置该表的更新周期与保留多少个分区。
这样,业务人员进行圈群和剖析就能够一张表查问数据,查问效率大大晋升。通过标签跑批工夫的耗费换取业务的查问速度。
但会遇到有些企业标签数量在 500-1000 个之间,用户量在千万、亿级别,这样的话,用一张表去存所有的标签会遇到标签大宽表跑批工夫过长或跑不进去的状况,所以便须要分表,能够依据标签数量分表。
综上,以上加工存储形式,有毛病的中央便是大宽表加工时,须要 join 多个长期表,耗费内存,跑批工夫长。
四、写在最初的话
为解决该问题,袋鼠云智能标签产品「客户数据洞察」在引入数据湖 Iceberg 进行标签表的存储,其能够实现单列更新,每个标签能够独自更新,这样,便不须要那些长期表了,解决加工效率的问题。
标签加工与落库是标签体系实现后重要的步骤,本篇文章向大家分享了标签加工与落库过程中须要关注的留神点,讲述了不同标签的加工内容以及标签的更新与落库等内容。
欢送大家留言与咱们探讨,也能够分享下本人见到的一些好的标签加工形式,咱们共同进步。
袋鼠云开源框架钉钉技术交换 qun(30537511),欢送对大数据开源我的项目有趣味的同学退出交换最新技术信息,开源我的项目库地址:https://github.com/DTStack