Пожалуйста, посмотрите запрос ниже, я считаю, что это то, что вы ищете. Идея состоит в том, чтобы расширить счет для каждого пользователя, начиная со дня cra sh и до общего числа DaysSinceRelease (поскольку, если cra sh произошел в день # 1, его также следует учитывать во все дни, следующие за # 1) , Затем мы также расширяем range(1, NumCrashes, 1)
, поскольку, если у пользователя было 3 сбоя, они также должны учитываться в ячейках at-least-1
и at-least-2
.
let totalDaysSinceRelease = 3;
datatable(Date:datetime, UserId:string, DaysSinceRelease:long)
[
datetime(2020-01-01), "A", 0,
datetime(2020-01-01), "A", 0,
datetime(2020-01-01), "B", 0,
datetime(2020-01-02), "A", 1,
datetime(2020-01-03), "B", 2,
datetime(2020-01-04), "C", 3
]
| summarize NumCrashes = count() by UserId, DaysSinceRelease
| order by UserId asc, DaysSinceRelease asc
| extend NumCrashes = row_cumsum(NumCrashes, UserId != prev(UserId))
| extend DaysSinceRelease = range(DaysSinceRelease, totalDaysSinceRelease, 1)
| mv-expand DaysSinceRelease to typeof(long)
| summarize NumCrashes=max(NumCrashes) by UserId, DaysSinceRelease
| extend NumCrashes = range(1, NumCrashes, 1) | mv-expand NumCrashes to typeof(long)
| summarize dcount(UserId) by DaysSinceRelease, NumCrashes
| order by DaysSinceRelease asc, NumCrashes asc