客户画像中,标签开发经常会有类似下面维度的标签,那该如何处理呢?

  1. 客户最近三个月点击app**模块的活跃时长
  2. 客户最近三个月点击app**模块的活跃次数
  3. 客户最近三个月点击app**模块的活跃天数

常规方法,以及存在的问题

最直接的办法就是在计算出当天数据之后,然后一次性加在90天的数据,goup by做相应的聚合操作,在用户量不是很大的情况下,这样做事没有问题的,

但是假设一天的活跃用户为百万级,当天数据的表中,我们假设每个用户在二十个不同大小的我们关心的模块活跃过,那么一个用户在这个表中就会有20条数据,这样总数据量就会在亿级。这样,如果还是按照以前的办法就会加在月接近百亿条数据,这样跑起来不仅会耗费太多的资源,出现数据倾斜,而且运行时间会过长,影响整个架构中任务运行的进度。

优化方法

建立一个日任务A,每天运行计算最近一个月的数据(如果数据量过大,可以考虑15天,或者更小的粒度);

建立一个日任务B,从任务A中取数,取三天的分区,做聚合计算。

让我们来举个例子

标签维度:用户最近三个月访问APP“我的”按钮的次数

底层日任务b,统计出标签 用户当天点击“我的”按钮的次数(app_mine_button_click_cnt_day),生成分区,从2018-12-01至2019-03-31

日任务A从任务b中取数, 统计出标签 用户最近一月点击“我的”按钮的次数 (app_mine_button_click_cnt_1month) 生成分区分区2019-01-01至2019-03-31

insert overwrite table A partition (day='date')

select phone_no

,sum(app_mine_button_click_cnt_day) as app_mine_button_click_cnt_1month

from b where day<='date' and day>date_sub('date',30) group by phone_no

日任务B从任务A中取数,统计出标签 用户最近三个月访问APP“我的”按钮的次数(app_mine_button_click_cnt_3month),只用取三个分区的数据就可以了。例如跑2019-03-31这一个的数据是

insert overwrite table B partition (day='date')

select phone_no

,sum(app_mine_button_click_cnt_1month)  app_mine_button_click_cnt_3month

from A where day='date' or  day=date_sub('date',30) or day=date_sub('date',60) group by phone_no;

Hive中如何统计用户三个月或者以上的行为数据相关推荐

  1. sql中如何统计各种零件的总数量_数据蒋堂 | SQL是描述性语言?

    作者:蒋步星 来源:数据蒋堂 本文共1200字,建议阅读8分钟.用SQL写代码时一般不用再关心变量.循环的具体动作,但要操心表.字段这些概念上的计算过程. 我们在学习SQL时,常常会看到这样的论调:S ...

  2. HIVE面试题原理详解 统计用户连续交易的总额、连续登陆天数、连续登陆开始和结束时间、间隔天数

    HIVE面试题原理详解 统计用户连续交易的总额.连续登陆天数.连续登陆开始和结束时间.间隔天数 友情提示 创建数据表 添加数据 流程图 第一步分析(子表a) 第二步分析(子表b) 第三步分析(子表c) ...

  3. hive中统计某列数组的元素个数

    hive中统计某列数组的元素个数 可以统计列的数量 SELECT distinct_id,sum(size(split(itemid_list,","))) FROM t_item ...

  4. python 异常处理编程 编写程序,统计用户输入的内容中,分别包含多少个英文字母字符、数字字符、空格、其他字符。

    python 异常处理编程 第二题 要求 编写程序,统计用户输入的内容中,分别包含多少个英文字母字符.数字字符.空格.其他字符. 示例 代码 方法一 s=input('请输入一行文字:\n')eN,n ...

  5. hive:统计hive中所有表的大小和创建时间

    目的:获取hive中所有表的创建时间和表大小 本文给出了一个既可以统计hive中非分区表也可以统计分区表的表大小的方式. 由于业务上没有针对分区数据统计的需求,所以可以使用此种方式统计. 如果业务需要 ...

  6. 编程,统计用户输入的一串英文文本中各单词的出现频率。

    编程,统计用户输入的一串英文文本中各单词的出现频率.注意: (1)", . ? !"等标点符号也作为分割单词的依据. (2)去除of.a.an.the这些无意义词语. (3)单词不 ...

  7. hive 中某个字段等于0_快速了解hive

    作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...

  8. hive中groupby优化_Hive数据倾斜

    Hive数据倾斜 Group By 中的计算均衡优化 1.Map端部分聚合 先看看下面这条SQL,由于用户的性别只有男和女两个值 (未知).如果没有map端的部分聚合优化,map直接把groupby_ ...

  9. hive中的分区表与视图

    Hive主要由用户接口模块.驱动模型以及元数据存储模块3个模块组成: 用户接口模块   用户接口模块包括CLI.Hive网页接口(Hive Web Interface,HWI).JDBC.ODBC.T ...

最新文章

  1. Django+Bootstrap+Mysql 搭建个人博客(五)
  2. 解决启动不了VMware虚拟机以及VM升级到新的版本后出现黑屏的问题
  3. TestNG并行测试
  4. 参观中央财经大学机房安装centos6.4及优化小结
  5. VTK:图片之DotProduct
  6. ElasticSearch——学习笔记
  7. oracle中xml如何存储过程,oracle存储过程生成xml文件
  8. 网站前端组织冒泡事件
  9. 鸿蒙应用开发--应用生命周期
  10. 【老生谈算法】matlab实现小波分析源码——小波分析
  11. 计算机怎么查文件打印记录表,打印机历史记录
  12. C语言中基本数据类型-char介绍
  13. 常用的oracle时间计算
  14. Redis - 一个简单的抢红包小项目
  15. 标志设计中选择合适的字体
  16. 震动环境如何使用称重传感器
  17. 软件流程和管理(七):个人、激励和团队
  18. emc服务器装什么系统,EMC DD系统安装指南.pdf
  19. Windows命令之 -- Del 删除指定文件
  20. 使用Bmob遇到的坑与解决办法

热门文章

  1. 微信 8.0.22 内测版:6 大更新第 1 个最实用
  2. 浅谈市场降温后的区块链发展前景
  3. SaaS平台产品架构设计
  4. 设计公司如何做好产品设计
  5. XML格式化在线工具
  6. 现在开一间网吧还能挣钱么?
  7. 23种设计模式(15):备忘录模式
  8. B450M MORTAR    AMD R5 3600   组装机
  9. 2023秋招--游卡--游戏客户端--二面面经
  10. Python取某个目录下的所有的EXCEL