Code For MiningStructure
1
public static ScalarMiningStructureColumn CreateMiningStructureColumn(CubeAttribute attribute, bool isKey)
2
{
3
ScalarMiningStructureColumn column = new ScalarMiningStructureColumn();
4
column.Name = attribute.Attribute.Name;
5
//cube attribute is usually modeled as discrete except for key column
6
column.Content = (isKey ? MiningStructureColumnContents.Key : MiningStructureColumnContents.Discrete);
7
column.IsKey = isKey;
8
//bind column source to a cube dimension attribute
9
column.Source = new CubeAttributeBinding(attribute.ParentCube.ID, ((CubeDimension)attribute.Parent).ID,
10
attribute.Attribute.ID,
11
AttributeBindingType.Name);
12
//Get the column data type from the attribute key column binding.
13
column.Type = MiningStructureColumnTypes.GetColumnType(attribute.Attribute.NameColumn.DataType);
14
return column;
15
}
16![]()
17![]()
18
public static ScalarMiningStructureColumn CreateMiningStructureColumn(Microsoft.AnalysisServices.Measure measure)
19
{
20
ScalarMiningStructureColumn column = new ScalarMiningStructureColumn();
21
column.Name = measure.Name;
22
//Set the content type to continuous for measures.
23
column.Content = MiningStructureColumnContents.Continuous;
24
column.Source = new MeasureBinding(measure.ID);
25
column.Type = MiningStructureColumnTypes.GetColumnType(measure.Source.DataType);
26
return column;
27
}
28![]()
29
public void CreateProcessSegmentationModel()
30
{
31
//connecting the server and database
32
Server myServer = new Server();
33
myServer.Connect("DataSource=localhost;Catalog=FoodMart");
34
Database myDatabase = myServer.Databases["FoodMart"];
35
Cube myCube = myDatabase.Cubes["FoodMart 2000"];
36
CubeDimension myDimension = myCube.Dimensions["Customer"];
37
MiningStructure myMiningStructure = myDatabase.MiningStructures.Add("CustomerSegement", "CustomerSegement");
38
//Bind the mining structure to a cube.
39
myMiningStructure.Source = new CubeDimensionBinding(".", myCube.ID, myDimension.ID);
40
// Create the key column.
41
CubeAttribute customerKey = myCube.Dimensions["Customer"].Attributes["Customer"];
42
ScalarMiningStructureColumn keyStructureColumn = Utilities.CreateMiningModelColumn(customerKey, true);
43
myMiningStructure.Columns.Add(keyStructureColumn);
44
//Member Card attribute
45
CubeAttribute memberCard = myCube.Dimensions["Customer"].Attributes["Member Card"];
46
ScalarMiningStructureColumn memberCardStructureColumn = Utilities.CreateMiningModelColumn(memberCard, false);
47
myMiningStructure.Columns.Add(memberCardStructureColumn);
48
//Total Children attribute
49
CubeAttribute totalChildren = myCube.Dimensions["Customer"].Attributes["Total Children"];
50
ScalarMiningStructureColumn totalChildrenStructureColumn = Utilities.CreateMiningModelColumn(totalChildren, false);
51
myMiningStructure.Columns.Add(totalChildrenStructureColumn);
52
//Store Sales measure
53
Measure storeSales = myCube.MeasureGroups[0].Measures["Store Sales"];
54
ScalarMiningStructureColumn storeSalesStructureColumn = Utilities.CreateMiningModelColumn(storeSales);
55
myMiningStructure.Columns.Add(storeSalesStructureColumn);
56
//Create a mining model from the mining structure. By default, all the
57
//structure columns are used. Nonkey columns are with usage input
58
MiningModel myMiningModel = myMiningStructure.CreateMiningModel(true, "CustomerSegment");
59
//Set the algorithm to be clustering.
60
myMiningModel.Algorithm = MiningModelAlgorithms.MicrosoftClustering;
61
//Process structure and model
62
try
63
{
64
myMiningStructure.Update(UpdateOptions.ExpandFull);
65
myMiningStructure.Process(ProcessType.ProcessFull);
66
}
67
catch (Microsoft.AnalysisServices.OperationException e)
68
{
69
string err = e.Message;
70
}
71
}
72![]()
73
public static TableMiningStructureColumn CreateMiningStructureColumn(MeasureGroup measureGroup)
74
{
75
TableMiningStructureColumn column = new TableMiningStructureColumn();
76
column.Name = measureGroup.Name;
77
column.SourceMeasureGroup = new MeasureGroupBinding(".", ((Cube)measureGroup.Parent).ID, measureGroup.ID);
78
return column;
79
}
80![]()
81
private void CreateMarketBasketModel()
82
{
83
84
cubeAttribute basketAttribute;
85
CubeAttribute itemAttribute;
86
Server myServer = new Server();
87
myServer.Connect("DataSource=localhost;Catalog=FoodMart");
88
Database myDatabase = myServer.Databases["FoodMart"];
89
Cube myCube = myDatabase.Cubes["FoodMart 2000"];
90
CubeDimension myDimension = myCube.Dimensions["Customer"];
91
MiningStructure myMiningStructure = myDatabase.MiningStructures.Add("MarketBasket", "MarketBasket");
92
myMiningStructure.Source = new CubeDimensionBinding(".", myCube.ID, myDimension.ID);
93
basketAttribute = myCube.Dimensions["Customer"].Attributes["Customer"];
94
itemAttribute = myCube.Dimensions["Product"].Attributes["Product"];
95
//basket structure column
96
ScalarMiningStructureColumn basket = Utilities.CreateMiningModelColumn(basketAttribute, true);
97
basket.Name = "Basket";
98
myMiningStructure.Columns.Add(basket);
99
//item structure column - nested table
100
ScalarMiningStructureColumn item = Utilities.CreateMiningModelColumn(itemAttribute, true);
101
item.Name = "Item";
102
MeasureGroup measureGroup = myCube.MeasureGroups[0];
103
TableMiningStructureColumn purchases = Utilities.CreateMiningModelColumn(measureGroup);
104
purchases.Name = "Purchases";
105
purchases.Columns.Add(item);
106
myMiningStructure.Columns.Add(purchases);
107
MiningModel myMiningModel = myMiningStructure.CreateMiningModel();
108
myMiningModel.Name = "MarketBasket";
109
myMiningModel.Columns["Purchases"].Usage = MiningModelColumnUsages.PredictOnly;
110
myMiningModel.Algorithm = MiningModelAlgorithms.MicrosoftAssociationRules;
111
}
public static ScalarMiningStructureColumn CreateMiningStructureColumn(CubeAttribute attribute, bool isKey)2
{3
ScalarMiningStructureColumn column = new ScalarMiningStructureColumn();4
column.Name = attribute.Attribute.Name;5
//cube attribute is usually modeled as discrete except for key column6
column.Content = (isKey ? MiningStructureColumnContents.Key : MiningStructureColumnContents.Discrete);7
column.IsKey = isKey;8
//bind column source to a cube dimension attribute9
column.Source = new CubeAttributeBinding(attribute.ParentCube.ID, ((CubeDimension)attribute.Parent).ID,10
attribute.Attribute.ID,11
AttributeBindingType.Name);12
//Get the column data type from the attribute key column binding.13
column.Type = MiningStructureColumnTypes.GetColumnType(attribute.Attribute.NameColumn.DataType);14
return column;15
}16

