怎么使用SQL实现车流量的计算
导读:本文共2591.5字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 卡口转换率将数据导入hive,通过SparkSql编写sql,实现不同业务的数据计算实现,主要讲述车辆卡口转换率,卡口转化率:主要计算不同卡口下车辆之间的流向,求出之间的转换率。1、查出每个地区下每个路段下的车流量select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTI... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。卡口转换率
将数据导入hive,通过SparkSql编写sql,实现不同业务的数据计算实现,主要讲述车辆卡口转换率,卡口转化率:主要计算不同卡口下车辆之间的流向,求出之间的转换率。
1、查出每个地区下每个路段下的车流量
select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTITIONbycarORDERby action_time)asn1FROM traffic.hive_flow_action
此结果做为表1,方便后面错位连接使用
2、通过错位连接获取每辆车的行车记录
通过表1的结果,与自身进行错位链接,并以车牌为分区,拼接经过卡口的过程
(select t1.car, t1.monitor_id, concat(t1.monitor_id, "->", t2.monitor_id)aswayfrom ( select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTITIONbycar ORDERby action_time)asn1 FROM traffic.hive_flow_action)t1leftjoin( select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTITIONbycar ORDERby action_time)asn1 FROM traffic.hive_flow_action)t2on t1.car=t2.car andt1.n1=t2.n1-1where t2.action_timeisnotnull)
获取到每辆车的一个行车记录,经过的卡口
3、获取行车过程中的车辆数
获取卡口1~卡口2,…等的车辆数有哪些,即拿上面的行车记录字段进行分区在进行统计
(select s1.way, COUNT(1)sumCarfrom --行车过程(select t1.car, t1.monitor_id, concat(t1.monitor_id, "->", t2.monitor_id)asway from ( select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTITIONbycar ORDERby action_time)asn1 FROM traffic.hive_flow_action)t1 leftjoin( select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTITIONbycar ORDERby action_time)asn1 FROM traffic.hive_flow_action)t2on t1.car=t2.car andt1.n1=t2.n1-1 where t2.action_timeisnotnull)s1groupbyway)
4、获取每个卡口的总车辆数
获取每个卡口最初的车辆数,方便后面拿行车轨迹车辆数/总车辆数,得出卡口之间的转换率
select monitor_id, COUNT(1)sumallfrom traffic.hive_flow_actiongroupby monitor_id
5、求出卡口之间的转换率
select s2.way, s2.sumCar/s3.sumallzhlfrom ( select s1.way, COUNT(1)sumCar from --行车过程( select t1.car, t1.monitor_id, concat(t1.monitor_id, "->", t2.monitor_id)asway from ( select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTITIONbycar ORDERby action_time)asn1 FROM traffic.hive_flow_action)t1 leftjoin( select car, monitor_id, action_time, ROW_NUMBER()OVER(PARTITIONbycar ORDERby action_time)asn1 FROM traffic.hive_flow_action)t2on t1.car=t2.car andt1.n1=t2.n1-1 where t2.action_timeisnotnull)s1 groupby way)s2leftjoin --每个卡口总车数( select monitor_id, COUNT(1)sumall from traffic.hive_flow_action groupby monitor_id)s3on split(s2.way, "->")[0]=s3.monitor_id
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
怎么使用SQL实现车流量的计算的详细内容,希望对您有所帮助,信息来源于网络。