public void DynamicSerieTests() { DummyLambda(a => a); Dummy(3); const int max = 100000; var start = new DateTime(1000, 1, 1, 0, 0, 0, DateTimeKind.Utc); var rowsA = new List<ISingleDataRow<int>>(); var rowsB = new List<ISingleDataRow<int>>(); for (var i = 0; i < max; i++) { rowsA.Add(new SingleDataRow<int>(start + TimeSpan.FromMinutes(i), i)); rowsB.Add(new SingleDataRow<int>(start + TimeSpan.FromMinutes(i), i*2)); } var serieA = new QuerySerie<int>(rowsA, start, start + TimeSpan.FromMinutes(max)) {Name = "A", Key = "A"}; var serieB = new QuerySerie<int>(rowsB, start, start + TimeSpan.FromMinutes(max)) {Name = "B", Key = "B"}; var table = new QueryTable<int>(); table.AddSerie(serieA); table.AddSerie(serieB); //var sw = Stopwatch.StartNew(); //var result = table.Do(i => i.GroupByHours(1, t => t.Mean())).ZipToNew<int>("SumTable", t => t.A + t.B); //sw.Stop(); var sw2 = Stopwatch.StartNew(); var result2 = table.Transform(i => i.GroupByMinutes(1, t => t.First())) .ZipToNew("DiffTable", t => t.A - t.B); sw2.Stop(); }
public IQueryTable <T> GetTable <T>(string measurementRegex, string timeExpression) where T : struct { var result = new QueryTable <T>(); foreach (var meas in MetadataInternal.MeasurementsWithAliases) { var match = Regex.Match(meas.Key, measurementRegex); if (match.Success) { var serie = meas.Value.GetDataPoints <T>(timeExpression).Alias(meas.Key); Group g = match.Groups["g"]; if (g.Success) { serie.GroupName = g.Value; } Group k = match.Groups["k"]; if (k.Success) { serie.Key = k.Value; } result.AddSerie(serie); } } return(result); }
public static INullableQueryTable <float> Lueftungswerte(this IDb db, string time, string interval, int windowFactor) { var table = new QueryTable <float>(); table.AddSerie(db.GetSerie <float>("Lueftung_Zulufttemperatur", time).Alias("Zuluft")); table.AddSerie(db.GetSerie <float>("Lueftung_Ablufttemperatur", time).Alias("Abluft")); table.AddSerie(db.GetSerie <float>("Lueftung_Aussenlufttemperatur", time).Alias("Aussenluft")); table.AddSerie(db.GetSerie <float>("Lueftung_Fortlufttemperatur", time).Alias("Fortluft")); table.AddSerie(db.GetSerie <float>("Lueftung_Fan_Level", time).Alias("FanLevel")); table.AddSerie(db.GetSerie <float>("HmWetterstationTemperature", time).Alias("AussenTemp")); table.AddSerie(db.GetSerie <float>("heizenAvgTemperatureOhneHobbyraum", time).Alias("InnenTemp")); return(table.Group( g => g.ByTime.Expression(interval, "5m", windowFactor) .ExpandTimeRange(TimeSpan.FromMinutes(windowFactor)).TimeStampIsMiddle() .Aggregate(a => a.MeanExpWeighted())) .Calc(t => { t.SoleEntzugsleistung = AirPower(t.FanLevel, t.Aussenluft, t.AussenTemp); t.WirkungsgradKwlAbluft = (float)100.0 / (t.Abluft - t.Aussenluft) * (t.Abluft - t.Fortluft); t.WirkungsgradGesamt = (float)100.0 / (t.InnenTemp - t.AussenTemp) * (t.Zuluft - t.AussenTemp); t.WirkungsgradOhneLeitungsverlust = (float)100.0 / (t.Abluft - t.AussenTemp) * (t.Zuluft - t.AussenTemp); t.WirkungsgradKwlZuluft = (float)100.0 / (t.Abluft - t.Aussenluft) * (t.Zuluft - t.Aussenluft); t.GewinnDurchSole = (float)t.SoleEntzugsleistung * ((100.0f - t.WirkungsgradKwlAbluft) / 100.0); var arbeitsZahl = 4.5f; t.GewinnDurchSoleElektrisch = (float)t.GewinnDurchSole / arbeitsZahl; t.GewinnNettoDurchSoleElektrisch = (float)(t.GewinnDurchSole / arbeitsZahl) - 2f; t.VerlustLeitungen = (float)AirPower(t.FanLevel, t.InnenTemp, t.Abluft); t.VerlustHaus = AirPower(t.FanLevel, t.InnenTemp, t.Zuluft); t.GewinnKwl = AirPower(t.FanLevel, t.Zuluft, t.Aussenluft); t.VerlustKwlElektrisch = KwlElectricalPower(t.FanLevel); t.GewinnNettoElektrisch = (t.GewinnKwl + t.GewinnDurchSole) / arbeitsZahl - KwlElectricalPower(t.FanLevel) - 2; }).RemoveDbSeries()); }
public static INullableQueryTable<float> Lueftungswerte(this IDb db, string time, string interval, int windowFactor) { var table = new QueryTable<float>(); table.AddSerie(db.GetSerie<float>("Lueftung_Zulufttemperatur", time).Alias("Zuluft")); table.AddSerie(db.GetSerie<float>("Lueftung_Ablufttemperatur", time).Alias("Abluft")); table.AddSerie(db.GetSerie<float>("Lueftung_Aussenlufttemperatur", time).Alias("Aussenluft")); table.AddSerie(db.GetSerie<float>("Lueftung_Fortlufttemperatur", time).Alias("Fortluft")); table.AddSerie(db.GetSerie<float>("Lueftung_Fan_Level", time).Alias("FanLevel")); table.AddSerie(db.GetSerie<float>("HmWetterstationTemperature", time).Alias("AussenTemp")); table.AddSerie(db.GetSerie<float>("heizenAvgTemperatureOhneHobbyraum", time).Alias("InnenTemp")); return table.Group( g => g.ByTime.Expression(interval, "5m", windowFactor) .ExpandTimeRange(TimeSpan.FromMinutes(windowFactor)).TimeStampIsMiddle() .Aggregate(a => a.MeanExpWeighted())) .Calc(t => { t.SoleEntzugsleistung = AirPower(t.FanLevel, t.Aussenluft, t.AussenTemp); t.WirkungsgradKwlAbluft = (float) 100.0/(t.Abluft - t.Aussenluft)*(t.Abluft - t.Fortluft); t.WirkungsgradGesamt = (float)100.0 / (t.InnenTemp - t.AussenTemp) * (t.Zuluft - t.AussenTemp); t.WirkungsgradOhneLeitungsverlust = (float)100.0 / (t.Abluft - t.AussenTemp) * (t.Zuluft - t.AussenTemp); t.WirkungsgradKwlZuluft = (float)100.0 / (t.Abluft - t.Aussenluft) * (t.Zuluft - t.Aussenluft); t.GewinnDurchSole = (float)t.SoleEntzugsleistung * ((100.0f - t.WirkungsgradKwlAbluft) / 100.0); var arbeitsZahl = 4.5f; t.GewinnDurchSoleElektrisch = (float)t.GewinnDurchSole / arbeitsZahl; t.GewinnNettoDurchSoleElektrisch = (float)(t.GewinnDurchSole / arbeitsZahl) - 2f; t.VerlustLeitungen = (float)AirPower(t.FanLevel, t.InnenTemp, t.Abluft); t.VerlustHaus = AirPower(t.FanLevel, t.InnenTemp, t.Zuluft); t.GewinnKwl = AirPower(t.FanLevel, t.Zuluft, t.Aussenluft); t.VerlustKwlElektrisch = KwlElectricalPower(t.FanLevel); t.GewinnNettoElektrisch = (t.GewinnKwl + t.GewinnDurchSole) / arbeitsZahl - KwlElectricalPower(t.FanLevel) - 2; }).RemoveDbSeries(); }
public void DynamicSerieTests() { DummyLambda(a => a); Dummy(3); const int max = 100000; var start = new DateTime(1000, 1, 1, 0, 0, 0, DateTimeKind.Utc); var rowsA = new List <ISingleDataRow <int> >(); var rowsB = new List <ISingleDataRow <int> >(); for (var i = 0; i < max; i++) { rowsA.Add(new SingleDataRow <int>(start + TimeSpan.FromMinutes(i), i)); rowsB.Add(new SingleDataRow <int>(start + TimeSpan.FromMinutes(i), i * 2)); } var serieA = new QuerySerie <int>(rowsA, start, start + TimeSpan.FromMinutes(max)) { Name = "A", Key = "A" }; var serieB = new QuerySerie <int>(rowsB, start, start + TimeSpan.FromMinutes(max)) { Name = "B", Key = "B" }; var table = new QueryTable <int>(); table.AddSerie(serieA); table.AddSerie(serieB); //var sw = Stopwatch.StartNew(); //var result = table.Do(i => i.GroupByHours(1, t => t.Mean())).ZipToNew<int>("SumTable", t => t.A + t.B); //sw.Stop(); var sw2 = Stopwatch.StartNew(); var result2 = table.Transform(i => i.GroupByMinutes(1, t => t.First())) .ZipToNew("DiffTable", t => t.A - t.B); sw2.Stop(); }
public static INullableQueryTable<float> LueftungTemperaturen(this IDb db, string time, string interval, int windowFactor) { var table = new QueryTable<float>(); table.AddSerie(db.GetSerie<float>("Lueftung_Zulufttemperatur", time).Alias("Zulufttemperatur")); table.AddSerie(db.GetSerie<float>("Lueftung_Ablufttemperatur", time).Alias("Ablufttemperatur")); table.AddSerie(db.GetSerie<float>("Lueftung_Aussenlufttemperatur", time).Alias("Aussenlufttemperatur")); table.AddSerie(db.GetSerie<float>("Lueftung_Fortlufttemperatur", time).Alias("Fortlufttemperatur")); table.AddSerie(db.GetSerie<float>("Lueftung_Fan_Level", time).Alias("Lüfterstufe")); table.AddSerie(db.GetSerie<float>("HmWetterstationTemperature", time).Alias("Aussentemperatur Wetterstation")); table.AddSerie(db.GetSerie<float>("heizenAvgTemperatureOhneHobbyraum", time).Alias("Innenraumtemperatur")); return table.Group( g => g.ByTime.Expression(interval, "5m", windowFactor) .ExpandTimeRange(TimeSpan.FromMinutes(windowFactor)).TimeStampIsMiddle() .Aggregate(a => a.MeanExpWeighted())); }
public static INullableQueryTable <float> LueftungTemperaturen(this IDb db, string time, string interval, int windowFactor) { var table = new QueryTable <float>(); table.AddSerie(db.GetSerie <float>("Lueftung_Zulufttemperatur", time).Alias("Zulufttemperatur")); table.AddSerie(db.GetSerie <float>("Lueftung_Ablufttemperatur", time).Alias("Ablufttemperatur")); table.AddSerie(db.GetSerie <float>("Lueftung_Aussenlufttemperatur", time).Alias("Aussenlufttemperatur")); table.AddSerie(db.GetSerie <float>("Lueftung_Fortlufttemperatur", time).Alias("Fortlufttemperatur")); table.AddSerie(db.GetSerie <float>("Lueftung_Fan_Level", time).Alias("Lüfterstufe")); table.AddSerie(db.GetSerie <float>("HmWetterstationTemperature", time).Alias("Aussentemperatur Wetterstation")); table.AddSerie(db.GetSerie <float>("heizenAvgTemperatureOhneHobbyraum", time).Alias("Innenraumtemperatur")); return(table.Group( g => g.ByTime.Expression(interval, "5m", windowFactor) .ExpandTimeRange(TimeSpan.FromMinutes(windowFactor)).TimeStampIsMiddle() .Aggregate(a => a.MeanExpWeighted()))); }