在我們的項目中,我們必須定期根據收到的輸入數據計算總計和進一步的計算。計算Azure Data Lake Analytics中的時間差異U-SQL作業
一個常見的需求是計算我們輸入數據流中某些行之間的時間差。
例如,這是我的輸入數據流:
時間戳事件價值
2017年5月21日11時33分17 E1
2017年5月21日11點37分18 E2
2017-05- 21 11:38 E3 18
2017年5月21日11:39 E1 19
2017年5月21日11:42 E2 19
我現在要計算所有E2事件和最後接收之間的時間跨度e1事件(按時間戳排序)。
我期望的結果是: 3(分鐘) 4(分鐘)
類似的要求是計算相同類型的事件(即E1的事件之間的所有差異)之間的時間跨度,其中我希望這樣的結果: 6(分鐘)
我嘗試至今:
這類分析中可以很容易地使用LAG函數來實現結合WHEN子句,但不幸的是,WHEN子句是丟失在U - SQL。 如果是T-SQL,也可以在語句的SELECT-Clause中使用Sub-Selects來解決這個問題,但不幸的是這在U-SQL中也是不可能的。
您有任何關於如何解決此問題的建議或示例腳本? 非常感謝您的幫助!
我覺得它可能更簡單,子查詢可能在U-SQL中。提醒我必須從Itzik Ben-Gan找到我的「差距和島嶼」! – wBob
好東西,鮑勃!這看起來很合理!謝謝! –
在_realistic數據sample_上展開,此解決方案(按設計)需要e1和e2事件之間完美的1:1對應關係。這是一個非常強大的要求 - 只有一個錯誤的時間記錄,錯過的事件,重複的事件等會讓它變得糟糕。在我的經驗中,這種像差往往會出現在現實世界的數據中 - 例如,多機器儀表整理。 – Nabeel