17

18
public static ScalarMiningStructureColumn CreateMiningStructureColumn(Microsoft.AnalysisServices.Measure measure)19
{20
ScalarMiningStructureColumn column = new ScalarMiningStructureColumn();21
column.Name = measure.Name;22
//Set the content type to continuous for measures.23
column.Content = MiningStructureColumnContents.Continuous;24
column.Source = new MeasureBinding(measure.ID);25
column.Type = MiningStructureColumnTypes.GetColumnType(measure.Source.DataType);26
return column;27
}28

29
public void CreateProcessSegmentationModel()30
{31
//connecting the server and database32
Server myServer = new Server();33
myServer.Connect("DataSource=localhost;Catalog=FoodMart");34
Database myDatabase = myServer.Databases["FoodMart"];35
Cube myCube = myDatabase.Cubes["FoodMart 2000"];36
CubeDimension myDimension = myCube.Dimensions["Customer"];37
MiningStructure myMiningStructure = myDatabase.MiningStructures.Add("CustomerSegement", "CustomerSegement");38
//Bind the mining structure to a cube.39
myMiningStructure.Source = new CubeDimensionBinding(".", myCube.ID, myDimension.ID);40
// Create the key column.41
CubeAttribute customerKey = myCube.Dimensions["Customer"].Attributes["Customer"];42
ScalarMiningStructureColumn keyStructureColumn = Utilities.CreateMiningModelColumn(customerKey, true);43
myMiningStructure.Columns.Add(keyStructureColumn);44
//Member Card attribute45
CubeAttribute memberCard = myCube.Dimensions["Customer"].Attributes["Member Card"];46
ScalarMiningStructureColumn memberCardStructureColumn = Utilities.CreateMiningModelColumn(memberCard, false);47
myMiningStructure.Columns.Add(memberCardStructureColumn);48
//Total Children attribute49
CubeAttribute totalChildren = myCube.Dimensions["Customer"].Attributes["Total Children"];50
ScalarMiningStructureColumn totalChildrenStructureColumn = Utilities.CreateMiningModelColumn(totalChildren, false);51
myMiningStructure.Columns.Add(totalChildrenStructureColumn);52
//Store Sales measure53
Measure storeSales = myCube.MeasureGroups[0].Measures["Store Sales"];54
ScalarMiningStructureColumn storeSalesStructureColumn = Utilities.CreateMiningModelColumn(storeSales);55
myMiningStructure.Columns.Add(storeSalesStructureColumn);56
//Create a mining model from the mining structure. By default, all the57
//structure columns are used. Nonkey columns are with usage input58
MiningModel myMiningModel = myMiningStructure.CreateMiningModel(true, "CustomerSegment");59
//Set the algorithm to be clustering.60
myMiningModel.Algorithm = MiningModelAlgorithms.MicrosoftClustering;61
//Process structure and model62
try63
{64
myMiningStructure.Update(UpdateOptions.ExpandFull);65
myMiningStructure.Process(ProcessType.ProcessFull);66
}67
catch (Microsoft.AnalysisServices.OperationException e)68
{69
string err = e.Message;70
}71
}72

