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

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
Musab-Ali
New Member

Power Bi Dynamic Time Zone Transformation

How can we achieve the following requirements in Power BI?

We have user data along with their information, and all the Power BI visualizations are built using this data.

In the user table, there is a column named User_Joined_Date, which is in the format:
YYYY-MM-DD HH:MM:SS +00 UTC
This column is currently in the UTC time zone, and the entire dashboard is based on this timestamp.

Now, we want to implement a slicer or dropdown that allows the user to select multiple time zones like:

PST (+5)

EST (-4)

BST (+1)

GST (+4), etc.

Whenever a timezone is selected, the data should dynamically convert the User_Joined_Date from UTC to the selected timezone. All visuals should reflect the converted time accordingly.

We’ve also added a third-party date picker which is connected as follows:
Date Picker’s Date column → related to → User table’s User_Joined_Date column.

The key point is that we are also splitting the User_Joined_Date column in Power Query into two separate columns:
User_Joined_Date (date only) and User_Joined_Time (time only),
in order to establish the correct relationship with the date picker.

1 ACCEPTED SOLUTION

Thanks @Musab-Ali for the follow-up, I completely understand your scenario now. Since your dashboard depends on the User_Joined_Date  field and you need full interaction with a third-party date picker and slicers, the best way to support dynamic time zone switching (without breaking model relationships) is to handle the timezone transformation at the data level instead of relying on dynamic measures.

Here’s the solution that works perfectly with slicers, relationships, and full dashboard interactivity:

  1. In Power Query, create multiple versions of the Users table — one for each timezone you want to support (e.g., PST, UTC, IST, etc.).
  2. In each copy, add a new column that adjusts the User_Joined_DateTime_UTC based on that timezone's offset.
  3. Add a [TimeZone] column to identify the timezone of each record.
  4. Append all these tables into a single combined table  (Users_AllTZ).
  5. In your model, relate the User_Joined_LocalDate (from the adjusted datetime) to your existing Date table.
  6. Add a slicer using the [TimeZone] column. When a user selects a timezone, the whole dashboard (including visuals and the date picker) will reflect the adjusted local time.

This approach avoids the limitations of dynamic measures, ensures that your date picker continues to work properly, and lets users switch timezones across the entire dashboard without needing to duplicate visuals or reports.

If the response has addressed your query, please Accept it as a solution and give a 'Kudos' so other members can easily find it.Best Regards,
Tejaswi.
Community Support

 

View solution in original post

5 REPLIES 5
Musab-Ali
New Member

Thank you, Tejaswi, for the detailed and well-explained solution.
The use of TREATAS() and timezone offsets in the measure is a smart approach and works well in many scenarios.

That said, I’m still facing a few limitations when trying to implement this in our case:

Relationship Limitations with Date Picker:
We are using a third-party date picker that interacts with our User_Joined_Date through a model relationship. Since the LocalDate in your solution is created inside a measure, it cannot be part of a relationship. This means the date picker can't properly filter or interact with the calculated date, which is critical in our report setup.

Measure and Column Scope Issues:
Measures can't be used in relationships or slicers, which breaks the link between the Date table and the user data when working with local time.
Similarly, using calculated columns with fixed offsets won’t solve the issue either — because once calculated, those columns are static and can’t be reverted or dynamically changed when a user switches timezones.

Dashboard-Wide Timezone Switching Requirement:
Our entire dashboard is built using User_Joined_Date in UTC. What we're trying to achieve is:

When a user views the report in UTC and selects PST from a slicer, the full dashboard should update to reflect PST time.

Then, if the user switches back to UTC (or any other timezone) from the same slicer, the dashboard should convert back accordingly.
This dynamic switching is key  we don’t want to build or duplicate visuals or reports per timezone.

So far, I haven’t been able to get the measure-based approach to support this level of interactivity and model integration.

Do you have any suggestions on how we can achieve fully dynamic timezone switching (with slicer support) while keeping relationships and the date picker functionality intact?

