
| Visual Basic (Declaration) | |
|---|---|
Public NotInheritable Class SchemaBuilder | |
| C# | |
|---|---|
public sealed class SchemaBuilder | |
This class represents a schema definition-like object whose value is a mutable collection of DimensionBuilder, FieldBuilder and QueryFieldBuilder.
Most of the methods that modify an instance of this class return a reference to that same instance. Since a reference to the instance is returned, you can call a method or property on the reference. This can be convenient if you want to write a single statement that chains successive operations one after another.
SchemaBuilder allows to define the schema and save it (using the SaveSchema method) to the file or fix it like a SchemaDefinition instance (using BuildSchema).
SchemaBuilder provides the AutoGenerate(String,Dictionary<String,Type>) and AutoGenerate(String,IDbConnection,String) methods for the auto-generation of a schema definition. These static methods produce an instance of SchemaBuilder that can be used for further modifications.
| C# | Copy Code |
|---|---|
using System; using GrapeCity.ActiveAnalysis.Schema; public static class App { static void Main() { // Create a SchemaBuilder. SchemaBuilder sb = new SchemaBuilder("Nwind"); // Add query fields. sb.AddQueryFields( // Add trivial query fields. These fields returned by SQL query. "CategoryName", "ProductName", "OrderDate", // Followed by three ways are supported and equal: "UnitPrice", // implicit cast (QueryFieldBuilder) "Quantity" , // explicit cast new QueryFieldBuilder("Freight") , // explicit ctor call // Add calculated query fields. These fields can be based on already declared fields. new QueryFieldBuilder("OrderDate_Year") .SetExpression<int>("=Year(Fields!OrderDate.Value)"), new QueryFieldBuilder("OrderDate_Quarter") .SetExpression<int>("=DatePart(DateInterval.Quarter, Fields!OrderDate.Value)"), new QueryFieldBuilder("OrderDate_Month") .SetExpression<int>("=Month(Fields!OrderDate.Value)") ); // Add dimension 'Measures'. sb.AddDimension( new MeasuresDimBuilder("Measures") .AddFields( new MeasureBuilder("Average Unit Price") .SetAggregateFunction(AggregateFunction.Avg) // average .SetExpression<float>("=Fields!UnitPrice.Value") // based on query field UnitPrice .SetDefaultFormat("c") // currency , new MeasureBuilder("Order Count") // default aggregate function of 'int'-expressions is Sum .SetExpression<int>("=Fields!Quantity.Value") // based on query field Quantity .SetDefaultFormat("#0") , new MeasureBuilder("Freight") // default aggregate function of 'int'-expressions is Sum .SetExpression<float>("=Fields!Freight.Value") // based on query field Quantity .SetDefaultFormat("#,##0.00") ) ); AttributeBuilder defaultField; // Add attributes dimensions. sb.AddDimension( // Add dimension 'Order Date'. new AttributesDimBuilder("Order Date") .AddFields( // Add hierarchy 'Order Date' defaultField = new HierarchyBuilder("Order Date") // Add 3 levels: Year, Quarter and Month. .AddLevels( new LevelBuilder("Year") .SetExpression<int>("=Fields!OrderDate_Year.Value") , new LevelBuilder("Quarter") .SetExpression<int>("=Fields!OrderDate_Quarter.Value") // Set caption like 'Q1 2008' .SetCaptionExpression( "=\"Q\" & Fields!OrderDate_Quarter.Value & \" \" & Fields!OrderDate_Year.Value") , new LevelBuilder("Month") .SetExpression<int>("=Fields!OrderDate_Month.Value") // Set caption like 'June, 2008' .SetCaptionExpression( "=MonthName(Fields!OrderDate_Month.Value) & \", \" & Fields!OrderDate_Year.Value") ) , // Add attribute 'Date'. new AttributeBuilder("Date").SetExpression<DateTime>("=Fields!OrderDate.Value") ) // Set 'Order Date' hierarchy as default field of 'Date' dimension. .SetDefaultField(defaultField) ); string categoryExpression = "=Fields!CategoryName.Value"; string productExpression = "=Fields!ProductName.Value"; sb.AddDimension( new AttributesDimBuilder("Products") .AddFields( // Add hierarchy with two levels and two attributes. defaultField = new HierarchyBuilder("Product Categories") .AddLevels( new LevelBuilder("Category").SetExpression(categoryExpression), new LevelBuilder("Product").SetExpression(productExpression)) , new AttributeBuilder("Category").SetExpression<string>(categoryExpression), new AttributeBuilder("Product").SetExpression<string>(productExpression) ) .SetDefaultField(defaultField) ); sb.SaveSchema(new FileInfo("C:\\Nwind.schema")); } } | |
System.Object
GrapeCity.ActiveAnalysis.Schema.SchemaBuilder
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2