Hi Daniel, I know you want to avoid a join, but how about a blended solution?
Given this as your main data source (and I'm guessing there are many more columns, with measures and maybe more dimensions):
If you take only non-duplicate records of the City and Sport columns as a secondary Lookup source (the equivalent of "select distinct City, Sport from table"):
You can use Sport from the Lookup source as a filter, and let an action filter apply this at the City (rather than the Sport) level.
1. Add the main Table data source and the Lookup data source separately to Tableau - don't join them.
2. Let the data source relationship join on City and Sport.
3. Create your main table to be filtered - these are all fields from the main data source:
4. Create a list of Sports from the Lookup Table, and put City on Level of Detail. This will be your filter:
Put these two objects on a Dashboard, then set up an action filter.
In the Action Filter, manually set the Target Filters Selected Field to be City only (not Sport).
Then you can click on one or multiple values in the Sport Lookup Table, and it filters the main Table:
Hope this helps,