Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin 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.
Hi ,
I have an issue for one of my Power Query steps between Power BI Desktop and the Power BI Service . In Desktop I’ve added a custom column called ResolvedWorkingDays (the code for custom column can be found in the screenshot), and then changed its data type to Int64. Everything works perfectly locally and after I click Close & Apply, the new column is populated with integer values as expected in BI desktop.
However, after publishing the same report to the Service (using the identical data source and triggering a full refresh), ResolvedWorkingDays comes back blank. The rest of the columns in that table load correctly.
I’ve verified:
I explicitly set its type to Int64 in the query
The dataset in Service is refreshing without errors, and that's the same data source as BI desktop
No row-level security, filters, or measures are interfering
Has anyone seen a Power Query step work fine in Desktop but silently drop to null in Service? Are there known custom M functions that behave differently in the Service’s cloud refresh engine? Any pointers on how to diagnose or work around this would be hugely appreciated—thank you!
Solved! Go to Solution.
It is best practice to put the "working days" in the Calendar dimension table, rather than the fact table
Try use this calendar table.
You may need to change the daterange parameters for your own needs
Working days =
// type: 1, week begins on Sunday (1) and ends on Saturday (7). numbered 1 through 7.
// type: 2, week begins on Monday (1) and ends on Sunday (7).
// type: 3, week begins on Monday (0) and ends on Sunday (6).numbered 0 through 6.
//
// Therefore this considers Monday to Fridat as working days
IF(WEEKDAY('Calendar'[Date],2) <= 5, 1, 0)
Hi @Sue777 ,
Thanks for reaching out to the Microsoft fabric community forum.
Try this steps :
Instead of relying on implicit conversion, explicitly convert your dates and handle nulls up front:
= if [RESOLUTION_DATE] = null or [CREATED] = null then null
else
let
startDate = try Date.From([CREATED]) otherwise null,
endDate = try Date.From([RESOLUTION_DATE]) otherwise null,
dayCount = if startDate = null or endDate = null then null else
List.Count(
List.Select(
List.Dates(startDate, Duration.Days(endDate - startDate) + 1, #duration(1,0,0,0)),
each Date.DayOfWeek(_, Day.Monday) < 5
)
)
in
dayCount
Check Data Types in Power Query (Before Publish)
In Power BI Desktop:
Open Power Query Editor
Check the data types for [CREATED] and
[RESOLUTION_DATE]
Make sure they're both explicitly set to Date (not DateTime or Text)
Set Locale in Power Query:
To avoid regional misinterpretation:
Go to the Source Step (or the date conversion step)
Right-click the column > Change Type > Using Locale
Go to Power BI Service > Dataset > Settings
Go to Power BI Service > Dataset > Settings
Trigger a manual refresh
Check for refresh history logs to see if any errors/warnings are shown
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
Thank you for your reply! I've checked the data type, and locale setting in power query, as well as the refreshing and data source. The live data on BI service and test data on BI desktop are the same actually, from the same SQL Server data source. It seems that the custom column M code in power query didn't work at all. I managed to solve it with a DimDate table. You can also find it in another comment of this post.
@Sue777 Hi! Power BI Desktop uses your local machine’s locale and timezone settings, while Power BI Service uses the cloud region’s default settings (usually UTC).
Try with:
if [RESOLUTION_DATE] = null then null
else
List.Count(
List.Select(
List.Dates(
Date.From(DateTimeZone.RemoveZone([CREATED])),
Duration.Days(Date.From(DateTimeZone.RemoveZone([RESOLUTION_DATE])) - Date.From(DateTimeZone.RemoveZone([CREATED]))) + 1,
#duration(1,0,0,0)
),
each Date.DayOfWeek(_, Day.Monday) < 5
)
)
BBF
Thank you for your reply! I've tried with your solution but still return all blank. It really confuses me that only the workingdays column went wrong, I also have columns like workingHours and workingMonth, they're perfectly fine.
e.g. my workingMonth column is:
if [RESOLUTION_DATE] <> null
then Duration.Days([RESOLUTION_DATE] - [CREATED]) / 30
else null
and I sort of solve it using a DimDate table, you can find it in the comment I replied in another reply.
It is best practice to put the "working days" in the Calendar dimension table, rather than the fact table
Try use this calendar table.
You may need to change the daterange parameters for your own needs
Working days =
// type: 1, week begins on Sunday (1) and ends on Saturday (7). numbered 1 through 7.
// type: 2, week begins on Monday (1) and ends on Sunday (7).
// type: 3, week begins on Monday (0) and ends on Sunday (6).numbered 0 through 6.
//
// Therefore this considers Monday to Fridat as working days
IF(WEEKDAY('Calendar'[Date],2) <= 5, 1, 0)
Hey thank you very much for your reply!
I have a DimDate table, so I use it to filter in the calculated column, and it works.
The calculated column:
Thank you @Sue777
I am glad that my Calendar (DimDate) working days table trick gave you a workarround solution.
I always use the Calendar for date intellegence.
Get into the habiit of building and testing date intelligence functions once in your Calendar and using then always.
Rather than creating lots of difference versions of date logic in fact tables and dax.
You have not provdied enough infomation to discover the root cause of your problem,
but it could be that the Power BI server timezone is different to your Power BI desktop timezone.
This theory is simple to test ....
Write a report that display DateTime.LocalNow
Refresh the report on Power BI desktop and make a note of the date/time
Then publish the report.
Refresh the report in the Power BI Service and compare the date/time.
However, the problem may be with your source data.
Especially if you are using different version (test and live servers) in Power Bi Desktop and Power BI Service
Learn more about timezones here
https://learn.microsoft.com/en-us/powerquery-m/datetime-localnow
Please click the thumbs up if this info helps !
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
17 | |
9 | |
8 | |
7 | |
7 |