Exemplo n.º 1
0
        public void FindMemberProperty()
        {
            var connection = TestHelper.CreateConnectionToSsas();

            connection.Open();

            CubeDef cube = TestHelper.GetCube(connection);

            KpiCollection kpis = cube.Kpis;

            MeasureCollection meas = cube.Measures;

            DimensionCollection dims = cube.Dimensions;

            HierarchyCollection hiers = dims[0].Hierarchies;

            LevelCollection levels = hiers[0].Levels;

            MemberCollection members = levels[1].GetMembers();

            MemberProperty prop = members[0].MemberProperties.Find("PARENT_UNIQUE_NAME");

            Assert.IsTrue(!string.IsNullOrEmpty(prop.Value.ToString()));

            connection.Close();
        }
Exemplo n.º 2
0
        private void Dimension_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ASDatabase.SelectedIndex > -1 && Cube.SelectedIndex > -1 && Dimension.SelectedIndex > -1)
            {
                using (Server S = new Server())
                {
                    S.Connect(connectionString);
                    if (rbDimension.Checked == true)
                    {
                        CubeDimension CD = S.Databases.GetByName(ASDatabase.SelectedItem.ToString()).Cubes.GetByName(Cube.SelectedItem.ToString()).Dimensions.GetByName(Dimension.SelectedItem.ToString());
                        Dimension     D  = CD.Dimension;


                        DataTable AT = GetAttributesByDimension(D);
                        //dataGridView1.Columns.Remove("Attributes List");
                        dataGridView1.DataSource = AT;
                        //dataGridView1.DataBind();
                    }

                    if (rbMeasureGroups.Checked == true)
                    {
                        MeasureGroup      MG = S.Databases.GetByName(ASDatabase.SelectedItem.ToString()).Cubes.GetByName(Cube.SelectedItem.ToString()).MeasureGroups.GetByName(Dimension.SelectedItem.ToString());
                        MeasureCollection MC = MG.Measures;

                        DataTable MA = getMeasureAttributes(MC);
                        dataGridView1.DataSource = MA;

                        DataTable PT = getMeasureGroupPartitions(MG);
                        PartitionsGrid.DataSource = PT;
                    }
                }
            }
        }
Exemplo n.º 3
0
        public async Task <MeasureCollection> GetMeasuresAsinc()
        {
            if (_Measures == null)
            {
                _Measures = new MeasureCollection();
            }

            if (_Measures.Count == 0)
            {
                var command = new XmlaCommand("MDSCHEMA_MEASURES", Connection);
                command.CommandRestrictions.CubeName = CubeName;
                var response = await command.ExecuteAsync();

                try
                {
                    var tasks   = response.GetXRows().Select(xrow => xrow.ToXmlaObjectAsync <Measure>(this));
                    var results = await Task.WhenAll(tasks);

                    _Measures.AddRange(results);
                }
                catch
                {
                    throw;
                }
            }

            return(_Measures);
        }
Exemplo n.º 4
0
        public new virtual MeasureCollection List(IEnumerable<IFilter> filters)
        {
            var measures = new MeasureCollection();

            var rows = Discover(filters);
            foreach (var row in rows)
                measures.Add(row.UniqueName, row.Caption, row.DisplayFolder);

            return measures;
        }
Exemplo n.º 5
0
        public new virtual MeasureCollection List(IEnumerable <IFilter> filters)
        {
            var measures = new MeasureCollection();

            var rows = Discover(filters);

            foreach (var row in rows)
            {
                measures.Add(row.UniqueName, row.Caption, row.DisplayFolder);
            }

            return(measures);
        }
Exemplo n.º 6
0
        //private void comboBoxMeasureGroups_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    if (Dimension.SelectedIndex > -1)
        //    {
        //        using (Server S = new Server())
        //        {
        //            string connectionString;
        //            connectionString = "DataSource=" + ServerName.Text;
        //            S.Connect(connectionString);


        //            MeasureGroup MG = S.Databases.GetByName(ASDatabase.SelectedItem.ToString()).Cubes.GetByName(Cube.SelectedItem.ToString()).MeasureGroups.GetByName(Dimension.SelectedItem.ToString());
        //            MeasureCollection MC = MG.Measures;

        //            DataTable MA = getMeasureAttributes(MC);
        //            dataGridView1.DataSource = MA;
        //        }
        //    }
        //}

        public DataTable getMeasureAttributes(MeasureCollection MC)
        {
            DataTable MA = new DataTable();

            MA.Columns.Add("Measure Name");
            MA.Columns.Add("Source Table");
            MA.Columns.Add("Source Column");
            MA.Columns.Add("Aggregate User");

            foreach (Measure M in MC)
            {
                DataSourceView DS = M.ParentCube.DataSourceView;
                DataSet        d  = new DataSet();
                d = DS.Schema;

                DataItem  DI = M.Source;
                DataTable DT;
                string    MeasureName = M.Name;
                string    Aggregate   = M.AggregateFunction.ToString();
                string    MeasureSourceColumn;

                if (M.Visible == true)
                {
                    if (DI.Source.GetType().ToString() == "Microsoft.AnalysisServices.ColumnBinding")
                    {
                        ColumnBinding CB = (ColumnBinding)DI.Source;
                        DT = d.Tables[CB.TableID];
                        MeasureSourceColumn = CB.ColumnID;
                    }
                    else
                    {
                        RowBinding RB = (RowBinding)DI.Source;
                        DT = d.Tables[RB.TableID];
                        MeasureSourceColumn = "Rows";
                    }

                    string MeasureSourceTable = DT.ExtendedProperties["DbTableName"].ToString();

                    //MessageBox.Show(MeasureSourceTable);
                    //MessageBox.Show(MeasureSourceColumn);
                    //MessageBox.Show(Aggregate);

                    MA.Rows.Add(MeasureName, MeasureSourceTable, MeasureSourceColumn, Aggregate);
                }
            }

            return(MA);
        }
