出租車公司把載客日誌儲存在阿里雲Log Service上,利用Log Service可靠的儲存,以及快速統計計算,挖掘日誌中有用資訊。本文將展示出租車公司如何使用阿里雲Log Service來挖掘資料中的資訊。
出租車公司記錄了每一次載客交易發生的資訊細節,包括上下客時間、經緯度、路程距離、支付方式、支付金額、繳稅額等資訊。詳細的資料,為出租車公司的營運提供了極大的協助。例如,瞭解哪些時間段比較熱門,對應增加運行車次;哪些地區需求比較廣泛,調度更多車輛前往。這些資料,使得乘客的需求得到了及時的響應,而駕駛員的收入也得到了提高,進而整個社會的效率得到了提高。
資料範例:
RatecodeID: 1VendorID: 2__source__: 192.0.2.1 __topic__: dropoff_latitude: 40.743995666503906 dropoff_longitude: -73.983505249023437extra: 0 fare_amount: 9 improvement_surcharge: 0.3 mta_tax: 0.5 passenger_count: 2 payment_type: 1 pickup_latitude: 40.761466979980469 pickup_longitude: -73.96246337890625 store_and_fwd_flag: N tip_amount: 1.96 tolls_amount: 0 total_amount: 11.76 tpep_dropoff_datetime: 2016-02-14 11:03:13 tpep_dropoff_time: 1455418993 tpep_pickup_datetime: 2016-02-14 10:53:57 tpep_pickup_time: 1455418437 trip_distance: 2.02
常見的統計
要對資料進行查詢和分析,請先建立索引。
分時段乘車人次,查看哪些時段比較熱門。
*| select count(1) as deals, sum(passenger_count) as passengers, (tpep_pickup_time %(24*3600)/3600+8)%24 as time group by (tpep_pickup_time %(24*3600)/3600+8)%24 order by time limit 24
從結果中可以看出,上午上班時間以及晚上下班後,是乘車需求最旺盛的時候,出租車公司可以相應地調度更多的車輛。
分時段平均乘車裡程。
*| select avg(trip_distance) as trip_distance, (tpep_pickup_time %(24*3600)/3600+8)%24 as time group by (tpep_pickup_time %(24*3600)/3600+8)%24 order by time limit 24
某些時刻,對乘車裡程的需求也挺旺盛,出租車公司在對應的時候也需要準備更多的車輛。
分時段平均乘車分鐘數,單位裡程需要的秒數,看看哪些時段比較堵。
*| select avg(tpep_dropoff_time-tpep_pickup_time)/60 as driving_minutes, (tpep_pickup_time %(24*3600)/3600+8)%24 as time group by (tpep_pickup_time %(24*3600)/3600+8)%24 order by time limit 24
*| select sum(tpep_dropoff_time-tpep_pickup_time)/sum(trip_distance) as driving_minutes, (tpep_pickup_time %(24*3600)/3600+8)%24 as time group by (tpep_pickup_time %(24*3600)/3600+8)%24 order by time limit 24
一些時刻特別堵,需要準備更多車輛來應對需求。
分時段平均乘車費用,看看哪些時間賺得多。
*| select avg(total_amount) as dollars, (tpep_pickup_time %(24*3600)/3600+8)%24 as time group by (tpep_pickup_time %(24*3600)/3600+8)%24 order by time limit 24
淩晨4點鐘的客單價比較高,有經濟壓力的駕駛員可以選擇在這個時候提供服務。
查看賬單範圍分布情況。
*| select case when total_amount < 1 then 'bill_0_1' when total_amount < 10 then 'bill_1_10' when total_amount < 20 then 'bill_10_20' when total_amount < 30 then 'bill_20_30' when total_amount < 40 then 'bill_30_40' when total_amount < 50 then 'bill_10_50' when total_amount < 100 then 'bill_50_100' when total_amount < 1000 then 'bill_100_1000' else 'bill_1000_' end as bill_level , count(1) as count group by case when total_amount < 1 then 'bill_0_1' when total_amount < 10 then 'bill_1_10' when total_amount < 20 then 'bill_10_20' when total_amount < 30 then 'bill_20_30' when total_amount < 40 then 'bill_30_40' when total_amount < 50 then 'bill_10_50' when total_amount < 100 then 'bill_50_100' when total_amount < 1000 then 'bill_100_1000' else 'bill_1000_' end order by count desc
從成交金額的成交區間,可以看出大部分的成交金額在1到20美元之間。