生活就好像一盒巧克力

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1public 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        }
posted on 2007-04-11 13:52  yiriqing  阅读(241)  评论(0)    收藏  举报