Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
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?
Solved! Go to 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,
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,
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])