I've programmatically created a package with data conversion component. My source is excel file. I'm trying to add a unpivot transformation component after the data conversion component. I'm not getting the right properties of the unpivot tranformation component to set its desination column and pivot key value for desired input columns (output columns from the data conversion component, columns which i want to transpose). Below is my code. Urgent requirement please.....
IDTSOutput90 output = conversionDataFlowComponent.OutputCollection[0];
IDTSVirtualInput90 virtualInput = conversionDataFlowComponent.InputCollection[0].GetVirtualInput();
int inputId = conversionDataFlowComponent.InputCollection[0].ID;
//Get SchemaTable
DataTable dtDBSchema = GetDBSchemaColumns();
foreach (IDTSVirtualInputColumn90 vcolumn in virtualInput.VirtualInputColumnCollection) {
string DataType = "Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.";
string finaldatatype = "";
DataTable dtTempDBfields = dtDBfields.Clone();
DataTable dtTempDBSchema = dtDBSchema.Clone();
string formattedColName = getformmatedSourceColumn(dtMappedExcelToDB, vcolumn.Name);
string whereclauseDBF = "DBFields = '" + formattedColName + "'";
string wherecluaseSchemaField = "ColumnName = '" + formattedColName + "'";
string bstrName = "T" + formattedColName; //vColumn.Name.ToString() + "AsString";
foreach (DataRow DRC in dtDBfields.Select(whereclauseDBF)) { dtTempDBfields.ImportRow(DRC); }
//Get Length of Each DB Schema Column
foreach (DataRow DRC in dtDBSchema.Select(wherecluaseSchemaField)) { dtTempDBSchema.ImportRow(DRC); }
int sourceColumnLineageId = virtualInput.VirtualInputColumnCollection[vcolumn.Name.ToString()].LineageID; Microsoft.SqlServer.Dts.Runtime.Wrapper.
DataType dtype = new Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType(); dtype = getSSISDataTypes(dtTempDBfields.Rows[0][1].ToString(),
int.Parse(dtTempDBSchema.Rows[0]["ColumnSize"].ToString()), int.Parse(dtTempDBSchema.Rows[0]["NumericPrecision"].ToString()), int.Parse(dtTempDBSchema.Rows[0]["NumericScale"].ToString()));
IDTSInputColumn90 inputColumn = conversionInstance.SetUsageType(inputId, virtualInput, vcolumn.LineageID, DTSUsageType.UT_READONLY);
IDTSOutputColumn90 outputColumn = conversionInstance.InsertOutputColumnAt(output.ID, 0, bstrName, string.Empty); conversionInstance.SetOutputColumnDataTypeProperties(output.ID, outputColumn.ID, dtype,
int.Parse(dtSetDataTypeProperties.Rows[0]["length"].ToString()), int.Parse(dtSetDataTypeProperties.Rows[0]["precision"].ToString()), int.Parse(dtSetDataTypeProperties.Rows[0]["scale"].ToString()), int.Parse(dtSetDataTypeProperties.Rows[0]["codepage"].ToString())); outputColumn.CustomPropertyCollection[0].Value = inputColumn.LineageID; dtSetDataTypeProperties.Clear(); } conversionInstance.ReleaseConnections();
///added Unpivot
///
IDTSInput90 unpinput;
IDTSVirtualInput90 vunpivInput;
//get input from conversion output collection
unpinput = UnpivotComponent.InputCollection[0];
vunpivInput = unpinput.GetVirtualInput();
foreach (IDTSVirtualInputColumn90 vColumn in
vunpivInput.VirtualInputColumnCollection)
{
// I want to transpose each virtual column (column name containing TSales) from Data conversion component
if(vColumn.Name.ToString ().Contains ("TSales")) {
//Here how do i set the desination column and pivot key value for desired input virstual columns
}
}