I'm hoping this isn't actually so difficult, but I've had a tough time trying to figure out the proper setup. I'd like to use a single date slicer to filter multiple tables with dates in them. The tables are like this:
There is a relationship between the tables like so (using JobID field and the Job_info table):
There are no dates in Job_info to use with a slicer. Using two slicers -- one for the date in RoughInspections and one for the date in FinalInspections -- works in a sense, but because of the implicit relationship between the two, when I select a date range in RoughInspections it filters visuals using data from FinalInspections. I know this is as designed but it is undesirable in this case because I only want the FinalInspections visuals sliced by the Final Inspection Date slicer. It seems the logic is such that, as in the screenshot below, when I slice by Rough Inspection Date the Final Inspections count card visual counts only observations that have a related record in the date range in RoughInspections.
In short, I have visuals and slicers on the page using data from RoughInspections, FinalInspections and Job_info, below. I'd like the Job_info slicers (e.g. Job Status) to slice all visuals, and Rough Inspection date slicer to slice RoughInspections visuals and Final Inspection date slicer to slice FinalInspections. (Ideally, this could be done with one date slicer, but I'd be happy with the two behaving independently.)
Is there a way to do this other than breaking relationships or splitting the visuals across different pages? Thanks for any help!
Solved! Go to Solution.
As @edhans suggested, you should have a calendar table (i.e. a dimension table for dates) with relationships with your fact tables, and set up your filters against dimension tables rather than fact tables.
Years ago people used to import big pre-created calendar tables (e.g. from a relational database), but if you google around you'll now find plenty of solutions using either M (my preference) or DAX. Here's something to get you started, there's plenty more related content on the web:
Thanks @edhans, do you know of a good resource describing how to do that?
I tried setting up a slicer with a Date Table, and added calculated columns to RoughInspections and FinalInspections looking to see if each record was "in range" per the sliced Date Table, but no luck. I didn't think to set up relations between the Date Table and the other tables, though.
Thank you @otravers, I'll give that a look!
Make sure in the new Power BI Desktop (Since May 2018?) to mark your date table as a date table. When that article was originally written Power BI would figure it out and do it for you. But it is good practice to:
If it gives you a warning about "built in tables" are removed, that is find. I prefer to control the date table vs letting PBID do whatever it thinks should be done in the background.
You would use a Date Table as the main source that all timephased data would be linked too.
The typical functions used to create this table is the following DAX
Your relationships will look like this
This gives you a single source for date slicing.
Hope this helps.
I created a Date Table and marked it as such on the Modeling tab:
I tried to set up relationships between Calendar and RoughInspections and FinalInspections -- the first one went fine but I got an error on the second:
You can't create a direct active relationship between RoughInspections and Calendar because that would introduce ambiguity between tables Calendar and Job_info...
I'm guessing that is causing this problem, that all records are included when the slicer is 'wide-open,' but when I restrict the range even by one day then the visuals go blank:
Any thoughts on what I've done wrong?
Can you upload a screen shot of the relationship diagram?
Also the calendar table becomes the focal point for all timephased data (all sources that have transactions by day).
Do not link other none timephased data to the calendar table. I believe this is what might be causing your ambiguity but I would need to see the relationship diagram to be certain.
Sorry, I meant to include this in my reply yesterday. Here is a screenshot of that part of my relationship diagram. You can see the succesful relationship between Calendar and FinalInspections on the left but the relationship between Calendar and RoughInspections failed.