Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
amaronda
Regular Visitor

Switch Between Different Holiday Calendars

Hello,

 

I am working on a report where I need to be able to change all visualizations based on the location. I have 2 locations- United States and Puerto Rico. I created 2 date tables because each location celebrates different holidays. The "Working Day" column uses a 1 to designate a work day and a 0 to desginate a non-working day (due to holidays or weekends). 

 

Here is the link to the data I am using.

 

I want to make a table showing the following information for the week of November 25-December 1. The Sales Per Work Day column takes the Working Day column into account, where United States has 3 work days during this time period while Puerto Rico has 4 work days.

amaronda_0-1733181944621.png

 

How can I make a Date Table to account for different Work Days in 2 different locations? I would also like to be able to use the locations in a slicer, so if I were to create a graph with the data from the table above I could simply use a slicer to switch between Locations (without setting up a bookmark). Would I need to set up a Location lookup table?

 

As of now I only have 2 locations, but there will be 10+ in the future so ideally the solution would have minimal hard-coding to account for locations. Each future location will have their own Holiday calendar, so Location names would be derived from there.

 

Thank you!

 

 

1 ACCEPTED SOLUTION
Bmejia
Super User
Super User

1st, create a date(calendar table with just date column) I used the minimum date(year) and max date(year) on the sales table.

Date =
    CALENDAR( DATE( YEAR( MIN( 'Sales Data'[Date] ) ), 1, 1 ), DATE( YEAR( MAX( 'Sales Data'[Date] ) ), 12, 31 ) )


2nd join all the tables on the Date column

Bmejia_0-1733265828181.png

3rd Create two measures as follow to sum the total sales and per work day sales

Total Sales =
VAR PRSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="Puerto Rico")
VAR USSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="United States")
VAR location = SELECTEDVALUE('Sales Data'[Location])
RETURN

SWITCH(TRUE(),
location="Puerto Rico",PRSales,
location="United States",USSales,
BLANK())
 
Sales Per Work Day =
VAR PRSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="Puerto Rico",'Puerto Rico Holidays'[Working Day]=1)
VAR USSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="United States",'US Holidays'[Working Day]=1)
VAR location = SELECTEDVALUE('Sales Data'[Location])
RETURN

SWITCH(TRUE(),
location="Puerto Rico",PRSales,
location="United States",USSales,
BLANK())
 
4th Create your table drop the location from the sales table and your measures
Output: (note per the sales per work day got different values, I am not sure if you were looking at differet values, but base on what you indicated the values below seem correct)
Bmejia_1-1733265955436.png

 

 

View solution in original post

2 REPLIES 2
Bmejia
Super User
Super User

1st, create a date(calendar table with just date column) I used the minimum date(year) and max date(year) on the sales table.

Date =
    CALENDAR( DATE( YEAR( MIN( 'Sales Data'[Date] ) ), 1, 1 ), DATE( YEAR( MAX( 'Sales Data'[Date] ) ), 12, 31 ) )


2nd join all the tables on the Date column

Bmejia_0-1733265828181.png

3rd Create two measures as follow to sum the total sales and per work day sales

Total Sales =
VAR PRSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="Puerto Rico")
VAR USSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="United States")
VAR location = SELECTEDVALUE('Sales Data'[Location])
RETURN

SWITCH(TRUE(),
location="Puerto Rico",PRSales,
location="United States",USSales,
BLANK())
 
Sales Per Work Day =
VAR PRSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="Puerto Rico",'Puerto Rico Holidays'[Working Day]=1)
VAR USSales = CALCULATE(SUM('Sales Data'[Sales]),'Sales Data'[Location]="United States",'US Holidays'[Working Day]=1)
VAR location = SELECTEDVALUE('Sales Data'[Location])
RETURN

SWITCH(TRUE(),
location="Puerto Rico",PRSales,
location="United States",USSales,
BLANK())
 
4th Create your table drop the location from the sales table and your measures
Output: (note per the sales per work day got different values, I am not sure if you were looking at differet values, but base on what you indicated the values below seem correct)
Bmejia_1-1733265955436.png

 

 

This worked, thank you!

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.