public QueryBuilder GetQueryBuilder(string collectionName) { var result = new QueryBuilder(); var client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("hra"); var items = db.GetCollection<DataCollectionMetadata>("collectionMetadata"); var collectionItems = db.GetCollection<BsonDocument>("incumbent"); FilterDefinition<DataCollectionMetadata> filter = new BsonDocument("_id", "incumbent"); var md = items.Find<DataCollectionMetadata>(filter); var metadata = md.SingleAsync().Result; var tasks = new List<Task<IAsyncCursor<string>>>(); metadata.Filters.ForEach(f => { var filterDefinition = new FilterDefinition(); filterDefinition.Column = f; FieldDefinition<BsonDocument, string> field = f.ColumnName; var dd = Task<IAsyncCursor<string>>.Factory.StartNew(() => { var t = collectionItems.DistinctAsync<string>(field, new BsonDocument()); t.GetAwaiter().OnCompleted(() => { t.Result.ForEachAsync((z) => { filterDefinition.AvailableFilterValues.Add(new FilterValue { Key = z, Value = z }); }); }); return t.Result; }); tasks.Add(dd); result.AvailableFilters.Add(filterDefinition); }); result.AvailableSlicers = metadata.Dimensions.Select(x => new DimensionDefinition {Column = x, IsDefault = x.IsDefault}).ToList(); //refactor available operations result.AvailableMeasures = metadata.Measures.Select( x => new MeasureDefinition {Column = x, Operation = AggregateOperations.Average, IsDefault=x.IsDefault}).ToList(); Task.WaitAll(tasks.ToArray()); return result; }
// GET: api/Incumbent public IEnumerable<BsonDocument> Get() { var svc = new Akron.Data.DataService(); var queryDoc = new QueryDocument(); var queryGroup = new GroupDefinition(); var qb = new QueryBuilder(); qb.SelectedSlicers.Add(new DimensionDefinition { Column = new DataColumnMetadata { ColumnName = "Year" }, IsDefault = true }); qb.SelectedSlicers.Add(new DimensionDefinition { Column = new DataColumnMetadata { ColumnName = "org_type" } }); qb.SelectedMeasures = new List<MeasureDefinition> { new MeasureDefinition { Column = new DataColumnMetadata {ColumnName = "Base_Pay"}, IsDefault = true, Operation = AggregateOperations.Average } }; var qd = qb.ToQueryDocument(); qd.CollectionName = "incumbent"; qd.DataSource = "hra"; qd.DataSourceLocation = "mongodb://localhost:27017"; var result = svc.GetData(qd); return result; }
public void BuildDefaultQuery() { var client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("hra"); var items = db.GetCollection<BsonDocument>("incumbent"); var qb = new QueryBuilder(); // qb.SelectedSlicers }
// POST: api/SeriesBuilder public List<BsonDocument> Post(QueryBuilder value) { var result = svc.GetSeries(value); return result; }
// POST: api/Incumbent public void Post(QueryBuilder value) { var m = value; var x = "Y"; }
private QueryBuilder GetQueryBuilder() { var queryBuilder = new QueryBuilder(); BsonClassMap.RegisterClassMap<DataCollectionMetadata>(cm => { cm.AutoMap(); cm.MapIdMember(c => c.CollectionName); }); var client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("hra"); var items = db.GetCollection<DataCollectionMetadata>("collectionMetadata"); var collectionItems = db.GetCollection<BsonDocument>("incumbent"); FilterDefinition<DataCollectionMetadata> filter = new BsonDocument("_id", "incumbent"); var md = items.Find<DataCollectionMetadata>(filter); //var ct = md.CountAsync().Result; var metaData = md.SingleAsync().Result; var fValues = new List<String>(); var tasks = new List<Task<IAsyncCursor<string>>>(); metaData.Filters.ForEach(f => { var filterDefinition = new FilterDefinition(); filterDefinition.Column = f; FieldDefinition<BsonDocument, string> field = f.ColumnName; var dd = Task<IAsyncCursor<string>>.Factory.StartNew(() => { var t = collectionItems.DistinctAsync<string>(field, new BsonDocument()); t.GetAwaiter().OnCompleted(() => { t.Result.ForEachAsync((z) => { filterDefinition.AvailableFilterValues.Add(new FilterValue {Key = z, Value = z}); }); }); return t.Result; }); tasks.Add(dd); queryBuilder.AvailableFilters.Add(filterDefinition); }); Task.WaitAll(tasks.ToArray()); Assert.IsFalse(queryBuilder.SelectedFilters.Any()); var gd = new GroupDefinition(); gd.Dimensions.Add(new DimensionDefinition { Column = new DataColumnMetadata { ColumnName = "Year", DataType = ColumnDataTypes.Int32 }, IsDefault=true }); var fd = new MeasureDefinition(); fd.Column = new DataColumnMetadata {ColumnName = "Base_Pay", DataType = ColumnDataTypes.Double}; fd.IsDefault = true; gd.Measures.Add(fd); return queryBuilder; }
// POST: api/QueryBuilder public List<BsonDocument> Post(QueryBuilder value) { var result = svc.QueryData(value); return result; }
public List<BsonDocument> GetSeries(QueryBuilder builder) { //year column is default; builder.SelectedSlicers.Insert(0, builder.AvailableSlicers.Single(x => x.IsDefault)); //add default org type if (builder.SelectedSlicers.Count == 1) builder.SelectedSlicers.Add( builder.AvailableSlicers.SingleOrDefault(x => x.Column.ColumnName == "Job_Family")); builder.SelectedMeasures = new List<MeasureDefinition> {builder.AvailableMeasures.Single(x => x.IsDefault)}; var qd = builder.ToSeriesQueryDocument(); qd.CollectionName = "incumbent"; qd.DataSource = "hra"; qd.DataSourceLocation = "mongodb://localhost:27017"; var service = new DataService(); var result = service.GetData(qd); return result; }
public List<BsonDocument> QueryData(QueryBuilder builder) { var qd = builder.ToQueryDocument(); qd.CollectionName = "incumbent"; qd.DataSource = "hra"; qd.DataSourceLocation = "mongodb://localhost:27017"; var service = new DataService(); return service.GetData(qd); }