Quantcast
Channel: SQL Server Integration Services forum
Viewing all articles
Browse latest Browse all 24688

SSIS programmatically add Aggregate Transform - Count Distinct

$
0
0

I am working on creating Aggregate transform with aggregation type as count distinct programmatically and i am able to create other aggregations like min,max,count.. but when it comes to count distinct i am getting below error

  • The component has detected potential metadata corruption during validation.
    Error at Data Flow Task - Load Count Dist [Aggregate - All [2]]: The "Aggregate - All.Outputs[Aggregate Output 1].Columns[col1]" is missing the required property "CountDistinctScale". The object is required to have the specified custom property.

I am unable to find "CountDistinctScale" custom property as this custom property doesn't exit for other aggregation and magically appears when count distinct is selected,is there a method which i need to call to create new custom property?

I understand there are not a lot of people who know how to programmatically create package, please help me find someone with knowledge or suggest me how i can get some help.

				IDTSComponentMetaData100 Aggregate = pipeline.ComponentMetaDataCollection.New();
                Aggregate.ComponentClassID = app.PipelineComponentInfos["Aggregate"].CreationName;
                // Get the design time instance of the derived column
                var DesignAggregate = Aggregate.Instantiate();
                DesignAggregate.ProvideComponentProperties();        //design time

                Aggregate.Name = "AggregateComponent";               

                IDTSPath100 AggregatePath = pipeline.PathCollection.New();
                AggregatePath.AttachPathAndPropagateNotifications(pipeline.ComponentMetaDataCollection[Prev_Transform.Transformation_Name].OutputCollection[Prev_Transform.Output_Number], Aggregate.InputCollection[0]);


                //update the metadata for the derived columns
                DesignAggregate.AcquireConnections(null);
                DesignAggregate.ReinitializeMetaData();
                DesignAggregate.ReleaseConnections();

               
                // Mark the columns we are joining on
                IDTSInput100 AggregateInput = Aggregate.InputCollection[0];
                IDTSInputColumnCollection100 AggregateInputColumns = AggregateInput.InputColumnCollection;
                IDTSVirtualInput100 AggregateVirtualInput = AggregateInput.GetVirtualInput();
                IDTSVirtualInputColumnCollection100 AggregateVirtualInputColumns = AggregateVirtualInput.VirtualInputColumnCollection;

                IDTSOutput100 AggregateoutputCollection = Aggregate.OutputCollection[0];

                // Note: input columns should be marked as READONLY
                foreach (IDTSVirtualInputColumn100 vColumn in AggregateVirtualInputColumns)
                {
					int sourceColumnLineageId = AggregateVirtualInput.VirtualInputColumnCollection[vColumn.Name].LineageID;
					DesignAggregate.SetUsageType(AggregateInput.ID, AggregateVirtualInput, sourceColumnLineageId, DTSUsageType.UT_READONLY);

					// create a new output column
					IDTSOutputColumn100 newOutputColumn = DesignAggregate.InsertOutputColumnAt(AggregateoutputCollection.ID, 0,  vColumn.Name, string.Empty);
					
					// set the data type porperties to the same values as these of the input column   
					newOutputColumn.SetDataTypeProperties(AggregateVirtualInput.VirtualInputColumnCollection[vColumn.Name].DataType, AggregateVirtualInput.VirtualInputColumnCollection[vColumn.Name].Length, 0, 0, AggregateVirtualInput.VirtualInputColumnCollection[vColumn.Name].CodePage);
					
					newOutputColumn.MappedColumnID = 0;
					for (int i = 0; i < newOutputColumn.CustomPropertyCollection.Count; i++)
					{
						IDTSCustomProperty100 property = newOutputColumn.CustomPropertyCollection[i];
						switch (property.Name)
						{
							case "AggregationColumnId":
								property.Value = sourceColumnLineageId;
								break;
							case "AggregationType":
								property.Value = 3;
								break;
							case "IsBig":
								property.Value = 1;
								break;
							case "AggregationComparisonFlags":
								property.Value = 0;
								break;
						}
					}
                }


Sam


Viewing all articles
Browse latest Browse all 24688

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>