Really appreciate any ideas or further direction on this.

Thanks @Musab-Ali for the follow-up, I completely understand your scenario now. Since your dashboard depends on the User_Joined_Date  field and you need full interaction with a third-party date picker and slicers, the best way to support dynamic time zone switching (without breaking model relationships) is to handle the timezone transformation at the data level instead of relying on dynamic measures.

Here’s the solution that works perfectly with slicers, relationships, and full dashboard interactivity:

  1. In Power Query, create multiple versions of the Users table — one for each timezone you want to support (e.g., PST, UTC, IST, etc.).
  2. In each copy, add a new column that adjusts the User_Joined_DateTime_UTC based on that timezone's offset.
  3. Add a [TimeZone] column to identify the timezone of each record.
  4. Append all these tables into a single combined table  (Users_AllTZ).
  5. In your model, relate the User_Joined_LocalDate (from the adjusted datetime) to your existing Date table.
  6. Add a slicer using the [TimeZone] column. When a user selects a timezone, the whole dashboard (including visuals and the date picker) will reflect the adjusted local time.

This approach avoids the limitations of dynamic measures, ensures that your date picker continues to work properly, and lets users switch timezones across the entire dashboard without needing to duplicate visuals or reports.

If the response has addressed your query, please Accept it as a solution and give a 'Kudos' so other members can easily find it.Best Regards,
Tejaswi.
Community Support

 

Hello Tejaswi,

Thanks a lot for your help!!!
I tested on a mini dataset, and it works as per the requirement
Just wanted to check on Live 
Once again, thank you so much for your help 

Best Regards,
Musab Ali

v-tejrama
Community Support
Community Support

Hi @Musab-Ali,

Thanks for reaching out to the Microsoft fabric community forum.

 

To display the user count by local join date based on the selected time zone in Power BI, here’s the approach that works perfectly:

 

First, create a Date table using the CALENDAR() function and mark it as a Date table. Then, create a TimeZones table with two columns: TimeZoneName (e.g., PST, EST, IST) and OffsetHours (the UTC offset for each time zone).

 

Next, add a slicer to the report using the TimeZones[TimeZoneName] field, so users can select the desired time zone dynamically.

To calculate the user count adjusted to the selected time zone, use this DAX measure:

 

User Count by LocalDate =
VAR Offset = SELECTEDVALUE(TimeZones[OffsetHours], 0)
RETURN
CALCULATE(
COUNTROWS(Users),
ADDCOLUMNS(
Users,
"LocalDate", DATEVALUE(Users[User_Joined_DateTime_UTC] + Offset / 24)
),
TREATAS(VALUES('Date'[Date]), [LocalDate])
)

 

Finally, use Date[Date] (or Day, Month, etc.) from your Date table in your visuals, along with this measure. The result will show the user count by local join date, dynamically adjusting based on the selected time zone from the slicer. Simple, effective, and works great with multiple time zones.

Please find the attached pbix file for your reference.

 

If the response has addressed your query, please Accept it as a solution and give a 'Kudos' so other members can easily find it.


Best Regards,
Tejaswi.
Community Support

 

 

 

johnt75
Super User
Super User

One option would be to create a column for each the date in each timezone you want to cater for.

Before you split the datetime into separate columns you could add a new column using the DateTimeZone.SwitchZone function and then keeping just the date part.

Create inactive relationships from the Date table to each timezone date column and then create a calculation group, with calculation items for each timezone. Each item would have the same format but use the appropriate relationship for that timezone, e.g.

PST =
CALCULATE (
    SELECTEDMEASURE (),
    USERELATIONSHIP ( 'Date'[Date], Users[PST Date] )
)

By putting the calculation items into the slicer the user will be able to select which one they want to see.

You would probably want to hide all the date columns in report view, and always use columns from the Date table in any visuals so that the correct date is displayed.

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.