Class Aggregation<TInput, TOutput>
Aggregates data by the given aggregation methods. The aggregate is a partial-blocking transformation - only the aggregation values are stored in separate memory objects. When all rows have been processed by the aggregation, the aggregated values are written into the output.
Inheritance
Implements
Inherited Members
Namespace: ETLBox.DataFlow.Transformations
Assembly: ETLBox.dll
Syntax
public class Aggregation<TInput, TOutput> : DataFlowTransformation<TInput, TOutput>, ILoggableTask, IDataFlowLogging, IDataFlowTransformation<TInput, TOutput>, IDataFlowSource<TOutput>, IDataFlowSource, IDataFlowDestination<TInput>, IDataFlowDestination, IDataFlowComponent
Type Parameters
Name | Description |
---|---|
TInput | Type of ingoing data. |
TOutput | Type of outgoing data. |
Examples
public class MyDetailValue
{
public int DetailValue { get; set; }
}
public class MyAggRow
{
[AggregateColumn(nameof(MyDetailValue.DetailValue), AggregationMethod.Sum)]
public int AggValue { get; set; }
}
var source = new DbSource<MyDetailValue>("DetailValues");
var agg = new Aggregation<MyDetailValue, MyAggRow>();
var dest = new MemoryDestination<MyAggRow>();
source.LinkTo<MyAggRow>(agg).LinkTo(dest);
Constructors
Aggregation()
Declaration
public Aggregation()
Aggregation(Action<TInput, TOutput>)
Declaration
public Aggregation(Action<TInput, TOutput> aggregationAction)
Parameters
Type | Name | Description |
---|---|---|
System.Action<TInput, TOutput> | aggregationAction | Sets the AggregationAction |
Aggregation(Action<TInput, TOutput>, Func<TInput, Object>)
Declaration
public Aggregation(Action<TInput, TOutput> aggregationAction, Func<TInput, object> groupingFunc)
Parameters
Type | Name | Description |
---|---|---|
System.Action<TInput, TOutput> | aggregationAction | Sets the AggregationAction |
System.Func<TInput, System.Object> | groupingFunc | Sets the GroupingFunc |
Aggregation(Action<TInput, TOutput>, Func<TInput, Object>, Action<Object, TOutput>)
Declaration
public Aggregation(Action<TInput, TOutput> aggregationAction, Func<TInput, object> groupingFunc, Action<object, TOutput> storeKeyAction)
Parameters
Type | Name | Description |
---|---|---|
System.Action<TInput, TOutput> | aggregationAction | Sets the AggregationAction |
System.Func<TInput, System.Object> | groupingFunc | Sets the GroupingFunc |
System.Action<System.Object, TOutput> | storeKeyAction | Sets the StoreKeyAction |
Properties
AggregateColumns
This list will be used to set the AggregationAction. This also works with ExpandoObjects.
Declaration
public IEnumerable<AggregateColumn> AggregateColumns { get; set; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<AggregateColumn> |
AggregationAction
This action describes how the input data is aggregated. Not needed if you use the AggregateColumn in your object or pass a list to the AggregateColumns property.
Declaration
public Action<TInput, TOutput> AggregationAction { get; set; }
Property Value
Type | Description |
---|---|
System.Action<TInput, TOutput> |
GroupColumns
This list will be used to set the GroupingFunc and the StoreKeyAction. This also works with ExpandoObjects.
Declaration
public IEnumerable<GroupColumn> GroupColumns { get; set; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<GroupColumn> |
GroupingFunc
This Func defines how the object for grouping data is retrieved. Not needed if you use the GroupColumn in your object or pass a list to the GroupColumns property.
Declaration
public Func<TInput, object> GroupingFunc { get; set; }
Property Value
Type | Description |
---|---|
System.Func<TInput, System.Object> |
SourceBlock
SourceBlock from the underlying TPL.Dataflow which is used as output buffer for the component.
Declaration
public override ISourceBlock<TOutput> SourceBlock { get; }
Property Value
Type | Description |
---|---|
System.Threading.Tasks.Dataflow.ISourceBlock<TOutput> |
Overrides
StoreKeyAction
This action defines how the grouping object is written back into the aggregated object. Not needed if you use the GroupColumn in your object or pass a list to the GroupColumns property.
Declaration
public Action<object, TOutput> StoreKeyAction { get; set; }
Property Value
Type | Description |
---|---|
System.Action<System.Object, TOutput> |
TargetBlock
TargetBlock from the underlying TPL.Dataflow which is used as input buffer for the component.
Declaration
public override ITargetBlock<TInput> TargetBlock { get; }
Property Value
Type | Description |
---|---|
System.Threading.Tasks.Dataflow.ITargetBlock<TInput> |
Overrides
TaskName
A name to identify the task or component. Every component or task comes with a default name that can be overwritten.
Declaration
public override string TaskName { get; set; }
Property Value
Type | Description |
---|---|
System.String |
Overrides
Methods
CheckParameter()
Declaration
protected override void CheckParameter()
Overrides
CleanUpOnFaulted(Exception)
Declaration
protected override void CleanUpOnFaulted(Exception e)
Parameters
Type | Name | Description |
---|---|---|
System.Exception | e |
Overrides
CleanUpOnSuccess()
Declaration
protected override void CleanUpOnSuccess()
Overrides
InitComponent()
Declaration
protected override void InitComponent()