00:00
来,那首先我们来看一看他是怎么去解决这个新增用户的问题的啊,那在讲怎么解决之前呢,我们还是还还是先看一下这个吧,看一下这个新增用户咱们怎么定义啊,怎么定义看一下。来,那一般情况下呢,我们对新增用户的定义是第一次使用产品的用户。对不对,那首次启动是不是第一次使用啊,这个应该能理解吧,那或者说一些关键行为,比如注册,比如购买的首次触发啊,是不是也有类似一些复杂的一些这个定义啊,对吧?那通常情况下就是第一次使用产品就行啊,那咱们就按照这个最普最普遍的一个定义啊去做啊,然后看一看它是怎么去标记这个新增用户的啊来在神色分析中呢,它可以结合结合什么东西,结合一个叫做是否首日访问的属性。来得到每天访问的新增用户。啊,也就是说它这里边是不是有一个所谓的属性啊,这个属性叫什么呢?叫做is first day,就是是否是首日。
01:06
啊,那这个属性在哪儿啊,它这个属性。在哪,这个属性在哪啊。这个属性呢,是在买点当中的啊,就是在买点日志里边,比如说我在咱们这儿是不是应该就是启动日志啊,对吧,就在启动日志呢,它会多一个属性啊,然后呢,这个属性啊,就是用来标记你这次启动是否是安装之后的首次启动的。啊哎,那这样一来,呃,如果说有了这样的一个属性之后呢,那你说咱们去判断它是否是新增用户,那是不是就非常容易了,对不对啊,那比如说我这儿呢,有一个启动日志对不对,那启动日志当中呢,有一个是否是首日这样的标记,如果是首日,那它是不是就是新增用户对不对,如果新增用户,那对于咱们这这张表来说,咱可以怎么做?那可怎么做呢啊,有有新增,那我就可以咋样。是不是把这个就设成咱们当天的日期就行了,没错吧,哎,是不是应该是一样的一个道理啊,啊能够对应上啊,就是摇新增哎这个呃,有一个这样的标记啊,就是是否是哎首日啊,是否是首日啊,如果是首日那都属于新增,属于新增,那它的首次登录日期那就是今天,没错吧?啊是这样的啊,那关键问题是啊,这个是否是首日,这个属性它到底是怎么维护的?
02:26
啊,它到底怎么维护的,对不对,那接下来咱们往下看。下边呢,是有咱们每一个。诶。每一个这个移动端的实现逻辑的,有web端,有小程序,有APP啊有这样的一个实现逻辑啊,那咱们这儿呢,可以这个随便看一个啊,比如说我们看这个APP端吧,啊看APP端看这个怎么做的。来认真看啊来,那用户安装APP以后啊,是不是就安装啊,第一次安装对吧,那也不一定是第一啊第一次安装啊,这时候咱们一会得考虑一个问题啊,就是你安装之后是不是有可能卸载,卸载之后是不是有可能重装啊,是不是有可能有这样的问题啊对吧?这个咱们一会再考虑啊,咱们现在就说安装APP后,那它会怎么做呢?啊,你第一次打开这个埋入这个神策SDK的APP的当天,比如说你第一次打开你这个APP啊,第打APP,那这时候我们会怎么样啊,这个安卓或iOS也是咱们这个移动端的这个SDK,就是那个呃依赖包啊,它会怎么做呢?它会在手机的本地缓存内。
03:35
啊,手机咱们手机本地什么叫手机本地啊,是不是就是你手机本地的这个缓存啊,就是你手机上面对吧,就在你手机上面,会在你手机上面呢,创建一个。为首日的,首日为触的标记啊,就是你第一次打开这个APP,就是安装之后第一次打开对吧,安装以后首次打开,那会创建一个首日为触的标记,并且它会设置一下。啊,在第一天24点之前,该标记均为处。
04:06
因为到了第二天你还是首日吗?不是了吧,对吧,他这自己会计时的啊,到了24点之后,那这个标记会自动变成啥。会自动变成false啊,就第二天之后啊,第第一天之后啊,24点之后会自动变为false。能理解吧,啊,也就是这个它这个,呃,这个属性是怎么维护的啊,就是你假如说我今天我下载这个应用了,我我这个安装了对吧,安装之后你第一次启动,因为你这个移动端这个APP是不是能够判断你是否是第一次启动啊,对不对,哎,我第一次启动,那我就加上一个这样的属性,在哪加呢?在我的缓存当中加啊,那加上之后呢,我这个是不是在24点之前都是处啊,那到了24点之后呢,默认变成啥啊。是不是变成false了呀,如变成false了呀,那后续每天是不是都是false,后续每天都是false。
05:01
啊是这样的,他是这样去去做的,是这样去做的。好,那既然有了这个属性了,那我们后续这个数据呢,诶随着我们的启动日志来到我们这个数仓里边之后呢,那咱们是不是就可以借助这个标记去判断它是否是新增设备了呀,对不对啊,那当然呢,在这儿呢,我们就可以可以怎么做呀。来打开这个,哎,就可以根据那个属性啊,就可以根据那个属性去判断了啊,根据那个属性判断了,OK,只要你这块那个首次诶为处,那我这个首次登录日期我就设成哎这个当天的日期啊,那否则的话呢,哎,我就啊再考虑其他的一个观点,一会儿咱们再说啊,一会儿再说就是现在我已经能够标记出来谁是首次了,能理解吧,你可以这样去做,但是咱们这儿因为买点当中是不是咱没有那个字段呀,对不对,其实正常你这其实可以加一个那样的字段,去解决咱们这个啊这样的一个问题啊好,那现在问一下大家啊,如果说我们只使用那个字段去判断这个用户,他是否是新增用户。
06:07
你说这个准吗?这个准确吗?这个准确不准确啊,可能不准确。为什么不准确呢?刚才咱们提到了啊,是不是可能会有这样的一个现象,什么现象啊。什么现象?啊卸载重装对不对,那假如说我在咱们这个什么时候呢?在咱们那个,呃呃,第一次下载这个应用安装了,安装之安装之后你第一次启动,第一启动之后呢,你这块会有一个啥,是不是会有一个这个首日为初的一个标记啊对不对,那OK,这样一来的话,我这个相当于这是不是那一天是他的一个新增日期啊对不对,新增日期有了啊OK,那随着这个时间推移,我可能用户我不不用这个APP了,我把它卸了。卸了之后,你下次是不是又过了一段时间又安装起来了呀,又安装了,又安装之后你再启动,是不是又是安装后首次启动,对不对啊,因为我们这个,呃,客户端呢,我并不能判断你之前是否是否安装过,我只能知道什么呀,我只知道就是你这次启动是不是安装之后的首次启动啊,你卸载重装我再起是不是又是卸载之后的首次启动,那是不是又会啊加一个什么呀,首日为初的标记啊对不对,那这样一来的话,那又首日为初了,那这次一来这这儿过来一下,我如果说只按照那个首日的标记去判断的话,那它也为数也为数,我是不是又又应该把它的首次活跃时间又变成这个后边这一天了呀,对不对,所以这个是不是就又不准确了呀,对,所以说这里边会有一些误差。
07:38
啊,会有误差,那这个误差怎么解决呢?来往下翻,他这下边其实人家也考虑到这个问题了,你看这是不是有一是不是有一个这个首次首日这个标记的修正啊,对不对,你看一下啊哎。看这段话。哎,那如果说我们这个用户的APP缓存被清理,因为它是是放在缓存里边了呀,那缓存是不是可能被清理,那被清理或者是用户卸载重装是不是现在重装是不是就刚才咱们说那个问题对吧?啊那这样一来的话,那会出现什么问题呢?哎,就会造成咱们这个APP端首日首次判断逻辑失效啊,就是虽然是老用户,但是呢,首日首次标记是不是仍然没处啊。
08:20
这是不是就刚才咱们说的那个问题啊,那这样一来也会出现问题。也会出问题,那这个问题到底怎么解决呢?咋解决呀?哎,人这有首日访问在服务端的修正。在服务端的修正啊,这个在服务端它其实怎么修正的呀?啊,其实很简单,逻辑很简单啊,很简单怎么修正啊,它其实啊会相当于在哪儿,在我们的服务端啊,在他的服务端啊,在他服务端它会怎么样呢?它会维护一个。哎,所有用户的一个表。啊,所有用户的表也就在这个表当中呢,我会记录啊,记录记录什么,记录我们每天新增的所有的这个用户。
09:04
啊会记录记录下来,然后之后具体怎么修正呢?就这么去修正,如果说你是第一次安装,那一安装你是不是已经是一个老用户了呀,对吧,老用户他会怎么样,会在这里边是不是记录下来这个用户对不对,然后OK,那一会儿我是不是会卸载重装啊卸载了然后再重装,再重装,我虽然我这个标记是否为手势标记,是不是也是处啊,对吧,那我这时候呢,我不是只按照这个处这个标记去判断了。啊,我除了要参考这个首日的标记,我还要怎么样,我是不是还得看一看这张表里边是不是有你这个用户啊,对不对,如果表里边已经有你了,即便我这个是否为首日的标记为true,我是不是也不能认定你是今天的一个新增用户啊,对吧,你也是老用户。啊是这样,他其实就是这么去做啊,就这么去做的,哎,那他既然他这么做,那咱们这是不是也能这么做呀,对不对啊,这张表其实就相当于什么。
10:01
是不是相当他在服务端维护的那个所有用户的表啊,对不对,那所以说这张表咱们到底怎么去处理的呢?啊,你就可以通过这样去分析一下啊,首先这张表我们并不会做初始化,因为你做不了对不对,那这张表里的用户只能是怎么做呀,只能是不断的。累积对不对,只能是不断的往里加,因为我每天是不是都会有活跃设备啊,我每天的活跃设备是不是都会放到这里边来,那所以说随着时间的推移,那我这张表当中,我这个活跃设备会越来越,所有的设备会越来越多,越来越多,越来越多,对不对啊啊,那所以说那它渐渐的也能成为一个就是判断咱们这个是否是新增用户的一个标准,所以咱这其实相当于做了一个双重判断。啊,双重判断怎么装置判断呢?第一个先根据你那个啊,就是客户端买点那边那个属性,就是那个是否为首的属性去判断啊,先根据它判断啊,那如果是这个为处啊,然后呢,我们还得再进一步判断,判断什么呀,判断在O的当中,也是在这张表当中是否有你这个用户。
11:09
啊,有这个设备,如果有,即便你这是处,我也是什么呀?啊,我也是老用户啊,也是老用户。啊是这样的,那如果说那在咱们的这个呃,客户端买点这边上来之后就是false,就是false是false的话,那是不是直接就是老用户了呀,啊就是老用户的是这样的啊,那所以说呃,那咱们这应该是这样的一个逻辑,只有什么样情况下,他才会认定这是新增呢,这边为处,并且这张表里没有你,那我是不是才会给你当成一个什么样的用户啊,就是新用户。啊,是这样的,当然你说咱们这么双重去判断,有没有可能有误差呢。也是有可能有误差的,它也不是绝对准确的,为什么咱们举例子啊,假如说呃,一个这样的一个情况,什么情况呢?真听啊一个这样的情况,假如说我在搭建数仓之前,注意啊,在搭建书仓之前,我已经有一个用户是不是已经使用过APP了呀,对不对,已经使用过了,然后他过了一段时间他卸载了,卸载了之后,那我们现在是不是又重新搭建出仓了呀?啊对吧,咱们开始搭建出仓,搭建出仓之后啊,那它又安装了。
12:15
对不对,那这个人是老用户,不是老用户对吧?啊,那这时候咱们这张表里有他吗。是没有,那这边是不是首日,哎首日是不是也是触玩,因为安装后首次启动嘛,那所以这个人是不是也会被判定,判定成一个新用户啊,啊对,但其实他是一个老用户,也就是说你即便咱们采取这么多的措施,那也是有可能会出现哎这个误判断的判断,但是这个呢,已经就是相对来说已经做的很准确了啊,就是咱们这个误差的这个概率呢,已经变得很小了啊,也很小了。啊,如果说你没有这个首日标记,那你这个判断的误差会越更多啊,这个误差会更多啊,所以咱们这儿呢,只能是尽可能的啊,让这个误差啊变小一点啊,咱们是没有这个办法去实现这个绝对的准确的啊,只咱这样去做啊,所以在这块呢,就给大家这个把这个方案呢,给大家介绍一下就行啊,这块咱们买点,因为已经就是前面数据已经造好了,咱们没有办法再加那个字段了啊啊要是呃需要重新去修改咱们前面东西的话呢,那我们就需要在启动日志当中加上一个字段啊,这个字段呢。
13:21
就干什么呀,用来标识是否是那这个安装后的首次启动啊,是不是安装是首次启动,如果是首次,那那就设为处,那在24点之后呢,自动变为false,是这样的啊,那然后咱们结合这个首日标记,在咱们结合这张表里边的历史数据啊,去进行双重判断,去找这个新增用户。是这么做的啊好,那我把这个视频录一下。
我来说两句