2024年字节跳动+京东+美团面试总结,用户画像基础,成体系化的神级Python进阶笔记

06

某用户画像案例

这里通过一个实践案例来将大家更好地带入实际开发画像、应用画像标签的场景中。本节主要介绍案例背景及相关的元数据,以及开发标签中可以设计的表结构样式。

在本案例的开发工作中,基于Spark计算引擎,主要涉及的语言包括HiveQL、Python、Scala、Shell等。

1. 案例背景介绍

某图书电商网站拥有超过千万的网购用户群体,所售各品类图书100余万种。用户在平台上可进行浏览、搜索、收藏、下单、购买等行为。商城的运营需要解决两个问题:一方面在企业产品线逐渐扩张、信息资源过载的背景下,如何在兼顾自身商业目标的同时更好地满足消费者的需求,为用户带来更个性化的购物体验,通过内容的精准推荐,更好地提高用户的点击转化率;另一方面在用户规模不断增长的背景下,运营方考虑建立用户流失预警机制,及时识别将要流失的用户群体,采取运营措施挽回用户。

商城自建立以来,数据仓库中积累着大量的业务数据、日志数据及埋点数据。如何充分挖掘沉淀在数据仓库中的数据的价值,有效支持用户画像的建设,成为当前的重要工作。

2. 相关元数据

在本案例中,可以获取的数据按其类型分为:业务类数据和用户行为数据。其中业务类数据是指用户在平台上下单、购买、收藏物品、货物配送等与业务相关的数据;用户行为数据是指用户搜索某条信息、访问某个页面、点击某个按钮、提交某个表单等通过操作行为产生(在解析日志的埋点表中)的数据。

涉及数据仓库中的表主要包括用户信息表、商品订单表、图书信息表、图书类目表、App端日志表、Web端日志表、商品评论表等。下面就用户画像建模过程中会用到的一些数据表做详细介绍。

① 用户信息表

用户信息表(见表1-2)存放有关用户的各种信息,如用户姓名、年龄、性别、电话号码、归属地等信息。

表1-2 用户信息表(dim.user_basic_info)

② 商品订单表

商品订单表(见表1-3)存放商品订单的各类信息,包括订单编号、用户id、用户姓名、订单生成时间、订单状态等信息。

表1-3 商品订单表(dw.order_info_fact)

③ 埋点日志表

埋点日志表(见表1-4)存放用户访问App时点击相关控件的打点记录。通过在客户端做埋点,从日志数据中解析出来。

表1-4 埋点日志表(ods.page_event_log)

④ 访问日志表

访问日志表(见表1-5)存放用户访问App的相关信息及用户的LBS相关信息,通过在客户端埋点,从日志数据中解析出来。

表1-5 访问日志表(ods.page_view_log)

⑤ 商品评论表

商品评论表(见表1-6)存放用户对商品的评论信息。

表1-6 商品评论表(dw.book_comment)

⑥ 搜索日志表

搜索日志表(见表1-7)存放用户在App端搜索相关的日志数据。

表1-7 搜索日志表(dw.app_search_log)

⑦ 用户收藏表

用户收藏表(见表1-8)记录用户收藏图书的数据。

表1-8 用户收藏表(dw.book_collection_df)

⑧ 购物车信息表

购物车信息表(见表1-9)记录用户将图书加入购物车的数据。

表1-9 购物车信息表(dw.shopping_cart_df)

3. 画像表结构设计

表结构设计也是画像开发过程中需要解决的一个重要问题。

表结构设计的重点是要考虑存储哪些信息、如何存储(数据分区)、如何应用(如何抽取标签)这3个方面的问题。

不同业务背景有不同的设计方式,这里提供两种设计思路:一是每日全量数据的表结构;二是每日增量数据的表结构。

Hive需要对输入进行全盘扫描来满足查询条件,通过使用分区可以优化查询。对于用户标签这种日加工数据,随着时间的推移,分区数量的变动也是均匀的。

每日全量数据,即该表的日期分区中记录着截止到当天的全量用户数据。例如,“select  count(*)  from userprofile  where data=‘20180701’”这条语句查询的是userprofile表截止到2018年7月1日的全量用户数据。日全量数据的优势是方便查询,缺点是不便于探查更细粒度的用户行为。

每日增量数据,即该表的日期分区中记录着当日的用户行为数据。例如,同样是“select count(*) from userprofile where data=‘20180701’”,这条语句查询的是userprofile表在2018年7月1日记录的当日用户行为数据。日增量数据可视为ODS层的用户行为画像,在应用时还需要基于该增量数据做进一步的建模加工。

