**离线电商数仓学习笔记day09**

需求三:沉默用户数

沉默用户指的是只在安装当天启动过,且启动时间是在一周前

准备新数据

为了分析沉默用户、本周回流用户数、流失用户、最近连续3周活跃用户、最近七天内连续三天活跃用户数,需要准备2019-02-12、2019-02-20日的数据。

2019-02-12数据准备
修改日志时间

dt.sh 2019-02-12

启动集群

cluster.sh start

生成日志数据

lg.sh

将HDFS数据导入到ODS层

ods_log.sh 2019-02-12

将ODS数据导入到DWD层

dwd_start_log.sh 2019-02-12
dwd_base_log.sh 2019-02-12
dwd_event_log.sh 2019-02-12

将DWD数据导入到DWS层

dws_uv_log.sh 2019-02-12

2019-02-20数据步骤同。

DWS层

使用日活跃用户表dws_uv_detail_day作为DWS层数据

ADS层

建表

drop table if exists ads_slient_count;
create external table ads_slient_count( 
    `dt` string COMMENT '统计日期',
    `slient_count` bigint COMMENT '沉默设备数'
) 
row format delimited fields terminated by '\t'
location '/warehouse/gmall/ads/ads_slient_count';

插入数据

insert into table ads_slient_count
select 
    '2019-02-20' dt,
    count(*) slient_count
from 
(
    select mid_id
    from dws_uv_detail_day
    where dt<='2019-02-20'
    group by mid_id
    having count(*)=1 and min(dt)<date_add('2019-02-20',-7)
) t1;

编写脚本

#!/bin/bash

APP=gmall
hive=/opt/module/hive/bin/hive

if [ -n "$1" ] ;then
	do_date=$1
else
	do_date=`date -d "-1 day" +F%`
fi

echo "-----------导入日期$do_date-----------"

sql="
INSERT INTO TABLE "$APP".ads_slient_count
SELECT
	'$do_date',
	count(*)
from
(
	select
		mid_id
	from "$APP".dws_uv_detail_day
	where dt<='$do_date'
	group by mid_id
	having count(*)=1
	and min(dt)<date_add('$do_date',-7)
) t1;
"

$hive -e "$sql"

最后验证是否成功

select * from ads_slient_count;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值