Tricky, I've had to do this myself, and would love to see a better solution.
The concurrency command only tells you how many events were occuring at the time of an event, so you have to generate your own 'events' (using gentimes) if you want a continuous output. Since concurrency has no 'by' clause, we have to create the booking table for each room using 'map' then combine the outputs using 'chart'
......
| dedup room
| addinfo
| eval info_min_time=strftime(info_min_time,"%m/%d/%y")
| eval info_max_time=strftime(info_max_time+86400,"%m/%d/%y")
| map search="search room=\"$room$\"
| append [ | gentimes start=$info_min_time$ end=$info_max_time$ increment=15m
| eval _time=starttime
| eval duration=0
| fields _time duration
]
| eval duration=duration*60
| eval room=\"$room$\"
| concurrency duration=duration start=_time
| eval used=if(concurrency>1,\"Yes\",\"No\")
| stats max(room) as room max(used) as used by _time"
| eval Time=strftime(_time,"%H:%M")
| chart limit=0 first(used) as used over Time by room
... View more