Data Pipeline Patterns
Group Regions
Grouping accumulates records under a shared key.
Program
Play the program to count orders by region, optionally filtering to open orders.
group_regions.dart
void main() {
var orders = [
{'region': 'east', 'status': 'open'},
{'region': 'west', 'status': 'open'},
{'region': 'west', 'status': 'closed'},
];
var statusFilter = ;
var counts = <String, int>{};
for (var order in orders) {
if (statusFilter != 'all' && order['status'] != statusFilter) continue;
var region = order['region']!;
counts[region] = (counts[region] ?? 0) + 1;
}
print('counts=${counts.entries.map((e) => '${e.key}=${e.value}').join(";")}');
}
void main() {
var orders = [
{'region': 'east', 'status': 'open'},
{'region': 'west', 'status': 'open'},
{'region': 'west', 'status': 'closed'},
];
var statusFilter = ;
var counts = <String, int>{};
for (var order in orders) {
if (statusFilter != 'all' && order['status'] != statusFilter) continue;
var region = order['region']!;
counts[region] = (counts[region] ?? 0) + 1;
}
print('counts=${counts.entries.map((e) => '${e.key}=${e.value}').join(";")}');
}
map literal
`<String, int>{}` creates a typed empty map.
null fallback
`counts[region] ?? 0` supplies zero for a new group.
entries.map
Mapping entries creates display strings for each group.