当前位置: 首页 > news >正文

四川长昕建设工程有限公司网站宁波专业seo服务

四川长昕建设工程有限公司网站,宁波专业seo服务,百度推广渠道商,济宁手机网站建设公司这两天有个数据需求,记录一下。 原始需求说明产品写得很乱不清晰确认了半天无语死了(开始骂人),直接列转换后的问题了 问题1: 现有一张办事预约服务记录表reservation_order,包含字段用户id、服务名称、服务…

这两天有个数据需求,记录一下。 原始需求说明产品写得很乱不清晰确认了半天无语死了(开始骂人),直接列转换后的问题了

问题1:
现有一张办事预约服务记录表reservation_order,包含字段用户id、服务名称、服务所属部门、预约状态(1已成功 2已取消)、预约到场时间时间戳、预约申请创建时间时间戳等(简单示例如下)。现为了优化预约服务指引,产品打算基于用户预约记录找出各办事预约事项相关联的业务线。筛选在2023年1月至2023年3月预约未取消数量大于等于2次的用户,列出预约未取消数cnt、按照预约时间顺序列出预约的各部门服务及时间列表item_detail_list, 根据预约未取消数量降序排序筛选前300个用户的预约序列。

iduser_iditem_namedepartment_namereservation_statusreservation_timecreate_time
1123Aa116725888000001672586522444

简要分析

  1. 各用户预约服务数不同,采用collect_list以数组形式存储在一个字段中
  2. 部门和服务字段采用concat拼接,由于服务名称存在标点符号,采用其他的标点符号进行拼接,便于后续拆分使用
  3. 要让预约服务按照时间排序,即转化为collect_list内部元素排序问题。采用distribute by 和sort by对元素进行分布和排序。对user_id进行分散分布到各个reduce,在各 reduce里进行sort by排序。(参考具体说明:Hive:distribute by与group by,order by与sort by , cluster by的区别

代码如下:

select user_id, item_detail, item_list, cnt 
from
(select user_id, collect_list(concat(item,':',create_time)) as item_detail, collect_list(item) as item_list, count(1) as cnt 
from
(select user_id, concat(department_name,'#',item_name) as item,
from_unixtime(cast((reservation_time+28800000)/1000 as bigint), 'yyyy-MM-dd HH:mm:ss') as create_time
from reservation_order
where reservation_time >= 1672502400000
and reservation_time < 1680278400000
and reservation_status != '2'
distribute by user_id
sort by user_id, create_time)a
group by user_id)b
where cnt >= 2
order by cnt desc
limit 300;

遇到新问题及改进
在把这张表推送到mysql数据库的时候发生错误。由于collect_list得到的结果是array类型的,mysql没有对应的类型,平台试图对item_list字段进行cast as string操作但是报错失败,无法直接做cast。

  • 新问题:如何把array类型转化为string类型
  • 解决方法:采用concat_ws对array类型字段按元素拆分再用分隔符连接起来(由于item_name的值有包含逗号分号,就采用了其他的)

代码修改如下:

select user_id, concat_ws('|',item_detail) as item_detail, concat_ws('|',item_list) as item_list, cnt 
from
(select user_id, collect_list(concat(item,':',create_time)) as item_detail, collect_list(item) as item_list, count(1) as cnt 
from
(select user_id, concat(department_name,'#',item_name) as item,
from_unixtime(cast((reservation_time+28800000)/1000 as bigint), 'yyyy-MM-dd HH:mm:ss') as create_time
from reservation_order
where reservation_time >= 1672502400000
and reservation_time < 1680278400000
and reserve_status != '2'
distribute by user_id
sort by user_id, create_time)a
group by user_id)b
where cnt >= 2
order by cnt desc
limit 300;

问题2:
基于上一阶段得到的item_list,列出重合的业务线及重合次数。根据重合次数进行倒序排序,取前30条业务线。

简要分析:(还没尝试用hsql写,只想到用python的方法,由短到长排序后就用in或者把业务线先转化为数组,然后再去数组元素遍历比较 让俺再想想 先这样

http://www.mmbaike.com/news/96679.html

相关文章:

  • 一流的龙岗网站建设精准营销平台
  • 南沙滩做网站公司网站宣传推广策划
  • 蓝色系列的网站近三天的国内外大事
  • 福田附近公司做网站建设哪家效益快如何在百度上做推广
  • 新浪 博客可以做网站优化吗360收录
  • 可视化web网站开发自媒体怎么做
  • 三亚网站定制网络优化有前途吗
  • 专业做公墓 陵园的网站上海网站建设优化
  • wordpress.模板seo优化效果怎么样
  • 宁海哪家做网站比较可靠而的跟地seo排名点击软件
  • 网站icp是什么意思如何制作网页最简单的方法
  • 网站开发要注意安全性优化关键词怎么做
  • 帮你做海报网站网页模板代码
  • 常州建设局官方网站在线生成网站
  • 月付商城网站建站网站宣传的方法有哪些
  • 深圳网站建设开发公司win7优化大师官方网站
  • 香港外贸网站建设seo推广是什么
  • 网站2级目录怎么做的全网最全搜索引擎app
  • 网站报价明细表产品推广营销
  • 网站建设过程中要怎么打开速度网站信息
  • 三合一网站平台太原seo推广
  • wordpress网站加载效果学会计哪个培训机构比较正规
  • 怎么做一淘宝客网站吗长沙网络公司排名
  • 网站网站建设专业网站seo推广优化教程
  • 产品宣传短视频seo引擎
  • 做网站可以用新建项目的方式吗谷歌浏览器网页版
  • 各大网站开发的区块链网站是怎么建立起来的
  • 西安手机网站案例重庆网站优化软件
  • 网站建设是广告吗网站整合营销推广
  • 打开百度app长沙优化科技有限公司正规吗