Monthly Challenge Solution: October 2026
And that’s wrap on yet another challenge with great solutions and dashboards from all of you! Thank you everyone who participated this month. We have shared our workflow with you in the KNIME Community Hub as well. Check out our solution here:
knime/Monthly Community Challenges – Challenge 05 - A Loop around the WorldWe will announce the winner soon and new challenge is on it’s way to be published next Monday on November 2nd. So mark your calendars, we can’t wait to see all your unique approaches.
· · ─ ·✶· ─ · · · · ─ ·✶· ─ · · · · ─ ·✶· ─ · ·
Solution Description
We start with a CSV Reader node that loads the Spotify charts dataset.
Data Cleaning: In the metanode a we start with Missing Value to clear the dataset followed by a Column Filter that keeps only the columns we actually need for the analysis (song name, streams, region, and date). A Column Renamer relabelles these columns. With String to Date&Time node we convert the Date column from string into a proper date format. Finally, a Date&Time Part Extractor pulls out the year from that date, since our analysis needs to group songs by year rather than by exact date.
Finding each region's champion, per year: With clean data in hand, a Group Loop Start node begins iterating once for every unique combination of region and year found in the data. This is what lets the workflow scale automatically to any number of regions or years. Within each loop iteration, a Row Aggregator sums up the total streams for each song, since the same song can appear on multiple chart dates within a year and we want its total for that year, not just a single day's count. A Sorter then ranks the songs in each iteration, i.e., for each region-year combination by total streams in descending order, and a Top k Row Filter keeps only the very top row: the single champion for that region in that year. A Loop End node collects the champion from every iteration into one combined table once the loop finishes.
Building the labels: With the Expression node we construct a combined text label for each champion (song name — region — year), which makes the subsequent charts and tables much easier to read at a glance. A Sorter ranks all champions by total streams, and a Row Splitter separates the "Global" entries from all other regions.
Regional champions overview: In the top branch, a Sorter orders total streams descending for regions, and a GroupBy node collapses this down to just one row per region specifically, each region's single best-performing year using "First" aggregation on a table that's already sorted by streams. A Top k Row Filter then keeps the top 20 regions, and the result feeds into a Bar Chart ranking regions against each other by their all-time peak.
Global overview: In a parallel branch, a Color Palette Designer assigns each a distinct color, and a Bar Chart displays them to see the comparison of what the whole world was streaming against what individual regions preferred.
Full record: A third branch takes the complete list of every region's champion in every year, runs it through a Sorter for readability, and displays it in a Table View row-by-row answer for anyone who wants to look up a specific region or year directly.
Using a loop in this challenge means the workflow automatically discovers every region-year combination present in the data and repeats the same "find the champion" logic for each one, so it keeps working correctly even if new regions or years are added to the dataset later, without anyone needing to touch the workflow.
If you'd like to dive deeper into our solution, you can find a full detailed breakdown in the workflow.