customEvents
| where timestamp between (_startTime .. _endTime)
| where name == "BatchThreadInfo"
| extend customDimensionsParsed = parse_json(customDimensions)
| extend infoMessageParsed = parse_json(tostring(customDimensionsParsed.InfoMessage))
| extend CurrentBatchTasks = infoMessageParsed.CurrentBatchTasks
| extend TaskQueueCount = infoMessageParsed.TaskQueueCount
| extend MaxThreadCount = infoMessageParsed.MaxThreadCount
| extend ReservedNumberOfThreads = infoMessageParsed.ReservedNumberOfThreads
| project timestamp, Batch = tostring(split(cloud_RoleInstance, "-")[0]), AvailableThreads = todecimal(MaxThreadCount) - todecimal(CurrentBatchTasks) - todecimal(ReservedNumberOfThreads)