The international break has given me a chance to catch up on life and attend various events at IBM York Road (IBM Planning Analytics and Watson Orchestrate are due some very exciting updates) but we are back the the important business of Gameweek 4.
So far, we have our teams data and our player data so we are going to spend a little time generating some standard reporting subsets from our existing data and we will be using MDX to ensure these subsets automatically as we move through the gameweeks.
Points Per Game
Points per game gives us the average points per game played. To retrieve this I am using TOPCOUNT to restrict the subset to the top 10 players and I am referencing the Players cube for the day my data was updated:
{
TOPCOUNT(TM1FILTERBYLEVEL(TM1SUBSETALL([Player].[Player]) , 0) , 10 , [Players].([Players.Item].[Points_Per_Game],[Day].[2025-09-09]))
}

This appears to be a good metric to use, we have the top 10 players with the highest average per game. However, for fantasy premier league purposes I am interested in those players that play every game. If we extend the elements in our measures dimension we can see this clearer:

At this point I know I will need to parameterise the Current Day into a subset so I can repeat this analysis on any given dataset I export.
A Control cube is created and the Current Day element is added:

A subset on the Day dimension is created to reference this value:
{
STRTOMEMBER("[Day].[Day].[" + [Control].([Control.Item].[Current Day],[Control.Measure].[String]) + "]")
}
Now our Points Per Game subset looks like this and will follow our Current Day subset which in turn can now be updated when we run an export of the data:
{
TOPCOUNT(TM1FILTERBYLEVEL(TM1SUBSETALL([Player].[Player]) , 0) , 10 , [Players].([Players.Item].[Points_Per_Game],STRTOMEMBER("[Day].[Day].[" + [Control].([Control.Item].[Current Day],[Control.Measure].[String]) + "]")))
}
Next we will utilise these subsets to identify those players with the best opportunity to succeed in the coming game weeks