Not sure if this overkill...maybe missing something easier, but it's what came to mind. The first 2 lines are just trying to get an event that looks close enough to what you have...spl starts with the delta eval
Essentially, I'm creating a mv field from the cpu data, then creating a static mv field to represent the offset of those cpu data points compared to the _time field of the event. Once they're joined together with mvzip, I mvexpand that field, so now they're each their own event and should still include the original timestamp and host. Then I use the delta in that combined field to re-eval _time in the event and the cpu to re-eval the cpu...at which piont, we can timechart with a span of 2h.
| stats count
| eval _time = relative_time(now(),"@d+18h"), cpu="1.51,9.47,1.70,1.45,1.51,1.47,1.46,1.46,1.48,1.48,1.50,1.50",host="ServerA"
| eval delta="-24h,-22h,-20h,-18h,-16h,-14h,-12h,-10h,-8h,-6h,-4h,-2h,-0h"
| eval cpu_with_delta = mvzip(split(delta,","),split(cpu,","),":")
| mvexpand cpu_with_delta
| eval delta = mvindex(split(cpu_with_delta,":"),0), cpu = mvindex(split(cpu_with_delta,":"),1)
| eval _time = relative_time(_time,delta)
| timechart span=2h max(cpu) by host
... View more