public ResultsMapper(OrderLearner orderLearner) { if (orderLearner == null) { throw new ArgumentNullException(nameof(orderLearner)); } _orderLearner = orderLearner; }
/// <summary> /// Builds results into object having column names array and 2d array data grid /// </summary> public HistogramResults BuildResults() { if (_row == null) { throw new InvalidOperationException("Aggregation was never performed."); } KeyValuePair <DimensionKey, Val[]>[] results = _row .Select(r => new KeyValuePair <DimensionKey, Val[]>(r.Key, r.Value.Export().ToArray())) .ToArray(); OrderLearner orderLearner = new OrderLearner(); results.ForEach(kv => orderLearner.Learn(kv.Value.Select(v => v.Key))); string[] columnNames = Dimensions .Select(d => d.DimensionName) .Concat(orderLearner.LearnedOrder) .Except(ColumnIgnoreNames) .ToArray(); object[][] resultValues = new object[_row.Count][]; int rowIndex = 0; foreach (KeyValuePair <DimensionKey, Val[]> pair in results) { resultValues[rowIndex] = new object[columnNames.Length]; DimensionKey dimensions = pair.Key; Val[] metrics = pair.Value; for (int i = 0; i < dimensions.Values.Count; i++) { resultValues[rowIndex][i] = dimensions.Values[i]; } for (int i = 0; i < metrics.Length; i++) { int columnIndex = Array.FindIndex(columnNames, s => s == metrics[i].Key); if (columnIndex != -1) { resultValues[rowIndex][columnIndex] = metrics[i].Value; } } rowIndex++; } ReplaceNames(columnNames, ColumnAliases); return(new HistogramResults(columnNames, resultValues)); }
/// <summary> /// Builds results into object having collumn names array 2d array data grid /// </summary> public HistogramResults BuildResults() { if (_row == null) { throw new InvalidOperationException("LoadTest wasn't performed with this HistogramAggregator"); } OrderLearner orderLearner = new OrderLearner(); _row.ForEach(i => orderLearner.Learn(i.Value.ColumnNames)); string[] columnNames = _dimensions .Select(d => d.DimensionName) .Concat(orderLearner.LearnedOrder) .Except(_ignoredColumnNames) .ToArray(); object[][] resultValues = new object[_row.Count][]; int rowIndex = 0; foreach (KeyValuePair <DimensionValues, IMetric> pair in _row) { resultValues[rowIndex] = new object[columnNames.Length]; DimensionValues dimensions = pair.Key; IMetric metrics = pair.Value; for (int i = 0; i < dimensions.Values.Count; i++) { resultValues[rowIndex][i] = dimensions.Values[i]; } for (int i = 0; i < metrics.ColumnNames.Length; i++) { int columnIndex = Array.FindIndex(columnNames, s => s == metrics.ColumnNames[i]); if (columnIndex != -1) { resultValues[rowIndex][columnIndex] = metrics.Values[i]; } } rowIndex++; } ReplaceNames(columnNames, _columnNameAliases); return(new HistogramResults(columnNames, resultValues)); }