下面详细介绍这两种表结构的设计方法。

① 日全量数据

日全量数据表中,在每天对应的日期分区中插入截止到当天为止的全量数据,用户进行查询时,只需查询最近一天的数据即可获得最新全量数据。下面以一个具体的日全量表结构的例子来进行说明。

这里userid表示用户id,labelweight表示标签权重,theme表示标签归属的二级主题,labelid表示一个标签id。通过“日期 +标签归属的二级主题+标签id”的方式进行分区,设置三个分区字段更便于开发和查询数据。该表结构下的标签权重仅考虑统计类型标签的权重,如:历史购买金额标签对应的权重为金额数量,用户近30日访问天数为对应的天数,该权重值的计算未考虑较为复杂的用户行为次数、行为类型、行为距今时间等复杂情况。

通过表名末尾追加“_all”的规范化命名形式,可直观看出这是一张日全量表。

例如,对于主题类型为“会员”的标签,插入“20190101”日的全量数据,可通过语句:

insert overwrite table dw. userprofile_userlabel_all partition(data_date= ‘20190101’, theme= ‘member’, labelid=‘ATTRITUBE_U_05_001’)来实现。

查询截止到“20190101”日的被打上会员标签的用户量,可通过语句:

select count(distinct userid) from dw.userprofile_userlabel_all where data_date='20190101’来实现。

② 日增量数据

日增量数据表,即在每天的日期分区中插入当天业务运行产生的数据,用户进行查询时通过限制查询的日期范围,就可以找出在特定时间范围内被打上特定标签的用户。下面以一个具体的日增量表结构的例子来说明。

这里,labelid表示标签名称;cookieid表示用户id;act_cnt表示用户当日行为次数,如用户当日浏览某三级品类商品3次,则打上次数为3;tag_type_id为标签类型,如母婴、3C、数码等不同类型;act_type_id表示行为类型,如浏览、搜索、收藏、下单等行为。分区方式为按日期分区,插入当日数据。

通过表名末尾追加“_append”的规范化命名形式,可直观看出这是一张日增量表。

例如,某用户在“20180701”日浏览某3C电子商品4次(act_cnt),即给该用户(userid)打上商品对应的三级品类标签(tagid),标签类型(tag_type_id)为3C电子商品,行为类型(act_type_id)为浏览。这里可以通过对标签类型和行为类型两个字段配置维度表的方式,对数据进行管理。例如对于行为类型(act_type_id)字段,可以设定1为购买行为、2为浏览行为、3为收藏行为等,在行为标签表中以数值定义用户行为类型,在维度表中维护每个数值对应的具体含义。

该日增量数据表可视为ODS层用户行为标签明细。在查询过程中,例如对于某用户id为001的用户,查询其在“20180701”日到“20180707”日被打上的标签,可通过命令:

select * from dw.userprofile_act_feature_append where userid = ‘001’ and data_date>=‘20180701’ and data_date<= '20180707’查询。

该日增量的表结构记录了用户每天的行为带来的标签,但未计算打在用户身上标签的权重,计算权重时还需做进一步建模加工。标签权重算法详见4.6节的内容。

③ 关于宽表设计

用户画像表结构如何设计,没有一定要遵循的固定的格式,符合业务需要、能满足应用即可。下面通过两个宽表设计的案例,提供另一种解决方案的思路。

用户属性宽表设计(见表1-10),主要记录用户基本属性信息。

表1-10 用户属性宽表设计

用户日活跃宽表设计(见表1-11),主要记录用户每天访问的信息。

表1-11 用户日活跃宽表设计

07

定性类画像

本书重点讲解如何运用大数据定量刻画用户画像,然而对于用户的刻画除了定量维度外,定性刻画也是常见手段。定性类画像多见于用户研究等运营类岗位,通过电话调研、网络调研问卷、当面深入访谈、网上第三方权威数据等方式收集用户信息,帮助其理解用户。这种定性类调研相比大数据定量刻画用户来说,可以更精确地了解用户需求和行为特征,但这个样本量是有限的,得出的结论也不一定能代表大部分用户的观点。

通过制定调研问卷表,我们可以收集用户基本信息以及设置一个或多个场景,专访用户或网络回收调研问卷,在分析问卷数据后获取用户的画像特征。目前市场上“问卷星”等第三方问卷调查平台可提供用户问卷设计、链接发放、采集数据和信息、调研结果分析等一系列功能,如图1-7所示。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-LOFY7p8z-1712400187871)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值