73
public static TableMiningStructureColumn CreateMiningStructureColumn(MeasureGroup measureGroup)74
{75
TableMiningStructureColumn column = new TableMiningStructureColumn();76
column.Name = measureGroup.Name;77
column.SourceMeasureGroup = new MeasureGroupBinding(".", ((Cube)measureGroup.Parent).ID, measureGroup.ID);78
return column;79
}80

81
private void CreateMarketBasketModel()82
{83
84
cubeAttribute basketAttribute;85
CubeAttribute itemAttribute;86
Server myServer = new Server();87
myServer.Connect("DataSource=localhost;Catalog=FoodMart");88
Database myDatabase = myServer.Databases["FoodMart"];89
Cube myCube = myDatabase.Cubes["FoodMart 2000"];90
CubeDimension myDimension = myCube.Dimensions["Customer"];91
MiningStructure myMiningStructure = myDatabase.MiningStructures.Add("MarketBasket", "MarketBasket");92
myMiningStructure.Source = new CubeDimensionBinding(".", myCube.ID, myDimension.ID);93
basketAttribute = myCube.Dimensions["Customer"].Attributes["Customer"];94
itemAttribute = myCube.Dimensions["Product"].Attributes["Product"];95
//basket structure column96
ScalarMiningStructureColumn basket = Utilities.CreateMiningModelColumn(basketAttribute, true);97
basket.Name = "Basket";98
myMiningStructure.Columns.Add(basket);99
//item structure column - nested table100
ScalarMiningStructureColumn item = Utilities.CreateMiningModelColumn(itemAttribute, true);101
item.Name = "Item";102
MeasureGroup measureGroup = myCube.MeasureGroups[0];103
TableMiningStructureColumn purchases = Utilities.CreateMiningModelColumn(measureGroup);104
purchases.Name = "Purchases";105
purchases.Columns.Add(item);106
myMiningStructure.Columns.Add(purchases);107
MiningModel myMiningModel = myMiningStructure.CreateMiningModel();108
myMiningModel.Name = "MarketBasket";109
myMiningModel.Columns["Purchases"].Usage = MiningModelColumnUsages.PredictOnly;110
myMiningModel.Algorithm = MiningModelAlgorithms.MicrosoftAssociationRules;111
}


浙公网安备 33010602011771号