我有一个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