Exemplo n.º 7
0
        public static Table DeserializeTable(JObject json, Model model)
        {
            var tom = TOM.JsonSerializer.DeserializeObject <TOM.Table>(json.ToString());

            tom.Name = model.Tables.GetNewName(tom.Name);

            // Make sure all measures in the table still have model-wide unique names:
            foreach (var m in tom.Measures.ToList())
            {
                m.Name = MeasureCollection.GetNewName(model, m.Name);
            }

            var table = Table.CreateFromMetadata(model, tom);

            return(table);
        }
Exemplo n.º 8
0
        private void LoadFields()
        {
            String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["OLAPConnection"].ConnectionString;

            using (AdomdConnection conn = new AdomdConnection(connectionString))
            {
                conn.Open();
                CubeDef cubeDef = null;
                foreach (CubeDef cube in conn.Cubes)
                {
                    if (cube.Type == CubeType.Cube)
                    {
                        cubeDef = cube;
                        break;
                    }
                }
                if (cubeDef == null)
                {
                    m_DimFieldCollection.Clear();
                    m_MeasureFieldCollection.Clear();
                    return;
                }
                DimensionCollection dimCollection = cubeDef.Dimensions;
                foreach (Dimension dim in dimCollection)
                {
                    if (dim.DimensionType == DimensionTypeEnum.Measure)
                    {
                        continue;
                    }
                    HierarchyCollection hierarchyColl = dim.Hierarchies;
                    foreach (Hierarchy hier in hierarchyColl)
                    {
                        m_DimFieldCollection.Add(new Olap.DimensionFieldInfo(hier));
                    }
                }
                MeasureCollection measureCollection = cubeDef.Measures;
                foreach (Measure m in measureCollection)
                {
                    m_MeasureFieldCollection.Add(new Olap.MeasureFieldInfo(m));
                }
            }
        }
Exemplo n.º 9
0
        public string GetReportSchemaXml(string server, string database, string cube, ref string openNodesXml)
        {
            AdomdConnection conn = null;

            try
            {
                // read openNodesXml
                StringCollection openNodes = new StringCollection();
                if (openNodesXml != null && openNodesXml != "")
                {
                    XmlDocument openNodesDoc = new XmlDocument();
                    openNodesDoc.LoadXml(openNodesXml);
                    foreach (XmlElement el in openNodesDoc.GetElementsByTagName("ON"))
                    {
                        string s = el.GetAttribute("UN");
                        if (s != null && s != "" && !openNodes.Contains(s))
                        {
                            openNodes.Add(s);
                        }
                    }
                }

                // create connection
                conn = this.GetConnection(server, database);

                // create xml document
                XmlDocument doc    = new XmlDocument();
                XmlElement  rootEl = doc.CreateElement("SCHEMA");
                doc.AppendChild(rootEl);

                // get cube
                CubeDef cubeDef = conn.Cubes[cube];

                // dimensions
                foreach (Dimension dim in cubeDef.Dimensions)
                {
                    XmlElement dimEl = doc.CreateElement("D");
                    dimEl.SetAttribute("UN", dim.UniqueName);
                    dimEl.SetAttribute("N", dim.Name);
                    rootEl.AppendChild(dimEl);

                    // isopen attribute
                    if (openNodes.Contains(dim.UniqueName))
                    {
                        dimEl.SetAttribute("O", "1");
                    }

                    // hierarchies
                    foreach (Hierarchy hier in dim.Hierarchies)
                    {
                        XmlElement hierEl = doc.CreateElement("H");
                        hierEl.SetAttribute("UN", hier.UniqueName);
                        hierEl.SetAttribute("N", hier.Name);
                        dimEl.AppendChild(hierEl);

                        // levels
                        foreach (Level lev in hier.Levels)
                        {
                            XmlElement levEl = doc.CreateElement("L");
                            levEl.SetAttribute("UN", lev.UniqueName);
                            levEl.SetAttribute("N", lev.Name);
                            levEl.SetAttribute("LD", lev.LevelNumber.ToString());
                            hierEl.AppendChild(levEl);

                            // default member under highest level
                            if (lev.LevelNumber == 0)
                            {
                                // get default member by explicit property or as simply first member in level
                                Member defMem = null;
                                if (hier.DefaultMember != null && hier.DefaultMember != "")
                                {
                                    defMem = (Member)this.GetSchemaObject(cubeDef, SchemaObjectType.ObjectTypeMember, hier.DefaultMember, false);
                                }

                                if (defMem == null && lev.MemberCount > 0)
                                {
                                    defMem = lev.GetMembers(0, 1)[0];
                                }

                                if (defMem != null)
                                {
                                    XmlElement defMemEl = doc.CreateElement("DM");
                                    defMemEl.SetAttribute("UN", defMem.UniqueName);
                                    defMemEl.SetAttribute("N", defMem.Name);
                                    defMemEl.SetAttribute("CC", defMem.ChildCount.ToString());
                                    defMemEl.SetAttribute("LD", defMem.LevelDepth.ToString());
                                    levEl.AppendChild(defMemEl);
                                }
                            }
                        }


                        // hier isopen attibute
                        if (openNodes.Contains(hier.UniqueName))
                        {
                            hierEl.SetAttribute("O", "1");
                        }

                        // measures handled differently, always included regardless of isopen attribute
                        if (dim.DimensionType == DimensionTypeEnum.Measure)
                        {
                            MeasureCollection mems = cubeDef.Measures;
                            foreach (Measure m in mems)
                            {
                                AppendMeasure(hierEl, m, openNodes);
                            }
                        }
                        else // other
                        {
                            // only if hier is open
                            if (openNodes.Contains(hier.UniqueName))
                            {
                                // members recursive
                                MemberCollection mems = hier.Levels[0].GetMembers();
                                foreach (Member m in mems)
                                {
                                    AppendMemberHierarchy(hierEl, m, openNodes);
                                }
                            }
                        }
                    }
                }

                // return
                return(doc.OuterXml);
            }
            finally
            {
                // dispose resources
                this.ReturnConnection();
            }
        }
