hIve—timestamp时间戳问题

先查看表

timestamp可以转换为标准的时间(精确到秒); https://tool.lu/timestamp/

这个时间格式用处很多:

   多个时间可以使用函数,来切换。

  每个用户 产生行为的时候,用timestamp来区分下单先后关系,记录什么时候看过哪些商品;

  比较大小,比如最早订单。。

   select max(`timestampss`) as max_tm,min(`timestampss`)  as min_tm from  user_data;  --``是1前面的那个符号,

  

 

我们以最近的这个时间为时间参考点:

  hive> select ((cast(893286638 as bigint)-cast(`timestampss` as bigint))/(60*60*24)) as days from user_data limit 10;

  

 hive>select id,collect_list(cast (days as bigint)) as days_list from (select id,
((cast(893286638 as bigint)-cast(`timestampss` as bigint))/(60*60*24)) as days from user_data)t group by id limit 10;

 能查看用户的行为时间点,可以用这个数据做一个数据清洗的规则
#collect_list,将数据搞成数组的形式。这种情况得出的数据用处:在同一个时间,多次评论,可能会有刷单的嫌疑。挖掘的意义。

时间衰减的需求:

  一个用户有多条行为,做行为分析的时候,最近的行为越有效果(越好)。sum后面返回的是一个列表。所以需要聚合

hive> select user_id,collect_list(cast(days as int)) as day_list    
  from
  (
  select user_id,exp(-(cast(893286638 as bigint)-cast(`timestampss` as bigint))/(60*60*24)/2)*rating as days from user_data) t
  group by user_id
  limit 10;
  

  exp正太分布,rating相当于分值。

  

 

  

 

转载于:https://www.cnblogs.com/taozizainali/p/9005870.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值