The Aggregate transformation in Azure Data Factory (ADF) Data Flows is a powerful tool for performing calculations on groups of data. It’s analogous to the GROUP BY
clause in SQL, allowing you to summarize data based on one or more grouping columns.
Purpose
The Aggregate transformation allows you to:
- Group data: Group rows based on the values in one or more specified columns.
- Perform aggregations: Calculate aggregate values (like sum, average, count, min, max, etc.) for each group.
Key Features and Settings:
- Group By: This section defines the columns by which the data will be grouped. You can select one or more columns. Rows with the same values in these columns will be grouped together.
- Aggregates: This section defines the aggregations to be performed on each group. You specify:
- New column name: The name of the resulting aggregated column.
- Expression: The aggregation function and the column to which it’s applied.
Available Aggregate Functions
ADF Data Flows support a wide range of aggregate functions, including:
avg(column)
: Calculates the average of a column.count(column)
orcount(*)
: Counts the number of rows in a group.count(*)
counts all rows, even if some columns are null.count(column)
counts only non-null values in the specified column.max(column)
: Finds the maximum value in a column.min(column)
: Finds the minimum value in a column.sum(column)
: Calculates the sum of a column.collect(column)
: Collects all values within a group into an array.first(column)
: Returns the first value encountered in the group.last(column)
: Returns the last value encountered in the group.stddev(column)
: Calculates the standard deviation of a column.variance(column)
: Calculates the variance of a column.
Preparing test data
With assumed ADF/Synapse expertise, we will focus on aggregate transformation core concepts.
sample dataset
CustID Product Quantity Amount
C1, A, 2, 20
C1, B, 3, 30
C2, C, 1, 10
C1, A, 2, 20
C3, A, 3, 30
C2, B, 1, 10
C3, C, 2, 20
C1, C, 3, 30
C1, A, 2, 20
C2, A, 1, 30
C3, C, 3, 10
Create Data Flow
Configure Source

Add Aggregate Transformation
he functionality of aggregate transformations is equivalent to that of the GROUP BY
clause in T-SQL.
in SQL script, we write this query:
select product
, count(quantity) as sold_times
, sum(quantity) as sold_items
, sum(amount) as sold_amount
, avg(amount) as Avg_price
from sales group by product;
get this result
product sold_times sold_items sold_amount Avg_price
A 10 6 120 24.0
B 4 12 40 20.0
C 9 3 70 17.5
Using Aggregate transformation in this way.

we can use “expression builder” to write the expression


It performs the same grouping and aggregation operations as TSQL’s GROUP BY
.
Important Considerations
- Null Handling: Pay attention to how aggregate functions handle null values. For example,
sum()
ignores nulls, whilecount(column)
only counts non-null values. - Data Types: Ensure that the data types of the columns you’re aggregating are compatible with the chosen aggregate functions.
- Performance: For large datasets, consider partitioning your data before the Aggregate transformation to improve performance.
- Distinct Count: For calculating distinct counts, use the
countDistinct(column)
function.
Conclusion
By using the Aggregate transformation effectively, you can efficiently summarize and analyze your data within ADF Data Flows. Remember to carefully consider the appropriate aggregate functions and grouping columns to achieve your desired results.
Please do not hesitate to contact me if you have any questions at William . chen @ mainri.ca
(remove all space from the email account )