Exemplo n.º 10
0
 public MeasureGroup(string name)
 {
     Name = name;
     Measures = new MeasureCollection();
     LinkedDimensions = new DimensionCollection();
 }
Exemplo n.º 11
0
        public override void Load_InitData()
        {
            if (Mode != ControlMode.New)
            {
                return;
            }
            ASPxComboBox cbbKeyField;

            try
            {
                cbbKeyField = (ASPxComboBox)this.FindControl("cbbKeyField");
                if (cbbKeyField == null)
                {
                    return;
                }
            }
#if DEBUG
            catch (Exception ex)
            {
                throw ex;
            }
#else
            catch ()
            {
                return;
            }
#endif
            // Load fields
            String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["OLAPConnection"].ConnectionString;
            using (AdomdConnection conn = new AdomdConnection(connectionString))
            {
                conn.Open();
                // Find a cube
                CubeDef        cubeDef        = null;
                CubeCollection cubeCollection = conn.Cubes;
                int            numOfCube      = cubeCollection.Count - 1;
                for (; numOfCube > 0; numOfCube--)
                {
                    cubeDef = cubeCollection[numOfCube];
                    if (cubeDef.Type == CubeType.Cube)
                    {
                        break;
                    }
                }
                if (this is wcNormalFilter ||
                    this is wcTimeFilter)
                {
                    Olap.DimensionFieldInfoCollection fields = new Olap.DimensionFieldInfoCollection();
                    // Load dimension field
                    DimensionCollection dimCollection = cubeDef.Dimensions;
                    int numOfDim = dimCollection.Count;
                    for (int dimIndex = 0; dimIndex < numOfDim; dimIndex++)
                    {
                        Dimension dim = dimCollection[dimIndex];
                        if (this is wcNormalFilter)
                        {
                            if (dim.UniqueName == "[ARDimTime]" ||
                                dim.DimensionType == DimensionTypeEnum.Measure)
                            {
                                continue;
                            }
                        }
                        else if (this is wcNumFilter)
                        {
                            if (dim.DimensionType != DimensionTypeEnum.Measure)
                            {
                                continue;
                            }
                        }
                        else                         // Date
                        {
                            if (dim.UniqueName != "[ARDimTime]")
                            {
                                continue;
                            }
                        }

                        foreach (Hierarchy hier in dim.Hierarchies)
                        {
                            fields.Add(new Olap.DimensionFieldInfo(hier));
                        }
                    }
                    Helpers.SetDataSource(cbbKeyField, fields, "UniqueName", "Caption");
                }
                else                 // wcNumFilter
                {
                    Olap.MeasureFieldInfoCollection fields = new Olap.MeasureFieldInfoCollection();
                    MeasureCollection measureCollection    = cubeDef.Measures;
                    int numOfMeasure = measureCollection.Count;
                    for (int mIndex = 0; mIndex < numOfMeasure; mIndex++)
                    {
                        Measure m = measureCollection[mIndex];
                        fields.Add(new Olap.MeasureFieldInfo(m));
                    }
                    Helpers.SetDataSource(cbbKeyField, fields, "UniqueName", "Caption");
                }
            }
        }
Exemplo n.º 12
0
 public MeasureGroup(string name)
 {
     Name             = name;
     Measures         = new MeasureCollection();
     LinkedDimensions = new DimensionCollection();
 }