*WARNING: Long Explanation Ahead*
The top two requests from my users are:
- Let me save my slicer selections
- Let me make slicer selections once across multiple tabs
The first one I plan to accomplish with a Global Filter, but that leads into the second problem. My cost centers are grouped using a single mapping dataset; let's call it Blurred Project List. I use lookup functions in Accounts Payable, Cost Source, and Labor to include a group and subgroup for each row. Because the group names are listed in each dataset, I had to duplicate the slicers if I wanted to have multiple types of data on a single report.
To get around this limitation, I created a series of keys in my data and created a generic object in the Cost, Budget, and Forecast models called Blurred Project List. I then created an allocation line from the Cost, Accounts Payable, and Labor objects. Ignore the "Unfiltered" part. Also ignore the 100.11% allocation. My numbers are randomized in the screenshot so things are a bit wonky.

This has allowed me to create a report that has (for example) cost and labor data (from different objects) and use a single set of slicers.

Now, when trying to create the global filter, I run into a problem. The "Data" perspective is not available when creating a global filter. So in a test report, I create a Blurred Project List perspective and add my fields. If I do not lock them to the object Blurred Project List, they are not available to add to a Global Filter. I then lock them to the object, and can add them to the global filter. When the fields are locked to the object Blurred Project List, they no longer filter the cost and labor objects. I then edit the perspective and uncheck the "Lock to object Blurred Project List" while leaving the fields added to the global filter. Once that is done, I can no longer edit nor recreate the filter, but everything works. I can add the global filters by copying the component to the clipboard and pasting it to each individual report.
Finally, my questions:
- Is this a bug? I don't want to push this into production if it will break in subsequent upgrades.
- My two underlined points above are somewhat contradictory. Is that how it is supposed to work?
- My solution is somewhat convoluted and probably ill-advised. What is the RIGHT way to do this?