0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用户画像番外篇之随笔三则

lviY_AI_shequ 来源:未知 作者:李倩 2018-10-04 10:27 次阅读

一则:开发上的一点记录

文章说是生活随笔,到不如说是对本周开发工作中的一些体会与思考的记录。

这个专栏我想除了对知识上的一些记录,以后也可以加入生活上的收获。好记性不如烂笔头,或许多年后再回看这些文章,回看进步的历程,也是一件很有成就感的事情。

4月份换了工作去做数据开发,重点项目还是做用户画像。开发时间排的很紧,平均每天要开发1~2个标签。从和需求方确认标签口径,找标签对应数据所在的表、字段定义、数据存储结构,到写标签逻辑,上线验证标签正确性.... 时间简直不够,更不要说某些复杂口径的一个标签都要写上百行的逻辑。

这周到现在又开发了6个标签,写了一个调度脚本,正在进行着一次数据逻辑调优。下面挑两个重要点的记录一下:

1、任务调度脚本开发

画像数据目前是写在Spark SQL里面,通过每天定时任务调python脚本,来执行Spark SQL。

但这样的话开发效率比较低,一方面开发人员写完Hive SQL脚本后,还需要在外面包一层spark才打包成可执行脚本,另一个方面对于每一个打包后的python脚本都要写一个crontab调度命令。

所以必须要优化一下流程。优化方式就是:

①开发人员对画像标签只需写Hive SQL脚本,传到服务器对应目录下;

②通过一个python脚本,自动扫描目录下的sql文件,加载并替换掉sql中的日期变量,并将替换日期后的脚本文件包上spark去执行;

③每天crontab命令只需定时调度该python脚本即可,不需要在每新上一个标签的Hive SQL逻辑,就上一条调度命令。

2、数据逻辑调优

开发出的标签很多了,但有的标签逻辑复杂,需要做进一步调优,提高每日跑批作业的执行效率,这里就与日志数据相关的标签为例。

用户近30日活跃时间段:这个口径需要计算用户近30天是在中午、下午、晚上哪个时间段访问次数最多,这显然是一个与日志数据相关的口径。

而记录用户访问行为的日志数据的情况是:

1、做了日期分区,每日全量更新历史数据。而且日志数据量很大,每天都有亿级pv;

2、这就导致了在每天跑批时都需要从近30天的访问日志中抽取数据计算,一次几十亿pv的计算,相当耗费计算资源了。

后来做的调优方式是:

①首次刷数据时刷近30日用户在每个时间段的活跃次数,做倒排序找出用户活跃时间段;

②后续每天跑批任务时,只需计算前一天用户访问各时间段对应的次数(不通过日期分区字段找,对用户访问时间做日期格式处理后通过访问日期来找),并与历史数据做加总,找出其活跃时间段;

③这样计算就免去了计算近30日的日志数据,仅需计算前一天的数据即可。

近期在不断补充学习新知识,spark要搞起来了、shell命令要用熟起来了。都要投入精力搞。

写到这会已经周五早上53分了,过几个小时还要继续投入。这周的一些想法先总结到这里。

我觉得生活也好、工作也好,或许就是在这么一天天的貌似不起眼的积累中,不断进步的。

作为一个多年的米粉,记得那次看红米note3发布会的末尾,被他文案中朴实、真诚的语句吸引了。在这里想用那句台词做结“我所有的向往”。向往着在每一个看似普通的日子中精彩生活、不断进步、奔腾向前。

二则:自动发送邮件脚本

这段时间在对流量部门提供数据方面的支持,把每天自动发送邮件的脚本讲一讲吧,虽然很基础,好像没什么可以说的 ...

在日常运营工作中,数据提取人员面对众多业务方的数据需求,往往应接不暇。他们需要一套自动化的程序去帮助他们完成一些周期性和重复性较强的工作。

为了减少重复性工作,数据提取人员可以使用Python自动化脚本跑定时任务。将写好的HQL语句放入Python脚本中,并在linux服务器上设置crontab定时调度任务,保证每天定时自动从数据仓库提取数据完毕后,将结果集写到excel中并发送邮件到数据需求方的邮箱。Python脚本代码执行如下

