[英]How to calculate time grain based on selected period from azure dashboard in a custom chart
在編寫 kusto 查詢以在我的 azure 儀表板上創建自定義圖表時,我希望能夠根據用戶在儀表板上選擇的時間段計算時間粒度。
例如:最后 4 小時 => 時間顆粒 2 分鍾,最后 24 小時 => 10 分鍾
我嘗試了以下方法來計算時間段,因為我們仍然無法訪問它(就我在互聯網上找到的而言)。
let timeGrain = traces
| summarize min_time = min(timestamp), max_time = max(timestamp)
| extend timeWindow = max_time - min_time // days / hrs/ min / seconds
| project timeWindow
| extend timeGrain = case(timeWindow <= 4h, "2m",
timeWindow <= 12h, "5m",
timeWindow <= 24h, "10m",
"2h")
| project timeGrain;
該查詢返回我想要實現的時間粒度,但我無法在其他查詢中使用此變量。
traces
...
| summarize percentile(DurationInMs, 50) by bin(timestamp, timeGrain), CommandType
| render areachart with (ytitle = "Duration In Ms", xtitle = "Timestamp");
(我知道跟蹤不是存儲有關持續時間的數據的最佳位置,我們會將其更改為指標,但這不是問題的范圍)
這給了我以下錯誤:“summarize”運算符:無法解析名為“timeGrain”的標量表達式
有沒有辦法解決這個錯誤,或者有沒有更好的方法來創建動態時間顆粒?
顯然,我的跟蹤中沒有相同的字段,但您應該使用時間跨度而不是字符串來定義timeGrain
。
此外,要將查詢結果timeGrain
用作變量,請使用toscalar
( docs ):
let timeGrain = toscalar(traces
| summarize min_time = min(timestamp), max_time = max(timestamp)
| extend timeWindow = max_time - min_time // days / hrs/ min / seconds
| project timeWindow
| extend timeGrain = case(timeWindow <= 4h, 2m,
timeWindow <= 12h, 5m,
timeWindow <= 24h, 10m,
2h)
| project timeGrain);
traces
| summarize count() by bin(timestamp, timeGrain)
| order by timestamp desc
這工作得很好。
這可能不是問題的直接答案,但對於不想創建邏輯以從時間范圍推斷時間粒度的其他人可能有用。
使用工作簿從應用洞察查詢創建圖表。 添加時間范圍參數,參考查詢中的參數。 {TimeRange:grain} 將為您提供與所選時間范圍相對應的粒度。 現在將查詢部分固定到儀表板,瞧! 您的圖表已准備好使用儀表板上選擇的時間范圍,自動刷新參數。
創建工作簿並將部件固定到儀表板: https : //docs.microsoft.com/en-us/azure/azure-monitor/visualize/workbooks-overview時間范圍參數: https : //docs.microsoft.com/en-us /azure/azure-monitor/visualize/workbooks-time
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.