/*
         * Init checkbox fields to exclude the key attribute
         */
        void InitAttributeAndMeasures(string sQuery, GridView objGrid)
        {
            MiningManager objMiningManager = new MiningManager();

            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List <string> sAtributes = new List <string>();

            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value    = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sAtributes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            objGrid.DataSource = sAtributes;
            objGrid.DataBind();
        }
        /*
         * Init all cubes
         */
        private void InitCubes()
        {
            MiningManager objMiningManager = new MiningManager();

            string sQuery = "SELECT CUBE_NAME FROM $system.mdschema_cubes WHERE left(CUBE_NAME, 1) <> '$' AND len(BASE_CUBE_NAME) = 0";

            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List <string> sCubes = new List <string>();

            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value    = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sCubes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            DropDownListCubes.DataSource = sCubes;
            DropDownListCubes.DataBind();
        }
        /*
         * Init all dimension names into a listbox
         */
        private void InitDimensionNames()
        {
            MiningManager objMiningManager = new MiningManager();

            string sQuery = "SELECT DIMENSION_NAME FROM $system.mdschema_dimensions WHERE CUBE_NAME = '" +
                            DropDownListCubes.SelectedItem.Text + "'";

            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List <string> sCubes = new List <string>();

            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value    = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sCubes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            DropDownListDimensions.DataSource = sCubes;
            DropDownListDimensions.DataBind();
        }
        /*
         * Init all attributes
         */
        private void InitAttributes()
        {
            // clear current query
            DropDownListKey.DataSource = null;
            DropDownListKey.DataBind();

            MiningManager objMiningManager = new MiningManager();

            string sQuery = "SELECT HIERARCHY_NAME FROM $system.mdschema_hierarchies WHERE CUBE_NAME = '" +
                            DropDownListCubes.SelectedItem.Text + "' AND [DIMENSION_UNIQUE_NAME] = '[" +
                            DropDownListDimensions.SelectedItem.Text + "]'";

            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List <string> sCubes = new List <string>();

            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value    = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sCubes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            DropDownListKey.DataSource = sCubes;
            DropDownListKey.DataBind();

            // init input columns
            sQuery = "SELECT HIERARCHY_NAME FROM $system.mdschema_hierarchies WHERE CUBE_NAME = '" +
                     DropDownListCubes.SelectedItem.Text + "' AND [DIMENSION_UNIQUE_NAME] = '[" +
                     DropDownListDimensions.SelectedItem.Text + "]' AND HIERARCHY_NAME <> '" + DropDownListKey.SelectedItem.Text + "'";
            InitAttributeAndMeasures(sQuery, GridViewAttributes);

            // init measures
            sQuery = "SELECT MEASURE_NAME FROM $system.mdschema_measures WHERE CUBE_NAME = '" +
                     DropDownListCubes.SelectedItem.Text + "'";
            InitAttributeAndMeasures(sQuery, GridViewMeasures);
        }
        /*
         * Build mining structure
         */
        protected void ButtonStructure_Click(object sender, EventArgs e)
        {
            // Create mining structure based on column and table selection
            List<string> lsInputItems = new List<string>();
            List<string> lsPredictItems = new List<string>();
            List<string> lsInputMeasures = new List<string>();
            List<string> lsPredictMeasures = new List<string>();
            List<bool> lbPredictItems = new List<bool>();

            //Dictionary<string /* column name */, bool /* only predict = true; predict = false*/> objPredictItems = new Dictionary<string, bool>();

            // input items
            foreach (GridViewRow row in GridViewAttributes.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxAtrInput");

                if (cb != null && cb.Checked)
                    lsInputItems.Add(row.Cells[2].Text);
            }

            foreach (GridViewRow row in GridViewMeasures.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxMeasureInput");

                if (cb != null && cb.Checked)
                    lsInputMeasures.Add(row.Cells[2].Text);
            }

            // predict items
            foreach (GridViewRow row in GridViewAttributes.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxAtrPredict");

                if (cb != null && cb.Checked)
                {
                    // check input column
                    bool bIsPredictOnly = true;

                    // iterate input list and if the item is found in the list then set bool to false
                    for (int i = 0; i < lsInputItems.Count; i++)
                    {
                        if (lsInputItems[i] == row.Cells[2].Text)
                        {
                            bIsPredictOnly = false;
                            break;
                        }
                    }

                    lsPredictItems.Add(row.Cells[2].Text);
                    lbPredictItems.Add(bIsPredictOnly);
                }
            }

            foreach (GridViewRow row in GridViewMeasures.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxMeasurePredict");

                if (cb != null && cb.Checked)
                    lsPredictMeasures.Add(row.Cells[2].Text);
            }

            // check clustering parameter
            try
            {
                int x = Convert.ToInt32(TextBoxCount.Text);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LabelStatus.Text = "Please make sure that the parameter is a number!";
            }

            string sStructName = TextBoxName.Text;
            if (sStructName == "")
                sStructName = "MyMiningStructure";

            string objAlgorithm = null;

            // parameters
            int parOne = 0;
            int parTwo = 0;

            // create mining structure
            if (DropDownListAlgorithm.SelectedIndex == 0)
            {
                objAlgorithm = MiningModelAlgorithms.MicrosoftClustering;
                parOne = DropDownListMethod.SelectedIndex + 1;
                parTwo = Convert.ToInt32(TextBoxCount.Text);
            }
            else if (DropDownListAlgorithm.SelectedIndex == 1)
            {
                objAlgorithm = MiningModelAlgorithms.MicrosoftDecisionTrees;
                parOne = DropDownListScore.SelectedIndex + 1;
                parTwo = DropDownListSplit.SelectedIndex + 1;
            }
            else if (DropDownListAlgorithm.SelectedIndex == 2)
                objAlgorithm = MiningModelAlgorithms.MicrosoftNaiveBayes;
            else if (DropDownListAlgorithm.SelectedIndex == 3)
                objAlgorithm = MiningModelAlgorithms.MicrosoftTimeSeries;

            // warn at missing input column
            if (lsInputItems.Count == 0)
            {
                LabelStatus.Text = "Please select at least one input column!";
                return;
            }

            // warn at prediction column missing for naive bayes and decision trees
            if (objAlgorithm == MiningModelAlgorithms.MicrosoftNaiveBayes || objAlgorithm == MiningModelAlgorithms.MicrosoftDecisionTrees)
            {
                if (lsInputItems.Count == 0 || lsPredictItems.Count == 0)
                {
                    LabelStatus.Text = "Please select at least one input column and at least one prediction column!";
                    return;
                }
            }

            MiningManager objMiningManager = new MiningManager();

            // Create mining query from the existing results
            string sResult = objMiningManager.CreateCubeMiningStructure(sStructName, objAlgorithm, DropDownListCubes.SelectedIndex, DropDownListDimensions.SelectedItem.Text,
                DropDownListKey.SelectedItem.Text, lsInputItems, lsPredictItems, lsInputMeasures, lsPredictMeasures, lbPredictItems, parOne, parTwo);

            if (sResult == "Success")
            {
                LabelStatus.Text = "Rezultatul procesului: Success!";
                LoadExistingStructures();
            }
            else
                LabelStatus.Text = "Rezultatul procesului: Eroare - " + sResult;
        }
        /*
         * Init all dimension names into a listbox
         */
        private void InitDimensionNames()
        {
            MiningManager objMiningManager = new MiningManager();

            string sQuery = "SELECT DIMENSION_NAME FROM $system.mdschema_dimensions WHERE CUBE_NAME = '" +
                DropDownListCubes.SelectedItem.Text + "'";
            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List<string> sCubes = new List<string>();
            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sCubes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            DropDownListDimensions.DataSource = sCubes;
            DropDownListDimensions.DataBind();
        }
        /*
         * Init all cubes
         */
        private void InitCubes()
        {
            MiningManager objMiningManager = new MiningManager();

            string sQuery = "SELECT CUBE_NAME FROM $system.mdschema_cubes WHERE left(CUBE_NAME, 1) <> '$' AND len(BASE_CUBE_NAME) = 0";
            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List<string> sCubes = new List<string>();
            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sCubes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            DropDownListCubes.DataSource = sCubes;
            DropDownListCubes.DataBind();
        }
        /*
         * Init all attributes
         */
        private void InitAttributes()
        {
            // clear current query
            DropDownListKey.DataSource = null;
            DropDownListKey.DataBind();

            MiningManager objMiningManager = new MiningManager();

            string sQuery = "SELECT HIERARCHY_NAME FROM $system.mdschema_hierarchies WHERE CUBE_NAME = '" +
                DropDownListCubes.SelectedItem.Text + "' AND [DIMENSION_UNIQUE_NAME] = '[" +
                DropDownListDimensions.SelectedItem.Text + "]'";
            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List<string> sCubes = new List<string>();

            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sCubes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            DropDownListKey.DataSource = sCubes;
            DropDownListKey.DataBind();

            // init input columns
            sQuery = "SELECT HIERARCHY_NAME FROM $system.mdschema_hierarchies WHERE CUBE_NAME = '" +
                DropDownListCubes.SelectedItem.Text + "' AND [DIMENSION_UNIQUE_NAME] = '[" +
                DropDownListDimensions.SelectedItem.Text + "]' AND HIERARCHY_NAME <> '" + DropDownListKey.SelectedItem.Text + "'";
            InitAttributeAndMeasures(sQuery, GridViewAttributes);

            // init measures
            sQuery = "SELECT MEASURE_NAME FROM $system.mdschema_measures WHERE CUBE_NAME = '" +
                DropDownListCubes.SelectedItem.Text + "'";
            InitAttributeAndMeasures(sQuery, GridViewMeasures);
        }
        /*
         * Init checkbox fields to exclude the key attribute
         */
        void InitAttributeAndMeasures(string sQuery, GridView objGrid)
        {
            MiningManager objMiningManager = new MiningManager();

            // display results
            Microsoft.AnalysisServices.AdomdClient.AdomdDataReader objMiningData = objMiningManager.GetQueryResult(sQuery);

            List<string> sAtributes = new List<string>();
            try
            {
                while (objMiningData.Read())
                {
                    for (int i = 0; i < objMiningData.FieldCount; i++)
                    {
                        object value = objMiningData.GetValue(i);
                        string strValue = (value == null) ? string.Empty : value.ToString();
                        sAtributes.Add(strValue);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }

            objGrid.DataSource = sAtributes;
            objGrid.DataBind();
        }
Example #10
0
        /*
         * Build mining structure
         */
        protected void ButtonStructure_Click(object sender, EventArgs e)
        {
            // Create mining structure based on column and table selection
            List <string> lsInputItems      = new List <string>();
            List <string> lsPredictItems    = new List <string>();
            List <string> lsInputMeasures   = new List <string>();
            List <string> lsPredictMeasures = new List <string>();
            List <bool>   lbPredictItems    = new List <bool>();

            //Dictionary<string /* column name */, bool /* only predict = true; predict = false*/> objPredictItems = new Dictionary<string, bool>();

            // input items
            foreach (GridViewRow row in GridViewAttributes.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxAtrInput");

                if (cb != null && cb.Checked)
                {
                    lsInputItems.Add(row.Cells[2].Text);
                }
            }

            foreach (GridViewRow row in GridViewMeasures.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxMeasureInput");

                if (cb != null && cb.Checked)
                {
                    lsInputMeasures.Add(row.Cells[2].Text);
                }
            }

            // predict items
            foreach (GridViewRow row in GridViewAttributes.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxAtrPredict");

                if (cb != null && cb.Checked)
                {
                    // check input column
                    bool bIsPredictOnly = true;

                    // iterate input list and if the item is found in the list then set bool to false
                    for (int i = 0; i < lsInputItems.Count; i++)
                    {
                        if (lsInputItems[i] == row.Cells[2].Text)
                        {
                            bIsPredictOnly = false;
                            break;
                        }
                    }

                    lsPredictItems.Add(row.Cells[2].Text);
                    lbPredictItems.Add(bIsPredictOnly);
                }
            }


            foreach (GridViewRow row in GridViewMeasures.Rows)
            {
                CheckBox cb = (CheckBox)row.FindControl("CheckBoxMeasurePredict");

                if (cb != null && cb.Checked)
                {
                    lsPredictMeasures.Add(row.Cells[2].Text);
                }
            }

            // check clustering parameter
            try
            {
                int x = Convert.ToInt32(TextBoxCount.Text);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LabelStatus.Text = "Please make sure that the parameter is a number!";
            }

            string sStructName = TextBoxName.Text;

            if (sStructName == "")
            {
                sStructName = "MyMiningStructure";
            }

            string objAlgorithm = null;

            // parameters
            int parOne = 0;
            int parTwo = 0;

            // create mining structure
            if (DropDownListAlgorithm.SelectedIndex == 0)
            {
                objAlgorithm = MiningModelAlgorithms.MicrosoftClustering;
                parOne       = DropDownListMethod.SelectedIndex + 1;
                parTwo       = Convert.ToInt32(TextBoxCount.Text);
            }
            else if (DropDownListAlgorithm.SelectedIndex == 1)
            {
                objAlgorithm = MiningModelAlgorithms.MicrosoftDecisionTrees;
                parOne       = DropDownListScore.SelectedIndex + 1;
                parTwo       = DropDownListSplit.SelectedIndex + 1;
            }
            else if (DropDownListAlgorithm.SelectedIndex == 2)
            {
                objAlgorithm = MiningModelAlgorithms.MicrosoftNaiveBayes;
            }
            else if (DropDownListAlgorithm.SelectedIndex == 3)
            {
                objAlgorithm = MiningModelAlgorithms.MicrosoftTimeSeries;
            }


            // warn at missing input column
            if (lsInputItems.Count == 0)
            {
                LabelStatus.Text = "Please select at least one input column!";
                return;
            }

            // warn at prediction column missing for naive bayes and decision trees
            if (objAlgorithm == MiningModelAlgorithms.MicrosoftNaiveBayes || objAlgorithm == MiningModelAlgorithms.MicrosoftDecisionTrees)
            {
                if (lsInputItems.Count == 0 || lsPredictItems.Count == 0)
                {
                    LabelStatus.Text = "Please select at least one input column and at least one prediction column!";
                    return;
                }
            }

            MiningManager objMiningManager = new MiningManager();

            // Create mining query from the existing results
            string sResult = objMiningManager.CreateCubeMiningStructure(sStructName, objAlgorithm, DropDownListCubes.SelectedIndex, DropDownListDimensions.SelectedItem.Text,
                                                                        DropDownListKey.SelectedItem.Text, lsInputItems, lsPredictItems, lsInputMeasures, lsPredictMeasures, lbPredictItems, parOne, parTwo);

            if (sResult == "Success")
            {
                LabelStatus.Text = "Rezultatul procesului: Success!";
                LoadExistingStructures();
            }
            else
            {
                LabelStatus.Text = "Rezultatul procesului: Eroare - " + sResult;
            }
        }