public static PhysicalDataFlow.DerivedColumns Lower(this AstTransformation.AstDerivedColumnListNode astNode) { if (astNode.AsClassOnly) { return null; } Ssis2008Emitter.IR.DataFlow.DerivedColumns physicalNode = new Ssis2008Emitter.IR.DataFlow.DerivedColumns(); physicalNode.Name = astNode.Name; foreach (AstTransformation.AstDerivedColumnNode column in astNode.Columns) { Ssis2008Emitter.IR.DataFlow.DerivedColumn physicalColumn = new Ssis2008Emitter.IR.DataFlow.DerivedColumn(); physicalColumn.Name = column.Name; physicalColumn.Type = column.Type.ToString(); physicalColumn.Length = column.Length; physicalColumn.Precision = column.Precision; physicalColumn.Scale = column.Scale; physicalColumn.Expression = column.Expression; physicalColumn.ReplaceExisting = column.ReplaceExisting; physicalColumn.Parent = physicalNode; physicalNode.Columns.Add(physicalColumn); } return physicalNode; }
public static PhysicalDataFlow.DerivedColumns Lower(this AstTransformation.AstIsNullPatcherNode astNode) { if (astNode.AsClassOnly) { return null; } Ssis2008Emitter.IR.DataFlow.DerivedColumns physicalNode = new Ssis2008Emitter.IR.DataFlow.DerivedColumns(); physicalNode.Name = astNode.Name; foreach (AstTransformation.AstIsNullPatcherColumnNode column in astNode.Columns) { Ssis2008Emitter.IR.DataFlow.DerivedColumn physicalColumn = new Ssis2008Emitter.IR.DataFlow.DerivedColumn(); physicalColumn.Name = column.Name; // TODO: Use template here? physicalColumn.Expression = String.Format(System.Globalization.CultureInfo.InvariantCulture, "ISNULL({0}) ? {1} : {0}", column.Name, column.DefaultValue); physicalColumn.ReplaceExisting = true; physicalColumn.Parent = physicalNode; physicalNode.Columns.Add(physicalColumn); } return physicalNode; }
public static PhysicalDataFlow.DerivedColumns Lower(this AstTransformation.AstAutoNullPatcherNode astNode) { if (astNode.AsClassOnly) { return null; } Ssis2008Emitter.IR.DataFlow.DerivedColumns physicalNode = new Ssis2008Emitter.IR.DataFlow.DerivedColumns(); physicalNode.Name = String.Format(System.Globalization.CultureInfo.InvariantCulture, "AutoPatcher for Fact Table: {0}", astNode.FactTable.ReferenceableName); foreach (AstTable.AstTableColumnBaseNode column in astNode.FactTable.Columns) { if (!column.IsNullable) { Ssis2008Emitter.IR.DataFlow.DerivedColumn physicalColumn = new Ssis2008Emitter.IR.DataFlow.DerivedColumn(); physicalColumn.Name = column.Name; AstTable.AstTableColumnNode tableColumn = column as AstTable.AstTableColumnNode; // TODO: Use template here? // TODO: Can we assume that dim default is 0? physicalColumn.Expression = String.Format(System.Globalization.CultureInfo.InvariantCulture, "ISNULL({0}) ? {1} : {0}", column.Name, tableColumn == null ? 0.ToString(System.Globalization.CultureInfo.InvariantCulture) : tableColumn.Default); physicalColumn.ReplaceExisting = true; physicalColumn.Parent = physicalNode; physicalNode.Columns.Add(physicalColumn); } } return physicalNode; }