#coding: utf-8 search_data = """ 创建临时表查询昨日运营数据""" report_data = ''' select * from 上一步创建的临时表 ''' import psycopg2 import smtplib import os import openpyxl import datetime from impala.dbapi import connect from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage import pyhs2 # HIVE环境 wb = openpyxl.load_workbook('/home/path/username/daily_report_v1.xlsx') # 打开服务器存储路径下的excel文件 # 连接HIVE环境 impala_conn = pyhs2.connect(host='10.xx.xx.xx', port=xxx, authMechanism="PLAIN", user='username', password='password', database='dwd') seo_h5_1 = impala_conn.cursor() h5_result = impala_conn.cursor() seo_h5_1.execute('''SET mapreduce.job.queuename=root.yydata''') seo_h5_1.execute(search_data) # 执行HQL语句 # 取出来数据 h5_result.execute(report_data) # 取出来数据 h5_result = h5_result.fetchall() #放到sheet里面去 sheet = wb.get_sheet_by_name('daily_report') #daily_report表 #清除历史数据 for i in range(2,sheet.max_row + 1 ): for j in range(1,sheet.max_column + 1 ): sheet.cell(row=i,column=j).value = '' #填充结果数据 for i in range(2,len(h5_result) + 2 ): for j in range(1,len(h5_result[i-2]) + 1 ): sheet.cell(row=i,column=j).value = h5_result[i-2][j-1] #关闭HIVE链接 impala_conn.close() wb.save('/home/path/usernamet/daily_report_v1.xlsx') # 保存excel文件 receiver = 'receiver_email@xxx.com' # 收件人邮箱地址 date_str = datetime.datetime.strftime(datetime.date.today()-datetime.timedelta(days=1),'%m%d') mail_txt = """ Dear All, 附件是运营日报,请查收。 """ msgRoot = MIMEMultipart('mixed') msgRoot['Subject'] = unicode(u'日报-%s' % date_str) #添加日期 msgRoot['From'] = 'sender_email@xxx.com' msgRoot['To'] = receiver msgRoot["Accept-Language"]="zh-CN" msgRoot["Accept-Charset"]="ISO-8859-1,utf-8" msg = MIMEText(mail_txt,'plain','utf-8') msgRoot.attach(msg) att = MIMEText(open('/home/path/usernamet/daily_report_v1.xlsx', 'rb').read(), 'base64', 'utf-8') att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attachment; filename="日报2017%s.xlsx"' % date_str msgRoot.attach(att) smtp = smtplib.SMTP() smtp.connect('mail.address.com') smtp.login('sender_email@xxx.com', 'sender_password') for k in receiver.split(','): smtp.sendmail('receiver_email@xxx.com', k, msgRoot.as_string()) smtp.quit()

将上面的python脚本后放入连接到数据仓库的服务器上,在linux下设置crontab调度语句,如“10 16 * * * python /home/path/username/auto_email.py”表示每天下午16点10分执行/home/ path/username/路径下的auto_email.py文件。

执行代码后,程序将自动执行SQL语句连接到数据库提取数据,提数完毕后将数据写入excel文件中,并自动发送邮件到数据需求方邮箱。

这样通过定时调度的脚本即可解决业务方每天对日报数据的需求,将数据提取人员从繁重的机械性劳动中解放出来。

三则:一次对渠道流量异常情况的分析

流量部门目前对APP线上推广需要支付较多的渠道推广费用,但不同渠道带来的用户质量、活跃度、消费能力参差不齐

为了支持流量部门高效推广,减少对垃圾渠道的投放费用。需要对部分投放费用较高,但是营收、活跃度转化较低的渠道需要重点分析

对于渠道流量进行分析的几个关键指标:

根据AARRR模型,从获取用户到用户付费环节依次递进的关系,这里主要从激活、留存、付费三个环节展开

1)激活环节

①激活注册转化率:用户从应用商店下载APP后,不一定都会有注册行为。对于刷下载量、用户为抢红包、赚积分等目的而进行的下载,后续的注册量会很低。对于一些问题渠道来说,他的激活注册转化率(注册量/激活量)会远低于正常渠道;

②激活时间:在某些特殊情况下(如部门为冲KPI而刷下载量),一些问题渠道的激活时间会存在问题。正常来说,用户激活时间也符合人的正常作息时间段,而异常渠道因为存在机器刷量的情况,激活时间段分布也就没有那么规律了,下图就是一个栗子:

橙色和黄色线对应的渠道的激活时间分布存在一些不正常。

2)留存环节

③7日留存率:对正常渠道来说,该渠道的用户下载APP是为了使用,后续的留存会多一些。而对于刷量、刷积分下载、抢红包下载等目的而下载的来说,下载激活后可能接着就卸载掉或再不使用了。从7日留存率这个指标也能看出一些问题渠道;

④访问深度:这里就指PV/UV了,对于渠道来说PV只该渠道一定时间段内的用户总访问量,UV只该时间段内访问用户数,相除代表该渠道每个用户平均访问页面数。正常来说,用户下载了APP即时不注册也是为了使用或查看资讯等目的,因此访问深度不会很低。而问题渠道的用户根本目的不是为了使用产品,因此这些渠道的访问深度就很低了;

3)付费环节

⑤用户获客成本:对正常渠道来说,获取的付费用户量按照AARRR这个模型一层层下来,付费用户数/激活用户数(即付费用户获取比例)会在一个正常逻辑区间内。而对于垃圾渠道来说,激活用户人数可能会很多,但是付费用户人数很少,就会导致付费用户获取比例极低,用户获取成本高的惊人....

现在刷下载的供应商很多,在流量分析时候对刷下载的供应商进行一些调研,了解他们的刷量模式和报价也是对分析很有帮助的。这会刷量不仅能刷激活、还能刷注册、刷留存、刷好评....反正我们分析什么指标,他们都能刷这些指标的值....

但是垃圾渠道就是垃圾渠道,再怎么刷还是能分析出问题和破绽的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6504

    浏览量

    87447
  • python
    +关注

    关注

    51

    文章

    4657

    浏览量

    83380
  • 用户画像
    +关注

    关注

    0

    文章

    7

    浏览量

    2344

