@yoobi You could use aggregateWindow() to generate tables for each missing point. This should work if you set the every parameter to the same interval that your data should be coming in. You can then filter those results by rows for which a _value does not exist:
data
|> aggregateWindow(every: 1m, timeSrc: "_start", createEmpty: true)
|> filter(fn: (r) => not exists r._value)