Exemplo n.º 1
0
        private double[] GetNumbers(AggregationsHelper aggregations, IEnumerable <FieldAggregation> fields)
        {
            var results = new List <double>();

            foreach (var field in fields)
            {
                switch (field.Type)
                {
                case FieldAggregationType.Average:
                    results.Add(aggregations.Average(field.Key)?.Value.GetValueOrDefault() ?? 0);
                    break;

                case FieldAggregationType.Distinct:
                    results.Add(aggregations.Cardinality(field.Key)?.Value.GetValueOrDefault() ?? 0);
                    break;

                case FieldAggregationType.Sum:
                    results.Add(aggregations.Sum(field.Key)?.Value.GetValueOrDefault() ?? 0);
                    break;

                case FieldAggregationType.Min:
                    results.Add(aggregations.Min(field.Key)?.Value.GetValueOrDefault() ?? 0);
                    break;

                case FieldAggregationType.Max:
                    results.Add(aggregations.Max(field.Key)?.Value.GetValueOrDefault() ?? 0);
                    break;

                case FieldAggregationType.Last:
                    // TODO: Populate with the last value.
                    break;

                case FieldAggregationType.Term:
                    var termResult = aggregations.Terms(field.Key);
                    results.Add(termResult?.Items.Count > 0 ? termResult.Items[0].DocCount : 0);
                    break;

                default:
                    throw new InvalidOperationException($"Unknown FieldAggregation type: {field.Type}");
                }
            }

            return(results.ToArray());
        }
Exemplo n.º 2
0
        public static int GetCardinality <T>(this AggregationsHelper aggs, Expression <Func <T, object> > fieldGetter, Expression <Func <T, object> > filterRule = null)
        {
            var         aggName = fieldGetter.GetAggName(AggType.Cardinality);
            ValueMetric itemsTerms;

            if (filterRule == null)
            {
                itemsTerms = aggs.Cardinality(aggName);
            }
            else
            {
                var filterName = filterRule.GenerateFilterName();
                var filterAgg  = aggs.Filter(filterName);
                itemsTerms = filterAgg.Cardinality(aggName);
            }

            if (itemsTerms?.Value == null)
            {
                throw new InvalidOperationException("Cardinality not available");
            }

            return((int)itemsTerms.Value.Value);
        }
Exemplo n.º 3
0
        private double[] GetNumbers(AggregationsHelper aggregations, IEnumerable<FieldAggregation> fields) {
            var results = new List<double>();
            foreach (var field in fields) {
                switch (field.Type) {
                    case FieldAggregationType.Average:
                        results.Add(aggregations.Average(field.Key)?.Value.GetValueOrDefault() ?? 0);
                        break;
                    case FieldAggregationType.Distinct:
                        results.Add(aggregations.Cardinality(field.Key)?.Value.GetValueOrDefault() ?? 0);
                        break;
                    case FieldAggregationType.Sum:
                        results.Add(aggregations.Sum(field.Key)?.Value.GetValueOrDefault() ?? 0);
                        break;
                    case FieldAggregationType.Min:
                        results.Add(aggregations.Min(field.Key)?.Value.GetValueOrDefault() ?? 0);
                        break;
                    case FieldAggregationType.Max:
                        results.Add(aggregations.Max(field.Key)?.Value.GetValueOrDefault() ?? 0);
                        break;
                    case FieldAggregationType.Last:
                        // TODO: Populate with the last value.
                        break;
                    case FieldAggregationType.Term:
                        var termResult = aggregations.Terms(field.Key);
                        results.Add(termResult?.Items.Count > 0 ? termResult.Items[0].DocCount : 0);
                        break;
                    default:
                        throw new InvalidOperationException($"Unknown FieldAggregation type: {field.Type}");
                }
            }

            return results.ToArray();
        }