00:00
来我们一起思考啊,OK,那我们现在假如说啊,这个数据已经初始化完了啊,初始完了,然后呢,我们现在来一天新的数据,然后呢,我要把新的数据是不是得融合到咱们这张表里啊,啊来看看咱这怎么做啊,啊怎么做,首先我们要做第一件事,是不是得先把这张表的原来的数据先查出来,对不对,那咱们就select啊,然后呢,哎,From from这个DWT层1TOPIC啊,那这个咱起个别名,咱们就old啊,咱们是不是也是还是类似于old跟new做一个全外联呀,对不对,那这个就是我们原来的数据,咱们就管它叫做old。啊,Old完之后呢,那咱们得干啥,我先不写来from,咱们先准备俩紫纱裙,这是那个old啊,那这个先注释一下,那接下来咱们准备new啊,现在是new啊,那new的话咱们来接着分析一下啊,咱们这个new啊,其实刚才说了,我要想更新这个值,加这个值,其实咱们只需要拿到什么呀。
01:00
只需要拿到咱们今天的活跃记录就够了。对不对,刚才咱是不是分析了啊,只要拿到今天的就够了,但是分析最近30天你只拿今天的就不够了,对吧?啊,你要么就是拿今天的和30天之前那一天,哎,加起来这两天呢,要么呢,你就把最近30天再重新算一下,是不要是这样的一个思路啊,对不对啊,那所以说咱们这儿呢,呃,一点点来吧,咱们先拿今天的,先拿今天拿,先把今天拿出来啊,那今天拿咱们拿什么呢?你要想更新这几个值,你说你只要拿什么就行。你只要获取什么信息,这几个值就能更新了。你要想更新这几个值啊,你只需要搞清楚咱们这个用户今天他有没有登录就行了。对不对,是不是这个道理,你只需要搞清楚咱们这个用户今天有没有登录就行了。没错吧,啊,如果今天登录了啊,那如果是新用户,那我把这个改一下对不对?呃,如果不管是新新还是旧,那如果今天登录了,那墨子登录时间是不是就改成今天,然后如果你今天登录了,我是不是就给这个加个一就行。
02:10
是不是,也就是你要想更新这几个值,你只需要知道这个用户今天他有没有登录是不是就行了,那坐在这儿咱们怎么知道这个用户今天有没有登录呢。嗯,DWS层咱是不是就能看出来,这个用户有没有登录,那DWD层的star log能不能看出来。也能对吧,是不是也能。啊,但是那这个既然都能的话,那咱们从哪个表里去拿比较好呢。如果从DWT,呃,DWD那子2LOG,我们是不是里边有每个用户的启动日志啊,对不对,那你跟他是不是肯定能判断出来这个用户今天有没有活跃,但是你要注意一个注意一个问题啊,那启动日志呢,我们里边是最明细的记录啊,一行数据是一次启动对吧?那如果说你要想知道这个人他有没有活跃,那你是不是还得给他进一个啥,是不是还得最终给他去个虫啊,还得对不对啊,你还得驱个虫啊,那所以说这个呢,咱们,哎不不行啊,因为数据量比较大,你还得去重,那DWS层咱们里边当天的分区里一行数据是不是就指代的就是一个用户啊,对不对,那所以说那这个是不是就不用再去重了呀?啊,那从DWS层数据量也少,那从DWS层去拿是比较合适的啊OK,那接下来我现在呢啊,就去找一下咱们这个启动用户怎么找那select呗。
03:29
啊,Select select什么select等from哪张表D哪层S层啊,然后呢,User count呗,那日期咱们就拿当天就行啊where dt等于2020杠零六杠啊幺四对不对,那假如说我这呢选一个UIDOK,那我问一下啊,你选出来的user ID。嗯,是所有在6月14号登录的user吗。是不是?
04:01
是不是这个呢,你得看咱们要求的是状态还是那个具体的动作了。是不是这个道理,你得看是那个状态还是那个距离动动作了,这个还涉及到一个什么呀,是一个跨天的一个行为,一个现象,对吧?有可能我登录的这个动作是在13号进行的,对不对,然后呢,我14号我还是登录状态对不对啊,那还有一种情况就就是这种情况,就是这种情况,那所以基于这种情况的话呢,我们就得考虑你这到底要的是统计的这个动作还是这个状态了。啊,那咱们这儿呢,主要就考虑这个动作吧,啊,考虑这个动作,所以说你这查出来的呢,还不一定全部都是在14号来登录的人吧,对不对,什么样的才是说那个login count大于零的,你看啊,咱们进来。上面是不是有一个log count呀,这里边儿是不是记录了这个人在这一天的登陆的次数啊,对不对,那所以在这里怎么办。是不是还得过滤一下呀,对不对,然后呢,And log in count,你得大于零,这不是才能够把所有当天活跃的user给它找到啊,没错吧,啊是这样的啊,所以这个大家需要去注意一下,当然接接下来咱们继续往下走啊,继续往下走,那这是我们把当天的这个活跃的用户找到了啊,只要出现在这个紫砂群里。
05:24
那就证明这个userr他今天怎么样了呀,今天活跃了对不对,没错吧,啊OK,那接下来我们再去往上看,我们要想更新这个值啊,更新更新这个值,更新这个值,我们刚才分析了两种情,两种思路,一种思路呢,是获取三天之前那一天和当天的,那还有一种思路是什么呀?是获取最近的30天的对不对?呃,一种方法要复杂一些,下边这个简单粗暴一些啊,那接下来咱们用简单粗暴这个先演示一下吧,啊,那也是我需要把最近30天的登录记录是不是得拿出来呀,对不对,那接下来咱们就拿最近30天的这个登录记录啊,那我们先来。
06:01
那select,然后呢,From from,每张表DWX层的UX得看是不是得把这个拿出来,没错吧?啊,得把这个拿出来啊,那拿出来的话,我们需要拿多少钱的数据啊。30天的,因为咱们是不是相当于重新计算一下每个user什么呀,最近30天的登录次数啊,最近三登录天数啊,登录天数,最近30天登录天数啊,那所以咱这里怎么做,是不是得把30天的数据拿出来,那也就是DT呢,我需要大于等于啊,最近30天是不是得拿到30天之前的一天的日期呀,对吧?Data怎么拿,是不是用data。爱的海顺啊,对不对,那先把当天日期放进来,2020杠零六杠幺四,然后呢,减个多少,减29才对啊,因为你要拿的是最近30天1234567,那你是不是得当天日期减29对不对,这个你自己去比划比划啊,这个减29啊,那然后呢,还得大于等于,当这个大于等于不写也行啊,大于小于等于小于等于小于等于当天日期2.20杠零六杠幺四,那这样一来,咱们是不是把这个表当中的最近30天的这个分区拿出来了呀啊拿出来了,然后拿出来之后呢,我们要计算的是什么?是每个user。
07:21
注意啊,是每个user最近30天的什么是登录?天顺啊,是登录天数,诶我这儿怎么呃。CTRLS啊是登录天数对吧,登录天数。啊,那咱们这儿呢,直接直接这个guru by user,然后康兴可以吗。可不可以?可不可以?注意是每个user,那每个是不是就得格入呗,格user ID,然后下面呢,我我怎么样,我直接选user ID,然后呢,选一个count清啊,那你说我们这个得到的是不是啊,最近30天啊,那个呃,活跃的天数呢。
08:06
是不是啊?是不是?嗯,其实也也要考虑这个问是是不是,是不是也得考虑一下那个,呃,捞宁康的大于零这个事儿啊,对不对,呃,咱们也得考虑一下啊,因为呢,你在最近30天的这个记录里啊,最近30天的这个记录里边啊,咱是不是有一个有可能有一个捞count大等于零的那种现象啊,对不对,等于零的现象咱们就需要给它,哎给它怎么办呀,给它过滤掉才对,对吧,那这个怎么处理一下呢?怎么处理一下?哎,或者说你其实你应该计算的是大于零的那些对吧?啊,这可以怎么做一下啊,哎,咱们可以这样做一下,那怎么就做一下呢?咱们在这儿可以做一个过滤怎么办?咱们用some柔和,然后和里边写着这是一个非常经典的一个组合啊,咱们来看一下,看这能不能看懂啊,Some if。那if是不是里边咱们可以传一个布尔值,然后返回俩值啊对吧?那布尔咱们选什么呢?Login count怎么样大于。
09:09
零,如果大于零,我就返回几返回一,否则我就返回几零,哎,你看一下,那这样一来是不是就能够把那个大于零的这个哎给过滤出来了,然后呢,对它进行一个求和计算呀,这个你要注意观察,这个到底它的逻辑应该是什么样的啊,给大家看一下。首先我们看原始数据这这张表对吧,咱们拿出来了三天30天的数据,那30天我是不是会有好多个login count呀,对不对,这个log count呢,我是不是有有可能有零的情况啊,有这个等于二的,有等于一的,有等于三的,有等于零的啊,有等于五的等等等等,然后呢,咱们要求的应该是什么,是登陆过的天数对不对,那登陆的天数是不是应该是大于零的我才记数,否则我就不记了呀,对不对,如果在这直接抗的星,它不管是零还是大于零,是不是都给你记上了,在我们这儿呢,只要大于零的,所以说我这相当于给每一个count我这儿加一个标记。
10:06
啊,大于零的我就记个一啊,那这也是一,这也是等于零的呢,我就记个零,哎,那依次往下走走走,那这样一来的话,那是不是咱们会给给每一个login count,咱不是都给他相当于打了一个标记啊对不对,我们现在要数的应该是什么样的,属于数的应该是一共有多少个一,对吧,数的一共有多少个一,那多少一,咱们直接求和是不是就行?因为咱们除了一就是零嘛,啊零你这个求和是不是相当于没没加呀,对吧,那我就求和相当于就求出来了一共有多少个一,也就是说找到了一共有多少个login count大于零啊,像是这样的一个逻辑。好,那这样一来呢,我们就求出来了啊,每一个呃,这个user最近30天的登录天数,登陆天数,咱们就求出来了。啊,这个大家能不能看懂,能看懂吧,啊,应该是没问题的,诶,然后大家来注意观察一下啊,那你说我上边这个东西。
11:05
这个求的是哪一天,是不是冬天的,最近一天的对不对,那这个呢是什么?是最近30天的,那你说最近30天的数据包不包含到最近一天呢?那肯定包含啊,那既然包含的话,那咱们有没有可能啊,能够通过一条circle把这个两个值给它求出来呢?能不能求出来?啊,那这这里边啊,咱们返回的应该是什么?返回的应该是最近30天活跃的柚字对吧?啊,因为你这这肯定是最最30天活跃的user,那这个呢,我们其实想返回的应该是啥?就是当天活跃的user对不对,那就是说你其实下边这个结果当中啊,肯定就已经包含了这里边的这个user了,对不对,那所以说我这儿可以怎么做啊。我其实可以。下边这个U的中当中啊,我们加一个标记。标记什么,就标记他今天。
12:02
有没有活跃?对不对,因为咱们上面这个子查询它的目的是啥,它的目的就是去找到今天活跃的user对不对。然后你活跃的user又包含在这个user里边,那所以说我上面其实可以不写,可以不写怎么办呢?我在下面一个子查询里边,我再加上一个标记,用来标识这个人今天有没有活跃,那是不是同样能够找到咱们今天的活跃用户啊,是这样的,那怎么加这个标记呢?怎么加这个标记啊?啊,怎么加这个标记。啊,怎么讲。来,我可以直接这么写,你看啊,看能不能看懂,来我写一个some some,什么some if啊,来那if里边呢,我就写一个判断条件啊,If dt等于2020杠零几零六杠幺四。啊,那我就返回谁,我就。
13:01
返回,返回login count。那否则的话呢,我就返回。零哎,你看这个东西能不能看明白啊,大家看一下,首先我们这个表查的是不是分组了,对不对,按谁分组,按user分组,那我是不是把这一个user后呢,他这30天的来,我给你看看是不是分到一组里边了呀,对不对,是不是分到一组里了,然后呢,我这边你看我是怎么做的啊。我是怎么做的啊,然后呢,我这儿我做了一个判断,如果说我这个日期是6月14号的,那我返回来就是啥,是不是就是你6月14号的登录次数啊,你的登录次数是不是有可能,诶是啊,这个一有可能是,二有可能是,三有可能是,当然是不是也有可能是零啊对不对,戴尔本我是多少诶他返回的这个捞count应该是哪一天的,应该是他6月14号的捞count吧,对不对,那其他的填的呢?我还有六月,呃,这个十三十二不是30天的吗?那其他都是啥。
14:02
是不是都是零。都是零,都是零,然后呢,我是不是对它又进行了一个求和,所以说最终这个字段它所返回的应该是什么。斯宾格是6月14号的login count呀,对不对,那所以说我就可以通过他去判断这个人6月14号有没有活跃了,如果他活跃了,如果他这个噪音count也就这个字段大于零,那说明他6月14号活跃了,对不对,如果不大于零,那就说明他没活跃,6月14号没活跃,是不是这个道理啊,是这样的啊,也就是说实际上咱们能够通过这一条circle实现刚才这俩功能,这个呢,咱们就可以不要了啊,去掉就行啊。好,那这个我把视频先录一下啊。
我来说两句