/// <summary> /// Dump internal model structure /// </summary> static void SimpleDump() { Dax.Metadata.Model m = new Dax.Metadata.Model(); Dax.Metadata.Table tA = new Dax.Metadata.Table(m) { TableName = new Dax.Metadata.DaxName("A") }; Dax.Metadata.Table tB = new Dax.Metadata.Table(m) { TableName = new Dax.Metadata.DaxName("B") }; Dax.Metadata.Column ca1 = new Dax.Metadata.Column(tA) { ColumnName = new Dax.Metadata.DaxName("A_1") }; Dax.Metadata.Column ca2 = new Dax.Metadata.Column(tA) { ColumnName = new Dax.Metadata.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); }
public void AddUserHierarchy(Table daxTable, Tom.Hierarchy hierarchy) { Dax.Metadata.UserHierarchy daxUserHierarchy = new Dax.Metadata.UserHierarchy(daxTable) { HierarchyName = new Dax.Metadata.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.Metadata.Column levelColumn = daxTable.Columns.Find(t => t.ColumnName.Name == level.Column.Name); daxUserHierarchy.Levels.Add(levelColumn); } daxTable.UserHierarchies.Add(daxUserHierarchy); }
/// <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.Metadata.Column(daxTable); daxColumn.SetDmv1100ColumnId(columnDmv1100Id); daxTable.Columns.Add(daxColumn); } return(daxColumn); }
/// <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.Metadata.Column(daxTable) { ColumnName = new Dax.Metadata.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); }
private void AddRelationship(Tom.SingleColumnRelationship relationship) { Dax.Metadata.Table fromTable = DaxModel.Tables.SingleOrDefault(t => t.TableName.Name == relationship.FromTable.Name); Dax.Metadata.Column fromColumn = fromTable.Columns.SingleOrDefault(t => t.ColumnName.Name == relationship.FromColumn.Name); Dax.Metadata.Table toTable = DaxModel.Tables.SingleOrDefault(t => t.TableName.Name == relationship.ToTable.Name); Dax.Metadata.Column toColumn = toTable.Columns.SingleOrDefault(t => t.ColumnName.Name == relationship.ToColumn.Name); Dax.Metadata.Relationship daxRelationship = new Dax.Metadata.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); }
private void AddColumn(Table daxTable, Tom.Column column) { Dax.Metadata.Column daxColumn = CreateColumn(daxTable, column); daxTable.Columns.Add(daxColumn); }
internal Column(Dax.Metadata.Column column) { this._Column = column; }
internal static string GetFullColumnName(Dax.Metadata.Column column) { return(GetFullColumnName(column.Table.TableName.Name, column.ColumnName.Name)); }
internal VpaColumn(Dax.Metadata.Column column) { this.Column = column; }