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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
javirmerino
Helper III
Helper III

Combining calculated Date & Time Fields

Hi guys, i'm trying to use the below query to determine a value based on a number of fields;

if  Value.Compare([ReceivedTime], #time(17,0,0)) = 1
 then [NextWorkingDay]  +  [StartTime] 
else [ReceivedDate]  + [StartTime]

The syntax seems to be ok but i'm getting an expression.error as i'm unable to use the "+" operator to combine the date and time as i usually would in excel.

Whats the correct method of working to get around this? I tried using SELECTEDVALUE on each time and date element but this was causing further issues that i couldnt understand.

 

Any suggestions?

1 ACCEPTED SOLUTION

Hi @javirmerino ,

 

We can create a custom column using following query to meet your reqirement:

 

if  Value.Compare([ReceivedTime], #time(17,0,0)) = 1
 then DateTime.From([NextWorkingDay])+Duration.FromText(Time.ToText([StartTime],"hh:mm:ss"))
else DateTime.From([ReceivedDate] )+Duration.FromText(Time.ToText(Text.From([StartTime],"hh:mm:ss"))

 

Or 

 

if  Value.Compare([ReceivedTime], #time(17,0,0)) = 1
 then DateTime.From(Date.ToText([NextWorkingDay]) & Time.ToText([StartTime]," hh:mm:ss"))
else DateTime.From(Date.ToText([ReceivedDate]) & Time.ToText([StartTime]," hh:mm:ss"))

 


Best regards,

 

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

6 REPLIES 6
Jimmy801
Community Champion
Community Champion

hello @javirmerino 

 

I'm a little confused where exactly you want to have the solution. If you are still going for the Power Query option try to change your code as follows:

if  Value.Compare([ReceivedTime], #time(17,0,0)) = 1
 then DateTime.From([NextWorkingDay])+Duration.FromText(Text.From([StartTime] )) 
else DateTime.From([ReceivedDate] )+Duration.FromText(Text.From([StartTime] ))


If this post helps or solves your problem, please mark it as solution (to help other users find useful content and to acknowledge the work of users that helped you)
Kudoes are nice too

Have fun

Jimmy

Thanks @Jimmy801. Please excuse me if i confuse you at all - i've only been using PowerBI for around a month (Tableau convert, here) so i'm unsure of the best practices and when to use M or DAX. Any guidelines or rules of thumb would be appreciated here.

 

I will give the code a go shortly and will mark as the answer if this works out.

 

Thanks again!

Hi @javirmerino ,

 

We can create a custom column using following query to meet your reqirement:

 

if  Value.Compare([ReceivedTime], #time(17,0,0)) = 1
 then DateTime.From([NextWorkingDay])+Duration.FromText(Time.ToText([StartTime],"hh:mm:ss"))
else DateTime.From([ReceivedDate] )+Duration.FromText(Time.ToText(Text.From([StartTime],"hh:mm:ss"))

 

Or 

 

if  Value.Compare([ReceivedTime], #time(17,0,0)) = 1
 then DateTime.From(Date.ToText([NextWorkingDay]) & Time.ToText([StartTime]," hh:mm:ss"))
else DateTime.From(Date.ToText([ReceivedDate]) & Time.ToText([StartTime]," hh:mm:ss"))

 


Best regards,

 

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
javirmerino
Helper III
Helper III

i've resolved one issue by changing the +'s to &'s (which worked lovely!) but now its caused a secondary issue which i believe is something to do with my Next Working Day measure, as any values using this are returning an error;

Expression.Error: We cannot apply field access to the type Text.
Details:
    Value=Σ Measures
    Key=NextWorkingDay

 

Would this be anything to do with one being a measure written in DAX and one being a query written in #M? If so, do i just need to rewrite my [NextWorkingDay] measure in PowerQuery?

Change the column type to DateTime to fix this.

Hi @artemus, thanks for your response. I cringed when i saw it as i thought "it cant be that simple, surely?!" - and fortunately for me, it wasn't! 

 

I'm unable to view or format the [NextWorkingDay] column in QueryEditor as its a DAX measure so i'm assuming the only way to amend the formatting of the output is via the query itself?

 

Or could the query be converted into M so its added as a calculated column instead?

NextWorkingDay = 
minx( 
    FILTER(
        ALL(Dim_Date), Dim_Date[IsWeekday] = TRUE  && 
        Dim_Date[IsHolidayUK] = FALSE && 
        Dim_Date[Date] > SELECTEDVALUE('SysAid Extract'[ReceivedDate]) 
    ),Dim_Date[Date])

 

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors
Top Kudoed Authors