I managed to get something working, though I don't know how 'best practice' it is.
Essentially, I'm passing the rows through three consecutive window transformations.
So, based on a test dataset with the data from the example:
Window1: Over meterId, Sort date, Range by Unbounded, Window columns as below (generates consecutiveFlag).
To break that down, if the date from the previous row plus one day matches the date of this row, return 0, else return 1. The trick here is to give us something to sum that wont change the result if the date is consecutive.
Window1 preview:
Window2: Over meterId, Sort date, Range by Unbounded, Window consecutiveGroup = sum(consecutiveFlag)
Window2 preview:
Because the flag only changes consecutiveGroup when the row is not consecutive, this gives us something else to group on.
Window3: Over meterId & consecutiveGroup, Sort date, Range by Unbounded, Window as below.
Simple stuff, but only possible because we generated another criteria to group.
Window3 preview:
And that's it, but just to match the sample output, I sort on date & meterId, then use select to drop the interim rows to get the final output.
I hope someone finds this helpful. I was struggling to find a solution without taking it out of data factory.