我正在使用 azure-streamanalytics-cicd 來測驗我對流分析作業的 asaql 查詢。
在這個查詢中,我需要有當前的時間戳:
SELECT
....,
System.Timestamp() AS event_datetime
INTO [mssql-output]
現在在測驗部分,我提供所有模擬輸入并根據硬編碼輸出驗證它。但是由于時間戳值,測驗一直失敗。查詢本身按預期作業,但要擁有適當的 CI/CD 管道,我們需要運行這些測驗。
我怎樣才能模擬它,以便檢查它?
uj5u.com熱心網友回復:
您可以(并且應該)使用TIMESTAMP BY定義自定義時間戳。
在本地開發時,如果不提供TIMESTAMP,我們使用查詢開始時間作為所有記錄的時間戳。如果您進行任何型別的時間處理(分析函式,如滯后或超前、流-流連接、時間聚合),它們很可能會對您產生奇怪的行為,因為它們將在查詢開始時間的單個時間片上運行。
但這也意味著System.Timestamp()每次運行都會有所不同,這將破壞單元測驗。
我們正在努力在測驗用例定義模板中添加一個排除串列,因此您可以告訴測驗運行者在比較結果時不要考慮該列。但這是一個長期的事情,在這里無濟于事。
有用的是使用TIMESTAMP BY. 如果您沒有事件時間戳或不想使用有效負載中的時間戳,則始終可以使用TIMESTAMP BY EventEnqueuedUtcTime,這無論如何都是默認的隱式行為。這樣您就可以將 EventEnqueuedUtcTime 添加到您的輸入模擬檔案和測驗輸入檔案中,并控制單元測驗的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430885.html