原文标题:用户画像番外篇之随笔三则

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    番外篇】WSL2下的usb设备使用

    番外篇】WSL2下的usb设备使用
    的头像 发表于 06-13 09:06 1338次阅读

    【小e开发板试用体验】『流逝』番外篇 小e的性价比怎么样?

    ` 本帖最后由 电子工程师2014 于 2016-1-5 23:43 编辑 写番外篇还是流逝的第一次,用了两天板子,看了下器件,大家都是做电子的,什么东西。什么价格大家心里都有数,要说小e
    发表于 01-05 23:25

    【MAX32660试用体验】【番外篇】+基于MAXIM MAX32660的高集成度高速收发一体光模块的设计构思

    。基本原理图:以上是构思部分,能否具备可行性得经过论证和实验~~关于MAX32660的使用番外篇,暂时那就先到这里吧谢谢@美丽心琴的大力支持及MAXIM的好产品`
    发表于 02-28 22:16

    flex的布局随笔

    flex布局随笔
    发表于 05-07 13:42

    Android NDK编程--- JNI中类参数的传递与返回

    前言代码往往在不断写的情况下学习到新的东西,本以为NDK程序这块出完番外篇后应该就不用再出了,结果在使用过程中还是会有新的东西加入,所以又有了今天这一篇。往期回顾因为这篇的代码也是在原来...
    发表于 07-02 07:03

    STM32学习随笔

    STM32学习随笔跟随【洋桃电子】STM32学习入门100步学习,总结内容不全,欢迎指正。
    发表于 07-23 08:12

    如何将IAP与APP合并为一个烧录文件

    之前写过一个小专题是基于STM32有关IAP的应用的专题,现在新增一个番外篇是关于如何将IAP与APP合并为一个烧录文件及相关实例。
    发表于 12-10 07:29

    【飞腾派4G版免费试用】番外篇-来自飞腾技术广州有限公司总经理在全国行业职业技能竞赛开幕式上的介绍

    的关系相当大也是本次发这个番外篇的原因,做为一名国芯爱好者,这种事可不能随意缺席呀 这是一个全国行业职业技能竞赛-工业信创领域的全国总决赛 所用的开发设备便是我们此次试用计划所用的飞腾派开发板,飞腾
    发表于 12-09 15:57

    基于卡方检验和SVM的用户搜索画像技术研究

    基于用户画像的广告定向技术普遍应用于品牌展示和精准竞价广告,然而现有的用户搜索画像技术存在着特征维度大、矩阵稀疏的问题。针对这一问题,本文采用卡方检验和线性核支持向量机相结合的方法,首
    发表于 12-21 15:23 0次下载
    基于卡方检验和SVM的<b class='flag-5'>用户</b>搜索<b class='flag-5'>画像</b>技术研究

    什么是用户画像用户画像的四阶段

    用户画像的焦点工作就是为用户打“标签”,而一个标签通常是人为规定的高度精炼的特征标识,如年龄、性别、地域、用户偏好等,最后将用户的所有标签综
    的头像 发表于 09-14 15:39 9105次阅读

    首批购买5G手机的人都是哪些人呢?首批5G手机用户画像

    2019年被称为5G元年,5G这一可能延续数十年的通信技术在今年正式投入使用。那么在我们国家,首批购买5G手机的人都是哪些人呢?有没有像iPhone 4s刚刚发布时的卖肾买手机的情况出现呢?9月2日,个推大数据《5G手机首批用户画像报告》发布,披露了首批5G手机
    的头像 发表于 09-03 14:30 2718次阅读

    大数据用户画像的推荐模式与优缺点

    基于用户画像,根据每个用户使用路径与个人偏好推荐内容已经成为内容类产品常见的功能模式,也是提升活跃度与转化率最有效的方式之一。
    的头像 发表于 05-05 19:50 5609次阅读
    大数据<b class='flag-5'>用户</b><b class='flag-5'>画像</b>的推荐模式与优缺点

    测试QCC5127的bug时穿插总结分享

    本文介绍在测试QCC5127的bug时穿插的一个总结,算是番外篇。主要记录两个手机同时连接一个耳机,且同时在音乐播放状态下时,如何通过按键来选择音源。
    的头像 发表于 10-23 10:43 2017次阅读
    测试QCC5127的bug时穿插总结分享

    如何构建用户画像系统?

    乔巴:我是一枚半路转行的数据产品经理,现在大数据火热,所在公司想搭建画像系统,但自己对用户画像没有概念,对画像系统是怎样的架构,有哪些常见的功能等事项全然不知,真是困煞我也!   索隆
    的头像 发表于 02-04 13:45 2453次阅读
    如何构建<b class='flag-5'>用户</b><b class='flag-5'>画像</b>系统?

    用户画像分析就是基于大量的数据

    假如某个电商平台需要做个活动给不同的层次的用户发放不同的券, 那么我们就要利用用户画像用户进行划分, 比如划分成不同的付费的活跃度的用户,
    的头像 发表于 03-12 15:24 1878次阅读