zoukankan      html  css  js  c++  java
  • 数据仓库 最近连续3周活跃用户数

    最近3周连续活跃的用户:通常是周一对前3周的数据做统计,该数据一周计算一次。

    本例需求:计算上上周、上周、本周连续3周的活跃用户。

    依赖数据:dws_uv_detail_wk(每周活跃设备明细表)。

    建表语句:

    drop table if exists ads_continuity_wk_count;
    create external table ads_continuity_wk_count( 
        `dt` string COMMENT '统计日期,一般用结束周周日日期,如果每天计算一次,可用当天日期',
        `wk_dt` string COMMENT '持续时间',
        `continuity_count` bigint
    ) 
    row format delimited fields terminated by '	'
    location '/warehouse/gmall/ads/ads_continuity_wk_count';

    数据导入脚本:

    ①concat(date_add(next_day('$do_date','MO'),-7*3),'_',date_add(next_day('$do_date','MO'),-1)) 表示从上上周周一到本周周日。

    ②having count(*)=3 因为周活表对日活的id进行了去重,所以,如果连续3周都有数据,则每周一条,加起来等于3。

    #!/bin/bash
    
    if [ -n "$1" ];then
        do_date=$1
    else
        do_date=`date -d "-1 day" +%F`
    fi
    
    hive=/opt/module/hive/bin/hive
    APP=gmall
    
    echo "-----------导入日期$do_date-----------"
    
    sql="
    insert into table "$APP".ads_continuity_wk_count
    select 
         '$do_date',
         concat(date_add(next_day('$do_date','MO'),-7*3),'_',date_add(next_day('$do_date','MO'),-1)),
         count(*)
    from 
    (
        select mid_id
        from "$APP".dws_uv_detail_wk
        where wk_dt>=concat(date_add(next_day('$do_date','MO'),-7*3),'_',date_add(next_day('$do_date','MO'),-7*2-1)) 
        and wk_dt<=concat(date_add(next_day('$do_date','MO'),-7),'_',date_add(next_day('$do_date','MO'),-1))
        group by mid_id
        having count(*)=3
    )t1;"
    
    $hive -e "$sql"
  • 相关阅读:
    sparksql
    axis2客户端
    windows命令
    如何进行大数据分析及处理(总结)
    linux下如何关闭防火墙?如何查看防火墙当前的状态
    mysql 快速简单安装法
    数据分析笔记
    建设数据仓库的八个步骤
    Java工作记录
    IIS虚拟目录和应用程序
  • 原文地址:https://www.cnblogs.com/noyouth/p/13208017.html
Copyright © 2011-2022 走看看