Skip to main content
Announcements
Qlik Connect 2025: 3 days of full immersion in data, analytics, and AI. May 13-15 | Orlando, FL: Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

if condition

Hi

I have date fields day and usage.

I need to have a filter say "time" where the filter value has to be "working" and "nonworking" , values , when i click on working , the usage value has to be calculated for the hour between 9am - 5pm when i click on nonworking , the usage has to be calculated for 5pm-9am

How do i achive this?

Please help.

1 Solution

Accepted Solutions
johnw
Champion III
Champion III

You'll need a time of day field to calculate your new time field from. Assuming you have one, I suspect I'm missing an obvious and better way, but here's one possibility:

[Times]:
LOAD
"time of day"
,if("time of day">=maketime(9) and "time of day"<=maketime(17),'working','nonworking') as "time"
;
LOAD time(fieldvalue('time of day',iterno())) as "time of day"
AUTOGENERATE 1
WHILE len(fieldvalue('time of day',iterno()))
;

Oh, right. One simple way is to make a list box with an expression instead of a field, and put in the "time" expression from above:

if("time of day">=maketime(9) and "time of day"<=maketime(17),'working','nonworking')

You'll probably get significantly better performance by putting it in the script, though.

I still think I'm missing some easy and better way, though.

View solution in original post

3 Replies
johnw
Champion III
Champion III

You'll need a time of day field to calculate your new time field from. Assuming you have one, I suspect I'm missing an obvious and better way, but here's one possibility:

[Times]:
LOAD
"time of day"
,if("time of day">=maketime(9) and "time of day"<=maketime(17),'working','nonworking') as "time"
;
LOAD time(fieldvalue('time of day',iterno())) as "time of day"
AUTOGENERATE 1
WHILE len(fieldvalue('time of day',iterno()))
;

Oh, right. One simple way is to make a list box with an expression instead of a field, and put in the "time" expression from above:

if("time of day">=maketime(9) and "time of day"<=maketime(17),'working','nonworking')

You'll probably get significantly better performance by putting it in the script, though.

I still think I'm missing some easy and better way, though.

Anonymous
Not applicable
Author

Thank you for the response , but it does not work for me when i give the expression in the list box just nonworking is displaying ..

I Have created a list box with " working" and "nonworking" values in it and named it timeframe,

I have a field in my table called HOUR which has 24 hour timeframe , that mean i have values 1-24 in it , so when a user selects "working" from the timeframe filter usage( to display usage i have a graph with certain dimensions and expressions) for the hours 9 am to 5pm has to be displayed , that mean i have to see 9-17 numbers in the hour filter as higlighted.

Not applicable
Author

Hi Ramya,

The suggestion posted by John should work . if not use the hour function ie

if(Hour(HOUR)>=9 and Hour(HOUR)<=17,'Working','Non Working').

if not just write in the script Hour(HOUR) AS Hours and use the Hours column for calculation.

Regards,

Chakravarthy.