我有一個DataTable骨料數據(5分鐘)
DataTable dt = new DataTable();
dt.Columns.Add("ts");
dt.Columns.Add("agent");
dt.Columns.Add("host");
dt.Columns.Add("metric");
dt.Columns.Add("val");
我的數據來自在15秒的時間間隔;並且我需要爲每個主機/代理/度量(包括5分鐘時間戳指示)獲取MAX "val"
5分鐘的時間段
這是我最喜歡的東西。
var q1 = from r in dt.Rows.Cast<DataRow>()
let ts = Convert.ToDateTime(r[0].ToString())
group r by new DateTime(ts.Year, ts.Month, ts.Day, ts.Hour, ts.Minute, ts.Second)
into g
select new
{
ts = g.Key,
agentName = g.Select(r => r[1].ToString()),
Sum = g.Sum(r => (int.Parse(r[4].ToString()))),
Average = g.Average(r => (int.Parse(r[4].ToString()))),
Max = g.Max(r => (int.Parse(r[4].ToString())))
};
相當糟糕
'ts = g.Key'產生整數;我怎樣才能真正獲得時間戳(他們應該以5分鐘爲增量) – Andrew
@Andrew'DateTime'有一個構造函數,它接受許多刻度;不要忘記首先乘以'ticksInFiveMinutes'。 – Servy
我注意到它只是按時間分組,我如何按代理,主機和度量添加附加組? – Andrew