Пример #1
0
        /// <summary>
        /// Dump internal model structure
        /// </summary>
        static void SimpleDump()
        {
            Dax.Model.Model m  = new Dax.Model.Model();
            Dax.Model.Table tA = new Dax.Model.Table(m)
            {
                TableName = new Dax.Model.DaxName("A")
            };
            Dax.Model.Table tB = new Dax.Model.Table(m)
            {
                TableName = new Dax.Model.DaxName("B")
            };
            Dax.Model.Column ca1 = new Dax.Model.Column(tA)
            {
                ColumnName = new Dax.Model.DaxName("A_1")
            };
            Dax.Model.Column ca2 = new Dax.Model.Column(tA)
            {
                ColumnName = new Dax.Model.DaxName("A_2")
            };
            tA.Columns.Add(ca1);
            tA.Columns.Add(ca2);
            m.Tables.Add(tA);

            // Test serialization on JSON file
            var json = JsonConvert.SerializeObject(m, Formatting.Indented, new JsonSerializerSettings {
                PreserveReferencesHandling = PreserveReferencesHandling.All
            });

            System.IO.File.WriteAllText(@"C:\temp\model.json", json);
        }
Пример #2
0
        /// <summary>
        // Search a DAX Column or create one if it does not exists
        // It also creates the table if it does not exists
        /// </summary>
        /// <param name="tableName">Name of the table to search</param>
        /// <param name="columnId">Id name (in DMV 1100) of the column to search</param>
        /// <returns></returns>
        private Column GetDaxColumnDmv1100Id(string tableName, string columnDmv1100Id)
        {
            var daxTable  = GetDaxTable(tableName);
            var daxColumn = daxTable.Columns.Where(t => t.Dmv1100ColumnId.Equals(columnDmv1100Id)).FirstOrDefault();

            if (daxColumn == null)
            {
                daxColumn = new Dax.Model.Column(daxTable);
                daxColumn.SetDmv1100ColumnId(columnDmv1100Id);

                daxTable.Columns.Add(daxColumn);
            }

            return(daxColumn);
        }
Пример #3
0
 public void AddUserHierarchy(Table daxTable, Tom.Hierarchy hierarchy)
 {
     Dax.Model.UserHierarchy daxUserHierarchy = new Dax.Model.UserHierarchy(daxTable)
     {
         HierarchyName = new Dax.Model.DaxName(hierarchy.Name),
         IsHidden      = hierarchy.IsHidden,
     };
     // Create the hierarchy from the top to the bottom level
     foreach (var level in hierarchy.Levels.OrderBy(t => t.Ordinal))
     {
         Dax.Model.Column levelColumn = daxTable.Columns.Find(t => t.ColumnName.Name == level.Column.Name);
         daxUserHierarchy.Levels.Add(levelColumn);
     }
     daxTable.UserHierarchies.Add(daxUserHierarchy);
 }
Пример #4
0
        /// <summary>
        // Search a DAX Column or create one if it does not exists
        // It also creates the table if it does not exists
        /// </summary>
        /// <param name="tableName">Name of the table to search</param>
        /// <param name="columnName">Name of the column to search</param>
        /// <returns></returns>
        private Column GetDaxColumn(string tableName, string columnName)
        {
            var daxTable  = GetDaxTable(tableName);
            var daxColumn = daxTable.Columns.Where(t => t.ColumnName.Name.Equals(columnName)).FirstOrDefault();

            if (daxColumn == null)
            {
                daxColumn = new Dax.Model.Column(daxTable)
                {
                    ColumnName  = new Dax.Model.DaxName(columnName),
                    IsRowNumber = (columnName == "RowNumber")  // TODO Not a safe technique, but it should work most of the times for DMV 1100
                };

                daxTable.Columns.Add(daxColumn);
            }

            return(daxColumn);
        }
Пример #5
0
 private void AddRelationship(Tom.SingleColumnRelationship relationship)
 {
     Dax.Model.Table        fromTable       = DaxModel.Tables.SingleOrDefault(t => t.TableName.Name == relationship.FromTable.Name);
     Dax.Model.Column       fromColumn      = fromTable.Columns.SingleOrDefault(t => t.ColumnName.Name == relationship.FromColumn.Name);
     Dax.Model.Table        toTable         = DaxModel.Tables.SingleOrDefault(t => t.TableName.Name == relationship.ToTable.Name);
     Dax.Model.Column       toColumn        = toTable.Columns.SingleOrDefault(t => t.ColumnName.Name == relationship.ToColumn.Name);
     Dax.Model.Relationship daxRelationship = new Dax.Model.Relationship(fromColumn, toColumn)
     {
         FromCardinalityType        = relationship.FromCardinality.ToString(),
         ToCardinalityType          = relationship.ToCardinality.ToString(),
         RelyOnReferentialIntegrity = relationship.RelyOnReferentialIntegrity,
         JoinOnDateBehavior         = relationship.JoinOnDateBehavior.ToString(),
         CrossFilteringBehavior     = relationship.CrossFilteringBehavior.ToString(),
         Type     = relationship.Type.ToString(),
         IsActive = relationship.IsActive,
         Name     = relationship.Name,
         SecurityFilteringBehavior = relationship.SecurityFilteringBehavior.ToString()
     };
     DaxModel.Relationships.Add(daxRelationship);
 }
Пример #6
0
 internal Column(Dax.Model.Column column)
 {
     this._Column = column;
 }
Пример #7
0
 internal static string GetFullColumnName(Dax.Model.Column column)
 {
     return(GetFullColumnName(column.Table.TableName.Name, column.ColumnName.Name));
 }
Пример #8
0
 internal VpaColumn(Dax.Model.Column column)
 {
     this.Column = column;
 }
Пример #9
0
 private void AddColumn(Table daxTable, Tom.Column column)
 {
     Dax.Model.Column daxColumn = CreateColumn(daxTable, column);
     daxTable.Columns.Add(daxColumn);
 }