在當(dāng)今的車聯(lián)網(wǎng)平臺中,車輛上報的數(shù)據(jù)量巨大且更新頻繁,包括車輛傳感器數(shù)據(jù)、駕駛行為數(shù)據(jù)、GPS軌跡數(shù)據(jù)等。這就需要流式計算來實時處理和分析這些數(shù)據(jù),在數(shù)據(jù)產(chǎn)生/接入的時候就立刻產(chǎn)生價值。比如,可以實時監(jiān)測和分析車輛的健康狀態(tài),預(yù)測可能發(fā)生的故障,提供及時的維修建議,監(jiān)控車輛的運行軌跡是否正常、從而確保車輛和業(yè)務(wù)的安全和穩(wěn)定。
在流計算中,數(shù)據(jù)是以源源不斷的流(stream)的形式到達(dá)的。由于流數(shù)據(jù)是無界的(理論上數(shù)據(jù)會一直產(chǎn)生),為了劃分最小的計算單元,就有了窗口的概念。通過不同邏輯的窗口劃分,流計算可以滿足不同的業(yè)務(wù)需求。
在 TDengine 的流計算中,對數(shù)據(jù)集提供了 5 種特色的窗口查詢:https://docs.taosdata.com/reference/taos-sql/distinguished/。簡單來講:分別是通過固定時間間隔劃分窗口的 interval , 通過布爾值劃分窗口的 state_window, 通過狀態(tài)持續(xù)時間劃分窗口的 session , 通過數(shù)據(jù)行數(shù)劃分窗口的 count_window,通過自定義表達(dá)式制定規(guī)則的 event_window。每一種窗口功能,都包含了很多典型的業(yè)務(wù)需求,它們使 TDengine 在車聯(lián)網(wǎng)行業(yè)中發(fā)揮了更重要的作用。
以通過布爾值劃分窗口的 state_window 舉例:用戶可以通過對車輛移動狀態(tài)進(jìn)行移動/靜止的窗口劃分,然后實時計算獲取車輛的每次啟停的時間、位置、中間耗時。通過類似這樣的語句,就可以做到實時掌握車輛的移動狀態(tài)。再通過與實時數(shù)據(jù)的對比,就可以及時對超時/異常停車的車輛發(fā)出告警。
CREATE stream overtime_parking INTO overtime_parking_output_stb AS
SELECT
_wstart,
_wend,
TIMEDIFF(_wstart, _wend, 1s) AS sparking_time,
LAST(address) address,
speed_status,
COUNT(*) AS record_count,
tbname
FROM
stb_cold_gps PARTITION BY tbname state_window(speed_status);
除此之外,用戶還可以通過車輛采集到的各種信號值,從而通過業(yè)務(wù)邏輯自定義出兩種狀態(tài)。
通過 CASE WHEN 的邏輯,用戶自定義地設(shè)置這個窗口:STATE_WINDOW( CASE WHEN speed >= xxx THEN true ELSE false END),從而滿足更靈活的業(yè)務(wù)需求。
本文僅以此窗口為例,而對于其他更多的窗口的流計算應(yīng)用場景,請點擊這里,申請演示。



互聯(lián)網(wǎng).png)



-1.png)







證.png)


伙伴.png)
伙伴.png)
伙伴.png)



